Optimization 冲击波跳跃条件

Optimization 冲击波跳跃条件,optimization,scipy,physics,Optimization,Scipy,Physics,`我必须数值求解三个非线性方程组,也就是冲击波中的跳跃条件。我被要求使用scipy.optimize这样做,我们从中获取三个已知参数,并使用它们找到其余三个参数。 然而,我没有得到正确的结果,它根据初始猜测值变化很大 除了一个特定于Python的小细节之外,您的方程式似乎是正确的。解决方案非常简单:将所有输入转换为浮点 问题是f3表达式中的x1/y1使用整数除法(截断结果)而不是浮点除法求值 这意味着您可能使用整数值进行测试。提供原始代码浮点格式输入(例如5.0、14.0、3.0)也能按预期工作

`我必须数值求解三个非线性方程组,也就是冲击波中的跳跃条件。我被要求使用scipy.optimize这样做,我们从中获取三个已知参数,并使用它们找到其余三个参数。 然而,我没有得到正确的结果,它根据初始猜测值变化很大


除了一个特定于Python的小细节之外,您的方程式似乎是正确的。解决方案非常简单:将所有输入转换为浮点

问题是
f3
表达式中的
x1/y1
使用整数除法(截断结果)而不是浮点除法求值


这意味着您可能使用整数值进行测试。提供原始代码浮点格式输入(例如
5.0、14.0、3.0
)也能按预期工作。

为什么使用
x
y
而不是正确的变量名?什么是输入
y
?什么是f1、f2、f3?对不起,我对这个网站不熟悉,不过我对这个问题做了一些编辑,使它更清楚。
from scipy.optimize import fsolve

x1=input("P1")
y1=input("rho1")
v1=input("velocity1")


def eqn(x):                              #three jump condition equations

    f1=(x[1]*x[2])-(y1*v1)
    f2=x[0]+(0.5*(y1**2)*(v1**2)/x[1])-x1-(0.5*y1*v1*v1)
    f3=(0.5*(y1**2)*(v1**2)/(x[1]**2))+(2.5*(x[0]/x[1]))-(0.5*v1*v1)-(2.5*(x1/y1))

    return(f1,f2,f3)

y=[10,11,12]         #initial guess
print fsolve(eqn,y)
x1=float(input("P1"))
y1=float(input("rho1"))
v1=float(input("velocity1"))