24小时热门版块排行榜    

CyRhmU.jpeg
查看: 4268  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

aqua426

新虫 (初入文坛)

[求助] 求助Matlab求解含已知变量的微分方程组(变量随时间变化的离散值已知)已有2人参与

微分方程组如下:
dy1/dt=-a*y1/y3^m-b*y3*x(t)
dy2/dt=-a*y2/y3^m-2*y1*x(t)
dy3/dt=(1-y3)/a/y3^m-c/y3^m*(y1*x(t))^0.5


a,b,m是已知常数,x是随时间变化的变量,已知x在tspan内所取时间点的值,能否用ode函数求解?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
csgt0: 金币+2, 谢谢 2013-07-23 11:33:33
引用回帖:
5楼: Originally posted by aqua426 at 2013-07-19 14:23:59
好像挺简单 谢谢...

用标准的MATLAB 程序的话,如下,
要注意的是,因为我不知道你的参数 x a b m c,随便取了值,所以这个程序不能正确运行,如果你的参数正确的话,应该没有问题的
=================================
clear;clc
global x a b m c
a = 1;
b = 1;
c = 1;
m = 1;
y_ini  = [1, 0, 0];
t0    = 0;
tend  = 1e3;
tspan = t0:0.5:tend;
x = sin(tspan);
[t,y] = ode45(@equ_sys, tspan, y_ini);

============
function [ dy ] = equ_sys( t, y )

global x a b m c

dy = zeros(3,1);

y1 = y(1) ;
y2 = y(2) ;
y3 = y(3) ;

dy(1) = -a*y1/y3^m-b*y3*x(t) ;
dy(2) = -a*y2/y3^m-2*y1*x(t) ;
dy(3) = (1-y3)/a/y3^m-c/y3^m*(y1*x(t))^0.5;

end
6楼2013-07-19 23:37:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
除了待求变量,所有变量都已知,可以的。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2013-07-19 10:57:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

aqua426

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 月只蓝 at 2013-07-19 10:57:22
除了待求变量,所有变量都已知,可以的。

谢谢 具体用哪个函数 x怎么编进去呢
3楼2013-07-19 10:59:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


csgt0: 金币+1, 谢谢 2013-07-19 14:55:50
引用回帖:
3楼: Originally posted by aqua426 at 2013-07-19 10:59:06
谢谢 具体用哪个函数 x怎么编进去呢...

最简单的办法就是先拟合出x对t的关系式,使原方程组中的x(t)可以展开成只含t的式子,再用ode解。只要拟合的相关系数平方达到两个99以上,保证精度不成问题。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2013-07-19 11:09:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见