Having the function f(x,y,z), I need to solve the restriction f(x,y,z) = 0 and then plot it. I tried to find for each pair (y,z) the value x for which f(x,y,z) = 0:
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) says "TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument 'func'."
But if I test it myself, it gives the same shape:
func(x0,y[:,newaxis],z[:,newaxis]).shape == x0.shape
returns True.
Why does fsolve() complain?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…