我一直在研究sympy和scipy,但是找不到或弄清楚如何求解耦合微分方程组(非线性,一阶).
那么有没有办法解决耦合微分方程?
方程的形式如下:
V11'(s) = -12*v12(s)**2
v22'(s) = 12*v12(s)**2
v12'(s) = 6*v11(s)*v12(s) - 6*v12(s)*v22(s) - 36*v12(s)
Run Code Online (Sandbox Code Playgroud)
初始条件为v11(s),v22(s),v12(s).
我有一个方阵A(可以是任何大小),我想取上三角形部分并将这些值放在一个数组中,而不是中心对角线以下的值(k = 0).
A = array([[ 4, 0, 3],
[ 2, 4, -2],
[-2, -3, 7]])
Run Code Online (Sandbox Code Playgroud)
使用numpy.triu(A)让我
A = array([[ 4, 0, 3],
[ 0, 4, -2],
[ 0, 0, 7]])
Run Code Online (Sandbox Code Playgroud)
但是从这里我怎么只将上三角形元素复制成一个简单的数组呢?如:
[4, 0, 3, 4, -2, 7]
Run Code Online (Sandbox Code Playgroud)
我只是迭代并复制所有非零元素,但允许上三角形为零.
我试图用我的等式中的两个符号代替它们中的每个矩阵形式.
我创建了一个换向器函数,它形成了我的表达式:
t, vS, = sy.symbols('t, vS', commutative = False)
hS = t + vS
eta = myComm(t,hS)
dHs = myComm(eta,hS)
print dHs.expand()
Run Code Online (Sandbox Code Playgroud)
产生我想要的正确表达:
2*t*vS*t + t*vS**2 - t**2*vS - 2*vS*t*vS - vS*t**2 + vS**2*t
Run Code Online (Sandbox Code Playgroud)
所以现在我希望用符号替换符号t和vS,但是当使用subs我得到一个错误时,"unhashable type:'list'"我假设它与我的矩阵初始化或它们应该如何被正确替换有关因为我是numPy和symPy的新手.
其余代码:
tRel = ([e0, 0],[0,e1])
vtmp = ([v0, v1],[v2,v3])
dHs = dHs.subs(t, tRel)
dHs = dHs.subs(vS, vtmp)
print dHs
Run Code Online (Sandbox Code Playgroud) 这是我正在使用的代码:
def initFunction(arg1, arg2):
def funct(value):
return arg1 * arg2 * value
return funct
os.system("taskset -p 0xff %d" % os.getpid())
pool = Pool(processes=4)
t = np.linspace(0,1,10e3)
a,b,c,d,e,f,g,h = sy.symbols('a,b,c,d,e,f,g,h',commutative=False)
arg1 = sy.Matrix([[a,b],[c,d]])
arg2 = sy.Matrix([[e,f],[g,h]])
myFunct = initFunction(arg1, arg2)
m3 = map(myFunct,t) # this works
m4 = pool.map(myFunct,t) # this does NOT work
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "/home/justin/Research/mapTest.py", line 46, in <module>
m4 …Run Code Online (Sandbox Code Playgroud) 我正在试图找出在python中正确使用map的方法,以便我可以通过Pool.map对我的程序进行多线程处理.基本上我遇到了试图理解python功能如何工作的问题.我有:
import numpy as np
def maptest(foo,bars):
print foo * bars
main():
matA = np.eye(2)
matB = np.eye(2)
print map((lambda foo: maptest(foo, matB)), matA)
Run Code Online (Sandbox Code Playgroud)
这给了我一个输出:
[[ 1. 0.]
[ 0. 0.]]
[[ 0. 0.]
[ 0. 1.]]
[None, None]
Run Code Online (Sandbox Code Playgroud)
当我想要的输出只是:
[[1. 0.]
[0. 1.]]
Run Code Online (Sandbox Code Playgroud)
我能用地图电话怎么回事?这是我第一次使用map和lambda.我用lambdify和sympy,但这都是为了我的职业经历.谢谢!
我正在尝试将我的一些python程序转换为julia,并且要求我从txt文件中获取矩阵形状的值,然后继续使用矩阵进行乘法等.
那么有没有更好的方法从文件输入并加载julia中的矩阵,除了迭代线或字符?
例如,文本文件看起来像
5 9
10 3
Run Code Online (Sandbox Code Playgroud)
所以我的矩阵就是
[[5,9],
[10,3]]
Run Code Online (Sandbox Code Playgroud)
然后我用它来乘以其他矩阵等.
我本周刚刚开始使用朱莉娅,所以我仍然尽力梳理图书馆和麻省理工学院的资源.到目前为止,我最好的想法(假设没有相当于numpy.loadtxt)将逐行加载到数组然后只是重新形成它,但我想尽可能高效,这似乎是一个缓慢而不是干净的进口方式.