gpt4 book ai didi

Python fsolve() 提示形状。为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:15 25 4
gpt4 key购买 nike

有了函数 f(x,y,z),我需要求解限制 f(x,y,z) = 0,然后绘制它。我试图为每一对 (y,z) 找到 f(x,y,z) = 0 的值 x:

from numpy import *
from scipy.optimize import fsolve

def func(x,y,z):
return x+y+z

y = linspace(0,1,100)
z = linspace(0,1,100)
x0 = zeros((y.size,z.size)) + 0.5 # the initial guess
yz = (y[:,newaxis],z[newaxis,:]) # the other parameters
x, info, iterations, message = fsolve(func,x0,yz)
contour(y,z,x)

Python (2.7.5) 说“类型错误:fsolve:‘func’参数‘func’的输入和输出形状不匹配。”

但如果我自己测试,它会给出相同的形状:

func(x0,y[:,newaxis],z[:,newaxis]).shape == x0.shape

返回真。

为什么 fsolve() 会报错?

最佳答案

fsolve 期望 x 参数和 func 的返回值是标量或一维数组。您必须修改代码才能使用扁平化的 x 值。例如

def func(x, y, z):
x = x.reshape(y.size, z.size)
return (x + y + z).ravel()

对于 fsolve 的调用是这样的:

sol, info, ier, mesg = fsolve(func, x0.ravel(), args=yz, full_output=True)
x = sol.reshape(y.size, z.size)

关于Python fsolve() 提示形状。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734602/

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