24小时热门版块排行榜    

CyRhmU.jpeg
查看: 4266  |  回复: 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的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

月只蓝

主管区长 (职业作家)

【答案】应助回帖


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的回帖

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的回帖
普通回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +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的回帖

aqua426

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 月只蓝 at 2013-07-19 11:09:21
最简单的办法就是先拟合出x对t的关系式,使原方程组中的x(t)可以展开成只含t的式子,再用ode解。只要拟合的相关系数平方达到两个99以上,保证精度不成问题。...

好像挺简单 谢谢
5楼2013-07-19 14:23:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

myg14

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by somomo91 at 2013-07-19 23:37:33
用标准的MATLAB 程序的话,如下,
要注意的是,因为我不知道你的参数 x a b m c,随便取了值,所以这个程序不能正确运行,如果你的参数正确的话,应该没有问题的
=================================
clear;clc ...

如果这里的x=sint不能用表达式写出,就是一组随机的信号序列该怎么做
7楼2015-01-29 21:22:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)

引用回帖:
7楼: Originally posted by myg14 at 2015-01-29 21:22:33
如果这里的x=sint不能用表达式写出,就是一组随机的信号序列该怎么做...

这里的 x 只要保证 dimension / size 和 t 一样就可以了
不需要 x=sin(t)
8楼2015-01-29 21:25:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小然Axin

铁虫 (初入文坛)

您好,请问楼主,您的问题解决了吗?我也遇到同样的问题,微分方程的系数不是常数,而是与t的size相同的随之变化的一系列值,这样应该如何求解微分方程呢?希望能和您沟通一下。
9楼2016-11-22 09:29:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouzi1857

新虫 (初入文坛)

请问楼主问题解决了吗?我也是遇到这样的问题,能否向您请教一下
10楼2018-04-10 00:09:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 aqua426 的主题更新
信息提示
请填处理意见