Python 使用scipy为不同的y值查找表达式y=f(x)的根
我有以下功能Python 使用scipy为不同的y值查找表达式y=f(x)的根,python,numpy,scipy,Python,Numpy,Scipy,我有以下功能 import numpy as np from scipy import optimize def func(x): theta = np.arccos(1 - 2*x) return 2*(theta - np.sin(theta)) 问题:我想为y的不同值找到表达式y=func(x)的根,例如,如果y=1,我可以根据需要修改上述函数 import numpy as np from scipy import optimize def func(x):
import numpy as np
from scipy import optimize
def func(x):
theta = np.arccos(1 - 2*x)
return 2*(theta - np.sin(theta))
问题:我想为y
的不同值找到表达式y=func(x)
的根,例如,如果y=1
,我可以根据需要修改上述函数
import numpy as np
from scipy import optimize
def func(x):
theta = np.arccos(1 - 2*x)
return 2*(theta - np.sin(theta)) - 1
initial_guess = 0
sol = optimize.root(func, initial_guess)
以获得所需的根。让我们假设这样的根存在,并且我们知道所有不同y值的适当初始猜测
我需要做哪些修改才能实现这一点?初始猜测的问题,这正是函数的奇点。因此,如果你将初始值移动一点,你可以得到一个很好的解决方案
>>> initial_guess = 0.001
>>> sol = optimize.root(func, initial_guess)
>>> sol
fjac: array([[-1.]])
fun: array([ -2.22044605e-16])
message: 'The solution converged.'
nfev: 11
qtf: array([ 2.99071878e-12])
r: array([-3.71631332])
status: 1
success: True
x: array([ 0.46328511])
>>>
注意。由于问题的奇异性,如果初始猜测为负或为零,则无法获得数值解 初始猜测的问题,这正是函数奇点的所在。因此,如果你将初始值移动一点,你可以得到一个很好的解决方案
>>> initial_guess = 0.001
>>> sol = optimize.root(func, initial_guess)
>>> sol
fjac: array([[-1.]])
fun: array([ -2.22044605e-16])
message: 'The solution converged.'
nfev: 11
qtf: array([ 2.99071878e-12])
r: array([-3.71631332])
status: 1
success: True
x: array([ 0.46328511])
>>>
注意。由于问题的奇异性,如果初始猜测为负或为零,则无法获得数值解 要改变左侧,您可以在
func
中添加一个额外的参数,然后通过的args
关键字传递该参数(请记住):
要改变左侧,您可以在
func
中添加一个额外参数,然后通过的args
关键字传递该参数(请记住):