数值求解 scipy
Numeric solve with scipy
我有一些使用 Python 编程的经验,但在科学应用方面没有。我知道 scipy 提供了一个函数 fsolve (func, initial_guess)
用于数值求解方程。但是,我不知道如何用我的方程式来实现它。使用 TI CAS 软件,它看起来像那样,而当然“0.196”是一个变化的值:
从 scipy documentation 看来相当简单,只需先将等式重新排列为预期格式 func(x) = 0
。
+%5Cfrac%7B1%7D%7B3%7D%5Ccdot&space;t%5E%7B2%7D-%5Cfrac%7B1%7D%7B10%7D%5Ccdot&space;t&space;=&space;0.196)
+%5Cfrac%7B1%7D%7B3%7D%5Ccdot&space;t%5E%7B2%7D-%5Cfrac%7B1%7D%7B10%7D%5Ccdot&space;t&space;-&space;0.196&space;=&space;0)
1/3.0*np.tan(100/73.85*t)+1/3.0*pow(t,2)-1/10.0*t - 0.196
from scipy.optimize import fsolve
import numpy as np
def func(t,k):
return 1/3.0*np.tan(100/73.85*t)+1/3.0*pow(t,2)-1/10.0*t - k
k = 0.196
root = fsolve(func, 1, args=(k))
print(root)
# [0.37653542]
我有一些使用 Python 编程的经验,但在科学应用方面没有。我知道 scipy 提供了一个函数 fsolve (func, initial_guess)
用于数值求解方程。但是,我不知道如何用我的方程式来实现它。使用 TI CAS 软件,它看起来像那样,而当然“0.196”是一个变化的值:
从 scipy documentation 看来相当简单,只需先将等式重新排列为预期格式 func(x) = 0
。
1/3.0*np.tan(100/73.85*t)+1/3.0*pow(t,2)-1/10.0*t - 0.196
from scipy.optimize import fsolve
import numpy as np
def func(t,k):
return 1/3.0*np.tan(100/73.85*t)+1/3.0*pow(t,2)-1/10.0*t - k
k = 0.196
root = fsolve(func, 1, args=(k))
print(root)
# [0.37653542]