Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-04-27
年龄: 42
帖子: 9
声望力: 0 ![]() |
![]()
各位高手:
小弟请教一下,变系数微分方程可以用runge-kutta法解吗。 [dx/dt]=[A(t)]*[x]+[B(t)]; 一般的常微分方程A(t)和B(t)是常系数,不变的。 如果A(t)和B(t)是随时间变化的呢。 小弟用runge-kutta法解了,但是觉得不对。 请高手指教!感激之情难于言表!谢谢! |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21 ![]() |
![]()
可以,
LZ的ODE方程归根到底还是Dy=f(t,y)的形式,正常编写ODEFUN就可以了。 请参考ode45(...)的帮助 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-04-27
年龄: 42
帖子: 9
声望力: 0 ![]() |
![]()
但是,不同时刻的f(t,y)是不同的啊。书上讲的runge-kutta是解常系数的,f(t,y)始终是一样的。所以就不知道我这种f(t,y)随时间变化而改变的或者说系数改变的可以用runge解吗?程序我也调通了,但是跑出来的结果和我想象的有一定的差距。所以想请教各位高手是不是有问题。
|
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31 ![]() ![]() ![]() ![]() |
![]()
把你的程序 贴上来,我们拜读下如何?
|
![]() |
![]() |
![]() |
#5 | |
高级会员
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21 ![]() |
![]() 引用:
最后,像LS说的,把你的程序贴出来看看吧。 |
|
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2008-04-27
年龄: 42
帖子: 9
声望力: 0 ![]() |
![]()
由于程序较长,较复杂我把程序简化了一下。
只需在命令框里输入:[tout,yout]=ode45('Evalue',[0.0002:0.0004:0.1202],[0,0,0,0]) Evalue.m的文件如下: function [Ikdot]=Evalue(tk,Ik)%%%传递过来的两个参数 R=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1]; U=[110e3*sin(100*pi*tk+pi/2);110e3*sin(100*pi*tk+pi/2);0;0];%%%%定义一正弦电压 [Ikdot]=U-R*Ik;%%%%算法中的一个计算函数。 U就是我所说的表系数,Ik就是未知数y。Ikdot就是dy/dt。 我反复验证后发现一个问题,由于系数里面存在tk(随时间变化的系数)。使得在解的时候Ik可以不用,把Ik去掉使得[Ikdot]=U.运行出来的结果和[Ikdot]=U-R*Ik是一样的。 |
![]() |
![]() |
![]() |
#7 | |
高级会员
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21 ![]() |
![]() 引用:
LS说的“使得在解的时候Ik可以不用,把Ik去掉使得[Ikdot]=U.运行出来的结果和[Ikdot]=U-R*Ik是一样的。”这句话是不正确的,不信的话,LS可以把两次的结果相减再绘图看看,有个位数的偏差,这对于matlab来说可不是误差哦。 至于R*Ik对结果影响过小的原因,是由于系统参数不合理,在这个问题中R矩阵太小了,把R换成以下矩阵试试,差别是很明显的。 [10000,0,0,0;0,10000,0,0;0,0,1,0;0,0,0,1]; |
|
![]() |
![]() |
![]() |
#8 |
初级会员
注册日期: 2008-04-27
年龄: 42
帖子: 9
声望力: 0 ![]() |
![]()
谢谢!谢谢!谢谢!
|
![]() |
![]() |
![]() |
#9 |
初级会员
注册日期: 2013-05-16
帖子: 2
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
请教二个简单问题 | abcus | MATLAB论坛 | 2 | 2008-06-24 22:52 |
[求助]求救一个看似简单的问题! | tanrenzhe603 | MATLAB论坛 | 2 | 2008-06-23 18:20 |
[求助]请求高手帮忙 | bash2008 | MATLAB论坛 | 0 | 2008-05-25 20:47 |
[求助] | 06104112 | MATLAB论坛 | 1 | 2008-04-19 16:39 |