数值分析Matlab作业龙格库塔欧拉方法解二阶微分方程_第1页
数值分析Matlab作业龙格库塔欧拉方法解二阶微分方程_第2页
数值分析Matlab作业龙格库塔欧拉方法解二阶微分方程_第3页
数值分析Matlab作业龙格库塔欧拉方法解二阶微分方程_第4页
数值分析Matlab作业龙格库塔欧拉方法解二阶微分方程_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab 应用使用Euler和Rungkutta方法解臂状摆的能量方程背景 单摆是常见的物理模型,为了得到摆角的关于时间的函数,来描述单摆运动。由角动量定理我们知道化简得到 在一般的应用和计算中,只考虑摆角在5度以内的小摆动,因为可以吧简化为,这样比较容易解。实际上这是一个解二阶常微分方程的问题。在这里的单摆是一种特别的单摆,具有均匀的质量M分布在长为2的臂状摆上,使用能量法建立方程化简得到重力加速度取9.806651使用欧拉法令,这样降阶就把二阶常微分方程转化为一阶微分方程组,再利用向前Euler方法数值求解。 y(i+1)=y(i)+h*z(i); z(i+1)=z(i)+h*7.35499*cos(y(i);y(0)=0z(0)=0精度随着h的减小而更高,因为向前欧拉方法的整体截断误差与h同阶,(因为是用了泰勒公式)所以欧拉方法的稳定区域并不大。2. RK4-四阶龙格库塔方法使用四级四阶经典显式Rungkutta公式稳定性很好,RK4法是四阶方法,每步的误差是h5阶,而总积累误差为h4阶。所以比欧拉稳定。运行第三个程序:在一幅图中显示欧拉法和RK4法,随着截断误差的积累,欧拉法产生了较大的误差h=0.01h=0.0001,仍然是开始较为稳定,逐渐误差变大总结:RK4是很好的方法,很稳定,而且四阶是很常用的方法,因为到五阶的时候精度并没有相应提升。通过这两种方法计算出角度峰值y=3.,周期是1.。三个程序欧拉法clear;clch=0.00001;a=0;b=25;x=a:h:b;y(1)=0;z(1)=0;for i=1:length(x)-1 % 欧拉 y(i+1)=y(i)+h*z(i); z(i+1)=z(i)+h*7.35499*cos(y(i);endplot(x,y,r*);xlabel(时间);ylabel(角度);A=x,y;%y(find(y=max(y)%Num=(find(y=max(y)y,T=max(y);fprintf(角度峰值等于%d,y) %角度的峰值也就是fprintf(n) fprintf(周期等于%d,T*h) %周期legend(欧拉);龙格库塔方法先定义函数rightf_sys1.mfunction w=rightf_sys1(x,y,z) w=7.35499*cos(y);clear;clc;%set(0,RecursionLimit,500)h=0.01;a=0;b=25;x=a:h:b;RK_y(1)=0; %初值RK_z(1)=0; %初值for i=1:length(x)-1 K1=RK_z(i); L1=rightf_sys1(x(i),RK_y(i),RK_z(i); % K1 and L1 K2=RK_z(i)+0.5*h*L1; L2=rightf_sys1(x(i)+0.5*h,RK_y(i)+0.5*h*K1,RK_z(i)+0.5*h*L1); K3=RK_z(i)+0.5*h*L2; L3=rightf_sys1(x(i)+0.5*h,RK_y(i)+0.5*h*K2,RK_z(i)+0.5*h*L2); K4=RK_z(i)+h*L3; L4=rightf_sys1(x(i)+h,RK_y(i)+h*K3,RK_z(i)+h*L3); % K4 and L4 RK_y(i+1)=RK_y(i)+1/6*h*(K1+2*K2+2*K3+K4); RK_z(i+1)=RK_z(i)+1/6*h*(L1+2*L2+2*L3+L4); endplot(x,RK_y,b+);xlabel(Variable x); ylabel(Variable y); A=x,RK_y; y,T=max(RK_y);legend(RK4方法);fprintf(角度峰值等于%d,y) %角度的峰值也就是fprintf(n) fprintf(周期等于%d,T*h) %周期两个方法在一起对比使用跟上一个相同的函数rightf_sys1.mclear; clc; %清屏h=0.0001; a=0;b=25;x=a:h:b;Euler_y(1)=0; Euler_z(1)=0; %欧拉的初值RK_y(1)=0; RK_z(1)=0; %龙格库塔初值for i=1:length(x)-1 %先是欧拉法 Euler_y(i+1)=Euler_y(i)+h*Euler_z(i); Euler_z(i+1)=Euler_z(i)+h*7.35499*cos(Euler_y(i); %龙格库塔 K1=RK_z(i); L1=rightf_sys1(x(i),RK_y(i),RK_z(i); % K1 and L1 K2=RK_z(i)+0.5*h*L1; L2=rightf_sys1(x(i)+0.5*h,RK_y(i)+0.5*h*K1,RK_z(i)+0.5*h*L1); % K2 and L2 K3=RK_z(i)+0.5*h*L2; L3=rightf_sys1(x(i)+0.5*h,RK_y(i)+0.5*h*K2,RK_z(i)+0.5*h*L2); % K3 and L3 K4=RK_z(i)+h*L3; L4=rightf_sys1(x(i)+h,RK_y(i)+h*K3,RK_z(i)+h*L3); % K4 and L4 RK_y(i+1)=RK_y(i)+1/6*h*(K1+2*K2+2*K3+K4); RK_z(i+1)=RK_z(i)+1/6*h*(L1+2*L2+2*L3+L4); endplot(x,Euler_y,r-,x,RK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论