我想创建一个矩阵,其中包含一系列常微分方程的参数。我有5个常微分方程,它们的所有参数都必须以一定的顺序出现在这个矩阵中
但我找不到最合理的方法来做这件事。我设置了一个5x 5的零矩阵,并试图用我的参数替换矩阵中的某些位置,但这些参数之前没有定义,我输入它们(未定义的值),因为我将在后面使用它们。我的代码是这样的:
import numpy as np
####create matrix
zeros = np.zeros((5,5))
params = ['-lambda', 'lambda', '-u-v', 'u', '-w', 'v', 'w','-gamma', 'gamma']
pos = [(0,0),(1,0),(1,1),(2,1),(2,2),(3,1),(3,2),(3,3),(4,3)]
rows, cols = zip(*pos)
zeros[rows, cols] = params
我尝试编码的东西看起来像这样:
---------------------------------编辑
所有这些的目的是,当我用另一个向量乘以我的矩阵时,我将留下我的ODE的方程(参见下面的示例,将第一行与向量相乘得到'dU',等等。
1条答案
按热度按时间olhwl3o21#
我们可以只输入行和列作为x和y位置的单独
lists
;你可能想用变量u
、v
、w
、gamma
和_lambda
(仅供参考)来填充numpy
数组(变量的值)(仅供参考),变量的命名方式与现有的内置变量(如lambda
)不同,lambda
已经是一个函数,它具有一些语法糖,缩短了定义或调用函数的代码,这里有一个链接:How are lambdas useful?):print(zeros)
输出:如果你真的想用你的问题中的
str
ing名称的list
来填充数组(['-lambda', 'lambda', '-u-v', 'u', '-w', 'v', 'w','-gamma', 'gamma']
),那么我们可以做同样的事情,但是我们需要将初始numpy
数组的dtype
也设置为str
ing:print(zeros)
输出:如果我们想得到值,那么我们可以
eval
评估数组中的str
:输出: