python - 在数组上使用来自 scipy.optimize 的 fsolve
问题描述
我正在尝试用 python 的 fsolve 求解方程组。我想将二维数组传递给函数,然后返回列的组合。该函数似乎有效,但我不断收到错误“IndexError:数组索引过多”。我看不出我做错了什么。如果有人可以帮助我并解释我做错了什么(以及我可以做些什么),我将非常感激。产生错误的代码如下:
import numpy as np
from scipy.optimize import fsolve
x0 =np.array([[1,0],[1,0]])
def f(x):
x1 = x[:,0]
x2 = x[:,1]
return np.array([x1**2-4,x2**2-9])
fsolve(f,x0)
谢谢!
解决方案
您在 的返回值中使用数组,f(x)
它只需要两个变量,x1
并且x2
(这是发生索引错误的地方)。x
有 4 个条目,所以你可以这样称呼它:
import numpy as np
from scipy.optimize import fsolve
x0 = np.array([[1,0],[1,0]])
def f(x):
#x1 = x[:,0]
#x2 = x[:,1]
x1 = x[0]
x2 = x[1]
return np.array([x1**2-4, x2**2-9])
#fsolve(f, x0)
print(fsolve(f, x0[:,0]))
print(fsolve(f, x0[:,1]))
这会产生(注意可能的迭代问题):
[2. 3.]
[0. 0.]
不确定这是否回答了它,但如果你想处理整个数组,你将不得不逐行(或按列)处理它。
推荐阅读
- php - GFS Grib 风值解码和转换 (U & V)
- r - 根据来自同一列的先前值和 R 中的周围数据预测值
- r - 使用 dplyr 和 collect 重新格式化输出
- graphql - useQuery:数据未定义
- javascript - 如何在 React/React Native 的地图组件列表中独立设置状态
- reactjs - 使用 Expo 输入照片
- java - 使用 AsyncTask 转换代码以使用 Executor Service
- c++ - 我想使用这些功能反转文本,但我不知道出了什么问题
- amazon-s3 - S3 托管网站只能通过私有端点访问
- python - 键盘出现kivy时的事件