资源描述:
《matlab ode45和矩阵生成有向网络图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.Matlab中解常微分方程的ode45ode是专门用于解微分方程的功能函数,他有ode23,ode45,ode23s等等,采用的是Runge-Kutta算法。ode45表示采用四阶,五阶runge-kutta单步算法,截断误差为(Δx)^3。解决的是Nonstiff(非刚性)的常微分方程.是解决数值解问题的首选方法,若长时间没结果,应该就是刚性的,换用ode23来解.其他几个也是类似的用法使用方法[T,Y]=ode45(odefun,tspan,y0)odefun是函数句柄,可以是函数文件名,匿名函数句柄或内联函数
2、名tspan是区间[t0tf]或者一系列散点[t0,t1,...,tf]y0是初始值向量T返回列向量的时间点Y返回对应T的求解列向量[T,Y]=ode45(odefun,tspan,y0,options)options是求解参数设置,可以用odeset在计算前设定误差,输出参数,事件等[T,Y,TE,YE,IE]=ode45(odefun,tspan,y0,options)每组(t,Y)之产生称为事件函数。每次均会检查是否函数等于零。并决定是否在零时终止运算。这可以在函数中之特性上设定。例如以events或@even
3、ts产生一函数。[value,isterminal,direction]=events(t,y)其中,value(i)为函数之值,isterminal(i)=1时运算在等于零时停止,=0时继续;direction(i)=0时所有零时均需计算(默认值),+1在事件函数增加时等于零,-1在事件函数减少时等于零等状况。此外,TE,YE,IE则分别为事件发生之时间,事件发生时之答案及事件函数消失时之指针i。sol=ode45(odefun,[t0tf],y0...)sol结构体输出结果应用举例1求解一阶常微分方程程序:)(y
4、+3*t)/t^2;%定义函数tspan=[14];%求解区间y0=-2;%初值[t,y]=ode45(odefun,tspan,y0);plot(t,y)%作图title('t^2y''=y+3t,y(1)=-2,15、关键是将高阶转为一阶,odefun的书写.F(y,y',y''...y(n-1),t)=0用变量替换,y1=y,y2=y'...注意odefun方程定义为列向量dxdy=[y(1),y(2)....]程序:functionTestode45tspan=[3.94.0];%求解区间y0=[28];%初值[t,x]=ode45(@odefun,tspan,y0);plot(t,x(:,1),'-o',t,x(:,2),'-*')legend('y1','y2')title('y''''=-t*y+e^t*y''+3sin
6、2t')xlabel('t')ylabel('y')functiony=odefun(t,x)y=zeros(2,1);%列向量y(1)=x(2);y(2)=-t*x(1)+exp(t)*x(2)+3*sin(2*t);endend页.matlab练习程序(矩阵生成有向网络图) 早知道有向图和无向图差别没有想象中的大我就写到一起了。 函数中使用的arrow画箭头函数是在这个网站下的。%函数名netplot%使用方法输入请helpnetplot%无返回值%函数只能处理有向图%作者:tiandsp%最后修改:2012
7、.12.26functionnetplot(A,flag)页.%调用方法输入netplot(A,flag),无返回值%A为邻接矩阵或关联矩阵%flag=1时处理邻接矩阵%flag=2时处理关联矩阵%函数只能处理有向图ifflag==1%邻接矩阵表示有向图D_netplot(A);return;endifflag==2%关联矩阵表示有向图[mn]=size(A);%关联矩阵变邻接矩阵W=zeros(m,m);fori=1:na=find(A(:,i)~=0);ifA(a(1),i)==1W(a(1),a(2))=1;e
8、lseW(a(2),a(1))=1;endendD_netplot(W);return;end页.functionD_netplot(A)[nn]=size(A);w=floor(sqrt(n));h=floor(n/w);x=[];y=[];fori=1:h%使产生的随机点有其范围,使显示分布的更广forj=1:wx=[x10*rand(1)