当前位置: 首页 > 面试题库 >

Python fsolve()抱怨形状。为什么?

百里光熙
2023-03-14
问题内容

具有函数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)说“ TypeError:fsolve:’func’参数’func’的输入和输出形状不匹配。”

但是,如果我自己进行测试,它会具有相同的形状:

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

返回True。

为什么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)


 类似资料:
  • [Error]org.testng.testngException:无法将@Test annotated方法[testLoginPage]与[interface java.util.Map]插入。有关本机依赖项注入的更多信息,请参阅http://testng.org/doc/documentation-main.html#native-dependent ency-injection at org

  • 问题内容: 这是我在Linux上编译的一些代码: 很好 很好 失败并显示以下错误: 不喜欢Linux中C99的定义与C99有何不同? 问题答案: 这是预处理和GNU C vs C99的一系列后果。 首先,: 包括 稍后,它在一个块内定义。 所以: 什么啊 -这是BSD和System V共有的东西 在这一点上定义了吗?-我们需要检查一下 所以现在: 默认情况下,当您使用GCC时定义(因为这就是C99

  • 我有一个实现Iterable的类,以便用户可以使用迭代器。我使用泛型来允许用户使用任何类型并使用该类。 这是下面的工作代码,没有警告- 但是,如果我将ListIterator定义如下- 我在 Eclipse 中收到警告, 当我在类后指定泛型类型时,它为什么会抱怨?为了能够在我的类中使用Type,我不应该这样做吗?我在定义CustomStackUsingArray时添加了类型,效果很好。

  • 问题内容: 我有一个现有项目,该项目使用@Override的方法会覆盖接口方法,而不是超类方法。我无法在代码中更改它,但是我希望Eclpse不再抱怨注释,因为我仍然可以使用Maven进行构建。 我将如何禁用此错误? 注意:由于项目要求,我需要针对Java 1.5进行编译。 问题答案: 在实现接口声明的方法的方法上使用注释仅从Java 6起有效。这是Java 5中的错误。 确保将你的IDE项目设置为

  • 问题内容: 我尝试在Ubuntu 12.04上安装Pycharm,并且得到以下信息: 正常工作该怎么办? 问题答案: 由于Oracle设置的限制,大多数较新的发行版不再包含Oracle(Sun)JDK。相反,它们与OpenSDK一起提供。尽管OpenSDK适用于大多数应用程序,但PyCharm似乎存在一些问题。 您必须手动安装Oracle(Sun)JDK,并确保它是默认JDK或在启动PyCharm

  • 问题内容: 用Pycharm的代码检查器初始化字典时,会产生警告,说 这个字典的创建可以重写为字典文字。 如果我重写它,警告就会消失。由于已经 是 字典文字,因此我很确定该消息是错误的。此外,似乎两者都有效,并且是Pythonic。 这个相关的问题似乎可以得出结论,选择仅取决于样式/偏好: “ d = dict()”和“ d = {}”之间的差异 皮查姆为什么会抱怨? 更新: Mac钉了它。该警告