【问题标题】:How to solve for Hyperbola in python如何在python中求解双曲线
【发布时间】:2021-06-18 06:47:38
【问题描述】:

我正在尝试通过以下方式求解双曲方程以找到 x 和 y。我想知道在 fsolve 中两次使用相同的方程来找到第一个 x 和 y 是否有意义。我的代码如下:

from scipy.optimize import * 
from numpy import *
import math

a = 1/(a_6**2)
b = 1/(b_6**2)

def function_hyper(loc):
     x = loc[0]
     y = loc[1]
            
     F = empty((2))
     F[0] = a*pow(x, 2) - b*pow(y, 2) - 1
     F[1] = a*pow(x, 2) - b*pow(y, 2) - 1
     return F1
loc_Guess = np.array([0.0141, 0.107])
location = fsolve(function_hyper, loc_Guess)

这里,a_6b_6 是从前面的步骤计算出来的变量。 ab 是求解 x^2/a^2 - y^2/b^2 = 1 双曲方程的系数。这是我在F[0]F[1] 中写的等式。 empty是在使用前定义F。因此,在获得F 的值之后,将替换空的。 pow 是定义 2 的幂来平方 x 和 y。

【问题讨论】:

  • 请提供minimal reproducible example。目前尚不清楚a1_6b1_6 是什么。如果您不提供所有导入,emptypow 方法也是如此。

标签: python-3.x scipy-optimize


【解决方案1】:

根据文档,fsolve 只是MINPACK 的hybrd 例程的包装器:

HYBRD 的目的是通过对 Powell 混合方法的修改,在 N 个变量中找到 N 个非线性函数系统的零点。用户必须提供计算函数的子程序。然后通过前向差分近似计算雅可比行列式。

因此,您需要 N 个方程才能在 N 个变量中找到函数的根。因此,如果想找到函数f: R^N -> R 的根,可以求解N 个方程组(f(x), ..., f(x)) = (0, ..., 0)(就像您所做的那样)或简单地求解(f(x), 0, ..., 0) = (0, ..., 0)。后者在代码中如下所示:

import numpy as np

a = 1/(a_6**2)
b = 1/(b_6**2)

def function_hyper(loc):
     x, y = loc[0], loc[1]      
     F = np.zeros(2)
     F[0] = a * x**2 - b * y**2 - 1
     return F

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2015-07-03
    • 2021-09-09
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多