五味瓶 发表于 2009-10-22 19:32

关于ode45解微分方程过程中参数传递的问题

我在用ode45解微分方程的时候,需要把一个参数进行传递,但是这个参数又是随时间变化的,不知道可以传递不?
因为参数在>0和<0时,微分方程的表达式不一样,所以我想用参数把它传递进去。。。
希望高手可以给予解答!先谢谢了!!

limengiiii 发表于 2009-10-23 08:33

我也在考虑如何向ode函数里面传递变量参数的问题,我们可以讨论一下:
举个二维的例子:
function dx=ode5(t,x)
dx=zeros(2,1);
n=randn(1,1);
dx(1)=(3*x(1)+x(2))+(3*x(1)+0.2*x(2))*n;
dx(2)=x(2)+x(2)*n;
main 函数就是用ode45来解这个微分方程。
这里面n就相当于一个随机数,但是这并不符合我的要求,这个里的n应该代表随机过程,它是随时间的变化而变化的才可以,比如说在main函数里 t=(0:0.1:10),n=randn(1,length(t)).敢问各位大侠,用ODE45解这个问题的时候该怎么描述呢?

limengiiii 发表于 2009-10-23 08:34

看了相关的帖子后,我用如下函数来编写:
function dx=examplemao(t,x,n)
%global n
dx=zeros(2,1);
dx(1)=(3*x(1)+x(2))+(3*x(1)+0.2*x(2))*n;
dx(2)=x(2)+x(2)*n;
主程序:clear
global n
sn=randn(1,1000);
xx=[];
for i=1:length(sn)
   n=sn(i);
    =ode15s(@examplemao,,,[],n);
xx=;
end
plot(t,x)
但是感觉得到的结果还是不对

rocwoods 发表于 2009-10-23 11:01

请参考http://forum.vibunion.com/forum/viewthread.php?tid=42369&extra=page%3D1%26amp%3Bfilter%3Ddigest
虽然那个帖子主要是讨论参数积分,但是问题都是如何传递参数的问题。里面很多方法都可以借鉴。

limengiiii 发表于 2009-10-24 08:34

谢谢你,我去学习一下

skyyard 发表于 2010-4-22 22:09

回复 板凳 limengiiii 的帖子

你的解决办法是什么啊
页: [1]
查看完整版本: 关于ode45解微分方程过程中参数传递的问题