ZKX's LAB

请各位大侠指点一下,如何在MATLAB中求解随机微分方程dx=sinxdt+xdw的数值解,其中w是维纳过程。 随机微分方程数值解 matlab

2020-08-12知识29

请各位大侠指点一下,如何在MATLAB中求解随机微分方程dx=sinxdt+xdw的数值解,其中w是维纳过程。 可以 clf;clear,clc dxdt=(t,x)sin(x(1))+x(1)*randn;x0=1;这里初值取1,可以自定 tspan=[0 10];求解区间[t,val]=ode45(dxdt,tspan,x0);plot(t,val)grid on set(gca,'xtick。MATLAB解常微分方程的数值解 使用matlab的dsolve()函数,可以解得其微分方程的解析解。y=-lambertw(0,-exp(-x^2))-1式中:lambertw()是朗伯W函数,w*exp(w)=x.【x y】1.0000-0.00001.1000-0.51631.2000-0.67071.3000-0.76711.4000-0.83361.5000-0.88131.6000-0.91591.7000-0.94101.8000-0.95921.9000-0.97222.0000-0.98132.1000-0.98772.2000-0.99202.3000-0.99492.4000-0.99682.5000-0.99812.6000-0.99882.7000-0.99932.8000-0.99962.9000-0.99983.0000-0.99993.1000-0.99993.2000-1.00003.3000-1.00003.4000-1.00003.5000-1.00003.6000-1.00003.7000-1.00003.8000-1.00003.9000-1.00004.0000-1.0000图形及代码如下:MATLAB微分方程数值解如何精确定位特定一点处的解 在不知道结果时间的时候是需要先设定一个比较大的时间范围计算的但是并不需要将整个范围的结果都算出来再插值这个时候可以设定触发事件函数在一定条件下停止计算用odeset可以为ode45求解器设定触发事件的函数详细的用法要仔细查看matlab的帮助文件,这里我以你的题目,举个例子微分方程还是用你的函数fun在用ode45解方程之前,再写一个函数:事件触发函数eventfun,它的格式固定要返回三个值,这三个值的意思是当第一个值vaule的值到达0时,时间会触发而根据第二个值isterminal设置,触发时间会否终止求解第三个值是设置触发过0的方向function[value,isterminal,direction]=eventfun(t,x)value=x(1)-100;触发时间,当其值为0的时候,时间会触发isterminal=1;设为1时会,触发时间会停止求解器,设0时触发不影响工作direction=1;触发方向设1时是上升触发,设-1是下降触发,设0是双向触发end写好fun和eventfun之后,你就可以调用ode45解方程了但用ode45之前记得先用odeset,将触发函数加入哦op=odeset('Events',@eventfun);[T,X,Tend,Xend,evennum]=ode45(@fun,[0,15],[0 0],op);这样你看看,到达100米时,求解器就停住了细心的你注意,ode45多返回了Tend,Xend。matlab求解泛函微分方程数值解。急! 改动:function S=history(t)S=ones(3,1);改为 S=ones(4,1);OVER!PS.多翻翻help!用matlab 解这个简单微分方程的数值解,急 clcclear allclose all主程序:yy=dsolve('Dy=-y+t+1','y(0)=1','t')tt=linspace(0,1,1001);t是[0,0.001,0.002,.,1]for i=1:1001t=tt(i);f1(i)=eval(yy);endfigure(1)plot(tt,f1,'r')title('Ana')解析解画完数值解[ttt,f2]=ode45(@rigid,tt,1);figure(2)plot(tt,f2,'b')title('Num')存成rigid.mfunction dy=rigid(t,y)dy=-y+t+1;一共两个文件main.m,rigid.m,不明白可追问下面就是小编带给大家的如何用matlab解微分方程方法操作,希望能够给你们带来一定的帮助,谢谢大家的观看。在 Matlab 中,用大写字母 D 表示导数,Dy 表示 y 关于自变量的。求用matlab解如下微分方程的方法 [x,yz]=ode23(@(x,yz)[f(x,yz(1),yz(2));g(x,yz(1),yz(2))],[x0,xend],[y0,z0])用Matlab求微分方程数值解 你没给初值,我随便射了clear allclcf=(t,y)([y(2);(3*y(1)^2+cos(y(1)))/(3*y(2)^2)]);[t,Y]=ode45(f,[0 10],[1 1]);plot(t,Y(:,1),t,Y(:,2)),legend('X','dX/dt')matlab求解泛函微分方程数值解. 改动:function S=history(t)S=ones(3,1);改为 S=ones(4,1);OVER。PS.多翻翻help。请各位大侠指点一下,如何在MATLAB中求解随机微分方程dx=sinxdt+xdw的数值解,其中w是维纳过程。 可以clf;clear,clcdxdt=(t,x)sin(x(1))+x(1)*randn;x0=1;这里初值取1,可以自定tspan=[0 10];求解区间[t,val]=ode45(dxdt,tspan,x0);plot(t,val)grid onset(gca,'xtick',0:1:10,'ytick',1:.2:3.5)

#ode45#matlab#微分方程

随机阅读

qrcode
访问手机版