使用 f solve 求解 python 中的隐式方程
Solving implicit equation in python using f solve
我想写一个程序来求Q,y,b,x,S0的值然后从下图中求出n的值
我用 f solve 写了这段代码:
from scipy.optimize import fsolve
def f(n,Q=float(input("Q=")),y=float(input("y=")),b=float(input("b=")),x=float(input("x=")),S_0=float(input("S0="))):
return (1/n)*((y*(b+x*y))**(5/3))/((b+2*y*(1+x**2)**(1/2))**(2/3))*S_0-Q
a=fsolve(f,1)
print(a)
print(f(a))
但它给出了一个错误的结果作为我在这里输入的输出:
Q=21
y=7.645
b=2
x=1
S0=0.002
/usr/lib/python3/dist-packages/scipy/optimize/minpack.py:236: RuntimeWarning: The iteration is not making good progress, as measured by the
improvement from the last ten iterations.
warnings.warn(msg, RuntimeWarning)
[ 1.]
[-20.68503025]
我在 Online Python 中写了这篇文章。我不知道这个错误是什么意思。输出也是错误的。对于这个特定的输入,答案应该是 n=0.015。我该如何修复此代码?
我重新排列了你的等式,这以某种方式得到了你预期的结果。我真的不太确定是什么问题,抱歉!
return (S_0/Q)*((y*(b+x*y))**(5/3)/(b+2*y*(1+x**2)**(1/2))**(2/3))-n
我想写一个程序来求Q,y,b,x,S0的值然后从下图中求出n的值
我用 f solve 写了这段代码:
from scipy.optimize import fsolve
def f(n,Q=float(input("Q=")),y=float(input("y=")),b=float(input("b=")),x=float(input("x=")),S_0=float(input("S0="))):
return (1/n)*((y*(b+x*y))**(5/3))/((b+2*y*(1+x**2)**(1/2))**(2/3))*S_0-Q
a=fsolve(f,1)
print(a)
print(f(a))
但它给出了一个错误的结果作为我在这里输入的输出:
Q=21
y=7.645
b=2
x=1
S0=0.002
/usr/lib/python3/dist-packages/scipy/optimize/minpack.py:236: RuntimeWarning: The iteration is not making good progress, as measured by the
improvement from the last ten iterations.
warnings.warn(msg, RuntimeWarning)
[ 1.]
[-20.68503025]
我在 Online Python 中写了这篇文章。我不知道这个错误是什么意思。输出也是错误的。对于这个特定的输入,答案应该是 n=0.015。我该如何修复此代码?
我重新排列了你的等式,这以某种方式得到了你预期的结果。我真的不太确定是什么问题,抱歉!
return (S_0/Q)*((y*(b+x*y))**(5/3)/(b+2*y*(1+x**2)**(1/2))**(2/3))-n