结果报错ValueError: cannot derive by this array
from sympy import * #用于函数定义求导
from scipy.optimize import fsolve #用于方程求解
import numpy as np #用于数组定义等
import matplotlib.pyplot as plt #用于画图
x=symbols('x') #定义自变量
P=0.00008 #核酸检测为阳性的概率
def f(x):
E_x = diff(1+1/x-(1-P)**x, x)
return E_x
result = fsolve(f, [1])
结果报错:
ValueError: cannot derive by this array
将程序修改为如下:
from sympy import * #用于函数定义求导
import numpy as np #用于数组定义等
import matplotlib.pyplot as plt #用于画图
x=symbols('x') #定义自变量
P=0.00008 #核酸检测为阳性的概率
def func(x):
return 1+1/x-(1-P)**x #期望定义函数
E_x=diff(func(x),x)
print(E_x)
def f(x):
return 8.00032001706459*(10**(-5))*(0.99992**x)-1/(x**2)
result = fsolve(f, [1])
print(result)
结果如下:
[112.30454383]
先将diff(func(x),x)的结果打印出来,再手动输入进f(x)的返回值中,再运用fsolve函数便可得到结果
问题:
请问为什么手动输入就可以得到答案?
该如何直接使用diff(func(x),x)结果,不用手动输入就可以运用fsolve函数计算结果?