Python 多维函数错误的Mpmath findroot“;无法从矩阵创建mpf“;

Python 多维函数错误的Mpmath findroot“;无法从矩阵创建mpf“;,python,matrix,root,newtons-method,mpmath,Python,Matrix,Root,Newtons Method,Mpmath,以下代码给出了错误: “TypeError:无法从矩阵(…)创建mpf” 其中矩阵是初始化向量。我不明白为什么它首先要转换这个矩阵。据我所知,mpmath应该能够计算多维函数的根 代码: 导入mpmath 将numpy作为np导入 def Lgrad2(x、d、n): a=x[:d] nij=x[d:] pi=mpmath.pi 返回mpmath.矩阵(范围(d)中j的np.数组([Lag(2*k-1,n/2-1,0)+np.和([a[j]*Lag(2*k-1,n/2-1,4*pi*nij[j]

以下代码给出了错误:

“TypeError:无法从矩阵(…)创建mpf”

其中矩阵是初始化向量。我不明白为什么它首先要转换这个矩阵。据我所知,
mpmath
应该能够计算多维函数的根

代码:

导入mpmath
将numpy作为np导入
def Lgrad2(x、d、n):
a=x[:d]
nij=x[d:]
pi=mpmath.pi
返回mpmath.矩阵(范围(d)中j的np.数组([Lag(2*k-1,n/2-1,0)+np.和([a[j]*Lag(2*k-1,n/2-1,4*pi*nij[j]))范围(1,2*d+1)中的k)])
def滞后(k,alpha,x):
返回mpmath.laguerre(k,alpha,x)
d=2
n=2
nij=mpmath.randmartrix(d,1)*10000
a=mpmath.矩阵(np.一(d))
x=mpmath.matrix(np.hstack([a,nij]))
newt=mpmath.findroot(λy:Lgrad2(y,d,n),x0=x)
回溯:

Traceback (most recent call last):
  File "C:/Users/leons/PycharmProjects/pythonProject/venv/Lib/site-packages/mpmath/testquestion.py", line 16, in <module>
    newt=mpmath.findroot(lambda y: Lgrad2(y,d,n), x0=x)
  File "C:\Users\leons\PycharmProjects\pythonProject\venv\lib\site-packages\mpmath\calculus\optimization.py", line 911, in findroot
    x0 = [ctx.convert(x0)]
  File "C:\Users\leons\PycharmProjects\pythonProject\venv\lib\site-packages\mpmath\ctx_mp_python.py", line 669, in convert
    return ctx._convert_fallback(x, strings)
  File "C:\Users\leons\PycharmProjects\pythonProject\venv\lib\site-packages\mpmath\ctx_mp.py", line 634, in _convert_fallback
    raise TypeError("cannot create mpf from " + repr(x))
TypeError: cannot create mpf from matrix(
[['1.0'],
 ['1.0'],
 ['3575.61862149697117275'],
 ['4773.95129018594252557']])
回溯(最近一次呼叫最后一次):
文件“C:/Users/leons/PycharmProjects/pythonProject/venv/Lib/site packages/mpmath/testquestion.py”,第16行,在
newt=mpmath.findroot(λy:Lgrad2(y,d,n),x0=x)
文件“C:\Users\leons\PycharmProjects\pythonProject\venv\lib\site packages\mpmath\calculation\optimization.py”,第911行,findroot中
x0=[ctx.convert(x0)]
文件“C:\Users\leons\PycharmProjects\pythonProject\venv\lib\site packages\mpmath\ctx\u mp\u python.py”,第669行,转换格式
返回ctx.\u转换\u回退(x,字符串)
文件“C:\Users\leons\PycharmProjects\pythonProject\venv\lib\site packages\mpmath\ctx\u mp.py”,第634行,在“转换”回退中
raise TypeError(“无法从“+repr(x)”创建mpf”)
TypeError:无法从矩阵创建mpf(
[['1.0'],
['1.0'],
['3575.61862149697117275'],
['4773.95129018594252557']])

回溯和部分结果会很好。看起来有足够的代码可以运行,但我尝试它的唯一原因是好奇。我认为你对多维函数的理解是错误的。我看到一个一维函数和一个使用lambda列表的示例。但不涉及
mpmath.matrix
。当它试图将
x
转换为标量
mpf
@hpaulj时,会出现错误。我将其解释为在给定多维值时返回多维值的函数。所以返回的应该是一个mpf值的列表/数组?我没有太多使用mpmath,所以我所知道的都是从文档中获得的。