gpt4 book ai didi

python - fsolve 和 numpy 的使用

转载 作者:行者123 更新时间:2023-11-28 21:56:25 25 4
gpt4 key购买 nike

当我尝试使用 fsolve 或 scipy.optimize.newton 最小化我的(复数矩阵)函数时,我遇到了一个问题,但它们都没有用。实际上,我的函数是具有复数值的 2*2 矩阵。首先,我在一个名为 real() 的类中定义了我的函数,它由我的主程序 MAin.py 调用:

import sys,os
import numpy as np
import random, math
from scipy.optimize import fsolve
from scipy import optimize

class real :
def __init__(self):
self.w = 2

def func1(self,eps):
self.k_ch=2.5*np.exp(eps)
f=np.array([[0,eps*3*self.k_ch+0.032],[0,self.w]])
return f

我的主程序是:

import sys,os
import numpy as np
import random, math, cmath
from scipy.optimize import fsolve
from Carlo import *

A=real()
eps=0.003+0.0042j
C=A.func1(eps)

Cp=0
track=1e-03
variable=np.arange(track,0.1,1)
for track in variable:
Cp=Cp+1

if Cp==1:
eps_real=0
elif Cp==1:
fray=np.array([Cp-1,2])
eps_real=fray/2*3.14*track

R_0= fsolve(C,eps.real)
print R_0
if xtol<=1e-04:
value_stock= np.array([Cp-1,2])
print 'R_0 value is', R_0

但是我得到了这个错误:

Traceback (most recent call last):
File "Main.py", line 29, in <module>
R_0= fsolve(C,eps.real)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/optimize/minpack.py", line 127, in fsolve
res = _root_hybr(func, x0, args, jac=fprime, **options)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/optimize/minpack.py", line 183, in _root_hybr
_check_func('fsolve', 'func', func, x0, args, n, (n,))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/optimize/minpack.py", line 14, in _check_func
res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
TypeError: 'numpy.ndarray' object is not callable

由于我是 python 的新手,我不知道如何处理它。如果你有任何想法,你能帮我吗?似乎 fsolve 不喜欢复数,但我使用 scipy.optimize.newton 时遇到了同样的错误。

谢谢。

最佳答案

fsolve 的第一个参数需要一个函数。您提供的 Cnumpy.ndarray,而不是函数。

关于python - fsolve 和 numpy 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com