鱼C论坛

 找回密码
 立即注册
查看: 882|回复: 2

线性微分方程组 矩阵怎么传参呀??

[复制链接]
发表于 2018-9-30 06:10:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jingjing122 于 2018-9-30 09:16 编辑

请问一下,比如说:
dx/dt=x+2y
dy/dt=6y

我看各种教程都是把这两个式子分着像这样写的,但如果我的式子很多,有10个,这个时候用矩阵的形式就很方便,[x']=A[x] 这样, 可是不知道该怎么表示,是不是还用odeint函数呢??

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

# function that returns dy/dt
def model(z,t):
    x=z[0]
    y=z[0]
    k = 0.3
    dxdt = x+2* y
    dydt = 6* y
    return [dxdt,dydt]

# initial condition
x0=1
y0=1

# time points
t = np.linspace(0,20)

# solve ODE
z = odeint(model,z0,t)


那如果不想这样一个一个式子写,想用矩阵写,该怎么写啊
def model(z,t):
        A=np.array([[1,2],[0,6])
        dxdt=np.dot(A,x)
        return dxdt
z0=[1,1]

不好意思哇。好像是可以的。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-9-30 08:16:57 | 显示全部楼层
import numpy as np
from scipy.integrate import odeint

def model(t,z):
    L = np.array([[1,1],[0,1]])
    dzdt = L*z
    return dzdt

z0=[1,1]

a=np.shape(z0)
print(a)
t= np.linspace(0,5,20)
z=odeint(z0,model,t)
#print (z)

会报错:error: The function and its Jacobian must be callable functions.
这里的Jacobian matrix是什么啊?如何求呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-30 09:17:22 | 显示全部楼层
解决啦解决啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-2 12:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表