clzm.net
当前位置:首页 >> 如何用mAtlAB求解微分方程组的数值解 >>

如何用mAtlAB求解微分方程组的数值解

在Matlab下输入:edit zhidao_feiying.m,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=zhidao_feiying(t,x) a=1; b=2; c=3; d=4; %%比方说 %f=a*x+y-z; %g=b*sin(x*y)-c*cos...

有个ode函数可以满足你的要求 例子可以见下面 http://zhidao.baidu.com/link?url=yry7DvW1fLoTzyZv5SBu7adYjpbg8ffIktl06L_mW-vrrT1vjOPi_k0qqHP9H64fr0kJt3AEu-Xcld9SIILp8K

如果是常微分方程,可以用dsolve函数。该函数可以解单变量常微分方程或者多变量常微分方程组,所以5个变量也不在话下。 调用格式如下: [y1,...,yN] = dsolve(eqns) solves the system of ordinary differential equations eqns and assigns the...

结果: 代码: clear allclc f=@(x,y)([y(2); 0.357*y(1)-0.1905*y(1)*y(2)]);[x,Y]=ode45(f,[0 100],[3 0]);plot(x,Y(:,1),x,Y(:,2)),legend('y','dy/dt')xlabel('x')

只需要提取x和y的前n个数字再plot,但必须保证x和y维数一致,下面是一个小例子 x=1:0.1:4; y=4:0.1:7; x1=x(1,1:10); y1=y(1,1:10); subplot(2,1,1) plot(x,y) subplot(2,1,2) plot(x1,y1) plot(x(1,1:10),y(1,1:10))

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function dxdt=zhidao_rk4_5(t,x) global a b c d r x1=x(1); x2=x(2); x3=x(3); x4=x(4); dxdt=[ a*(x2-x1)+x4; d*x1-x...

微分方程再得到数值解后将t的值反代回方程即可得到y(n)的值 至于t的值可以参考函数find的用法或者手动寻找,因为分散的数值点很可能没有正好经过300的点

>> syms t exp(-2*t)*(sin(2*t+sym(pi)/3)+cos(3*t)) ans = exp(-2*t)*(sin(2*t+1/3*pi)+cos(3*t)) >> y=dsolve(['D5y+13*D4y+64*D3y+152*D2y+176*Dy+80*y=',... 'exp(-2*t)*(sin(2*t+1/3*pi)+cos(3*t))'],'y(0)=1','y(1)=3','y(pi)=2',... 'Dy(...

用matlab求下面一阶微分方程组的数值解 此微分方程可以用ode45()函数求的其数值解。其解过程为

分段函数的一个简单方法就是分了几段就写几个函数: 定义一个主调函数、两个子函数 最后一个主调程序调用 function dx=fun(t,x) dx=zeros(2,1); f=; dc(t)=diff('f','t');%f就是你的c(t) dx(1)=x(2)*dc(t); dx(2)=x(1)+6*t^2;%0

网站首页 | 网站地图
All rights reserved Powered by www.clzm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com