求解线性方程组的函数fsolve的使用遇到了问题
res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 30)
>>> res
array([17.20419858])
**问题1:这句代码是求解(12.1+3)/0.0001-2x + 1 = 30的x值的意思么?
**
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 0)
D:\anaconda\lib\site-packages\scipy\optimize\minpack.py:162: RuntimeWarning: The iteration is not making good progress, as measured by the
improvement from the last ten iterations.
warnings.warn(msg, RuntimeWarning)
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 10)
>>> res
array([10.])
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 20)
>>> res
array([17.20419858])
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 15)
>>> res
array([17.20419858])
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 10)
>>> res
array([10.])
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), 9)
>>> res
array([9.])
>>> res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 ** x + 1), [0])
>>>
>>> res
array([0.])
问题2:为什么将30替换为0会报错?
问题3:为什么将30替换为[0]不会报错,但输出为0?这个结果应该不是方程(12.1+3)/0.0001-2x + 1 = 0的解
问题4:为什么30替换为14,20,输出结果是正确的,替换为10,9,等就出现了问题
问题5:这句代码res = fsolve(lambda x: ((12.1 + 3) / 0.0001 - 2 *x + 1), 30)可以用来求解-3到12.1内的实数转化为二进制数的位数(精度为0.0001)么?为什么用30,可以替换为其他数么?
我查了关于fsolve函数的使用,还是没太明白