当前位置: 首页 > 知识库问答 >
问题:

Python解析值错误

常坚
2023-03-14

为什么下面的代码返回ValueError?

from scipy.optimize import fsolve
import numpy as np

def f(p,a=0):
    x,y = p
    return (np.dot(x,y)-a,np.outer(x,y)-np.ones((3,3)),x+y-np.array([1,2,3]))

x,y = fsolve(f,(np.ones(3),np.ones(3)),9)


ValueError: setting an array element with a sequence.

共有1个答案

微生毅
2023-03-14

这里的基本问题是,您的函数f不满足fSolutions工作所需的条件。这些标准在留档中有描述——尽管可以说不是很清楚。

您需要注意的具体事项包括:

  1. 要求解的函数的输入必须是一个n维向量(在文档中称为ndarray),这样您想要的x的值就是f(x,*args)=0的解
  2. f的输出必须与x输入到f的形状相同

目前,您的函数接受一个由两个成员组成的元组(在p中)和一个固定的标量偏移量(在a中)。它返回一个类型为(scalar3x3数组1x3数组)的三成员元组

如你所见,条件1和2都不满足。

如果你不确切地确定你要解的方程,就很难就如何解决这个问题给出建议。似乎您正试图用x0=(1,1,1)y0=(1,1,1)a=9作为固定值来求解xy的某个特定方程f(x,y,a)=0。您可以通过串联传入xy来实现这一点(例如传入p0=(1,1,1,1,1,1)并在函数中使用x=p[:3]y=p[3:]但是你必须修改你的函数,将x和y连接成一个类似的6维向量。这取决于你要求解的确切函数,我不能从你现有的f的输出(即基于点积、外积和基于和的元组)得出这个结论。

请注意,您没有传入向量的参数(例如,在您的情况下,a)将被视为固定值,不会作为优化的一部分进行更改,也不会作为任何解决方案的一部分返回。

正如医生所说:

fsolve是MINPACK的hybrd和hybrj算法的包装器。

如果我们看一下MINPACK hybrd文档,输入和输出向量的条件就更清楚了。请参阅下面的相关部分(为了清晰起见,我删掉了一些内容-用…-表示,并添加了注释以显示输入和输出必须是相同的形状-用…-表示)

1目的。

HYBRD的目的是通过对Powell混合方法的改进,找到N个变量中N个非线性函数系统的零点。用户必须提供计算函数的子程序。然后通过向前差分近似计算雅可比矩阵。

2子程序和类型语句。

   SUBROUTINE HYBRD(FCN,N,X, ...

...

FCN是用户提供的用于计算函数的子例程的名称。FCN必须在用户调用程序的外部语句中声明,并应按如下方式编写。

 SUBROUTINE FCN(N,X,FVEC,IFLAG)
 INTEGER N,IFLAG
 DOUBLE PRECISION X(N),FVEC(N)  <-- input X is an array length N, so is output FVEC
 ----------
 CALCULATE THE FUNCTIONS AT X AND
 RETURN THIS VECTOR IN FVEC.
 ----------
 RETURN
 END

N是将正整数输入变量设置为函数和变量的数量。

X是长度为N的数组。输入X必须包含解向量的初始估计值。输出X包含解向量的最终估计。

 类似资料:
  • 我有以下命令。我想循环使用此键和值,即对于冰/冷的项目,打印“值” 我试过这个: 却给我错误

  • 问题内容: 我想使用argparse解析布尔命令行参数,写为。例如: 但是,以下测试代码不能满足我的要求: 可悲的是,计算结果为True。即使我更改为,情况也是如此,这令人惊讶,因为评估为。 如何获取进行解析,以及它们的小写字母形式是什么? 问题答案: 另一个解决方案使用了先前的建议,但存在来自以下情况的“正确”解析错误: 这对于使用默认值进行切换非常有用。例如 允许我使用:

  • 在web2py服务器上使用python我有以下问题。如何循环遍历json以查找所有具有空值(或空字符串)的键并收集这些键以报告丢失的内容: 这是我的json示例。 我想检索一个包含所有键的列表,如果嵌套的话,则不是第一级。二级。missingData=[scriptFrom,nbworkersDays.nbWorkersTo,nbworkersDays.timeTo] 关于如何解决此问题或如何收集

  • 问题内容: 我有以下JSON字符串来自外部输入源: 这是格式错误的JSON字符串(“ id”和“ value”必须用引号引起来),但无论如何我都需要对其进行解析。我已经尝试了simplejson和json- py,但似乎无法将其设置为解析此类字符串。 我正在Google App引擎上运行Python 2.5,因此任何基于C的解决方案(例如python-cjson)都不适用。 除了上面列出的JSON

  • 问题内容: 我知道这个问题经常被问到,但是找不到合适的解决方案。使用时 要么 我总是会遇到以下错误: 人们建议打开并重试。但这并没有太大帮助。 我也有装的罐子: 问题答案: 从Apache POI常见问题解答: 我可以混合不同版本的POI罐子吗? 否。不支持此功能。 所有使用中的POI罐子必须来自同一版本。不支持诸如poi-3.11.jar和poi- ooxml-3.9.jar之类的组合,它们将无

  • 问题内容: 尝试对mongoexport使用查询会导致错误。但是mongo-client会评估相同的查询,而不会出错。 在mongo-client中: 使用mongoexport: 产生的错误: 但是预先在mongoexport中进行乘法: 作品! 为什么mongo在这两种情况下对查询的评估不同? 问题答案: 该命令行实用程序支持传递查询 JSON 格式,但您要评估 的JavaScript 在您的