版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微分⽅程数值解笔记之1到6阶的Adams外插内插实现5.Adams⽅法,可实现1⾄6阶的外插/内插:5.1主函数,Adams外插法或内插法下的逐点误差,及误差对数函数图像:clc;clear;closeall;%%y'=y-2*x/y⽤Adams来求解验证%要求匿名函数⽀持向量化func=@(x,y)y-2*x./y;y_exa=@(x)sqrt(2.*x+1);x0=0;h=1/10;xmax=1;y0=1;x=x0:h:xmax;ifx(end)~=xmaxx=[x,x(end)+h];end%⾃变量method='in';%out外插法;in内插法ifstrcmp(method,'out')stra='外插法';elseifstrcmp(method,'in')stra='内插法';endaccuracy=5;%%h=1/10下逐点误差%参数:外插/内插,导函数,因变量初值,⾃变量左端点,步长,⾃变量右端点,精度y=Adams_auto(method,func,y0,x0,h,xmax,accuracy);y_rel=y_exa(x);err=abs(y_rel-y);figure(3);plot(x,y,'r-',x,y_rel,'b:');title(['Adams',stra,'下的数值解图像与解析解图像']);legend('数值解','解析解');disp('逐点误差:');disp(err);
%%求误差与步长的函数h=1/10*2.^(linspace(-3,-7,5));%步长过⼤过⼩精度都会降低hl=length(h);err=zeros(1,length(h));forj=1:hlx1=x0:h(j):xmax;y1=Adams_auto(method,func,y0,x0,h(j),xmax,accuracy);y_rel_1=y_exa(x1);err(j)=mean(abs(y_rel_1-y1));endlerr=log(err);lh=log(h);%求整体误差的阶,等于对数下的误差与步长函数的斜率Deh=(lerr(2:end)-lerr(1:end-1))./(lh(2:end)-lh(1:end-1));deh=mean(Deh);%画对数下误差函数与步长的函数图像figure(4);plot(log(h),log(err));title([num2str(round(deh)),'阶精度Adams',stra,'下的误差对数函数图像']);disp(['此⽅法具有',num2str(round(deh)),'阶精度']);5.2⼦函数1,实现具有1到6阶精度的外插及内插Adams⽅法:%求任意1到6阶的数值解;%⾸先利⽤外置函数RungeKutta_auto来求启动所需要的点,再⽤Adams外插法或者内插法来求剩余的点%预备⼯作:根据所选择⽅法求出所需启动点%外插法流程:(1)求系数a(2)求系数b(3)求剩余点%内插法流程:(1)求系数a(2)求系数b(3)求系数a*(4)求系数b*(5)求剩余点P(EC)...%注意事项:要求导函数⽀持向量化%完成时间:2022/3/20嫁佛幡function[u]=Adams_auto(method,func,y0,x0,h,xmax,accuracy)%[待求点]=[外插/内插,导函数,因变量初值,⾃变量左端点,步长,⾃变量右端点,精度]ay=accuracy;tol=1e-7;%精度%可容误差限度%⾃变量x=x0:h:xmax;ifx(end)~=xmax
x=[x,x(end)+h];endN=length(x);u=zeros(1,N);u(1)=y0;%⾃变量长度%因变量初始化%外插法ifstrcmp(method,'out')%单步法求启动点,ay阶精度需要ay个点u(1:ay)=RungeKutta_auto(ay,func,y0,x0,h,x(ay));%求系数a,b[a,b]=Adams_arg('out',ay);%求剩余点forj=ay:N-1u(j+1)=u(j)+h*func(x(j:-1:j-ay+1),u(j:-1:j-ay+1))*b;endelseifstrcmp(method,'in')&&ay>=2%单步法求启动点,ay阶精度需要ay-1个点,u(1:ay-1)=RungeKutta_auto(ay,func,y0,x0,h,x(ay-1));%求系数a,b[a,b]=Adams_arg('out',ay-1);%求系数a1,b1[a1,b1]=Adams_arg('in',ay);%求剩余点forj=ay-1:N-1%预估u_pre=u(j)+h*func(x(j:-1:j-ay+2),u(j:-1:j-ay+2))*b;%校准tol=1e-7delta=1;u_part=h*func(x(j:-1:j-ay+2),u(j:-1:j-ay+2))*b1(2:end);%避免重复运算whiledelta>tolu_new=u(j)+h*func(x(j+1),u_pre)*b1(1)+u_part;delta=abs(u_new-u_pre);u_pre=u_new;end
u(j+1)=u_new;endelsedisp('enteroutorin')endend5.3⼦函数2,单步法求具有1到6阶精度的启动点:function[u]=RungeKutta_auto(accuracy,func,y0,x0,h,xmax)%[待求点函数值]=[精度,导函数,因变量初值,⾃变量左端点,步长,因变量右端点]%参数初始化ay=accuracy;x=x0:h:xmax;ifx(end)~=xmaxx=[x,x(end)+h];end%⾃变量N=length(x);u=zeros(1,N);u(1)=y0;%⾃变量长度%因变量初始化acmax=7;%最⾼精度需要的维度a=zeros(1,acmax);b=zeros(acmax,acmax-1);c=zeros(1,acmax);ifay==1%Euler法c(1)=1;elseifay==2%中点法a(2)=1/2;b(2,1)=1/2;c(1:2)=[0,1];elseifay==3%Heun三阶⽅法a(2:3)=[1/3,2/3];b(2,1)=1/3;
b(3,2)=2/3;c(1:3)=[1/4,0,3/4];elseifay==4%经典四阶龙格库塔a(2:4)=[1/2,1/2,1];b(2,1)=1/2;b(3,2)=1/2;b(4,3)=1;c(1:4)=[1,2,2,1]/6;elseifay==5%Runge_Kutta_Fehlberga(2:6)=[1/4,3/8,12/13,1,1/2];b(2,1)=1/4;b(3,1:2)=[3/32,9/32];b(4,1:3)=[1932/2197,-7200/2197,7296/2197];b(5,1:4)=[439/216,-8,3680/513,-845/4104];b(6,1:5)=[-8/27,2,-3544/2565,1859/4104,-11/40];c(1:6)=[16/135,0,6656/12825,28561/56430,-9/50,2/55];%c(1:5)=[25/216,0,1408/2565,2197/4101,-1/5];%elseifay==6%byH.A.Lutherfrom"Anexplicitsixth-orderrunge-kuttaformula"a(2:7)=[1,1/2,2/3,(7-sqrt(21))/14,(7+sqrt(21))/14,1];b(2,1)=1;b(3,1:2)=[3/8,1/8];b(4,1:3)=[8,2,8]/27;b(5,1:4)=[3*(3*sqrt(21)-7),-8*(7-sqrt(21)),48*(7-sqrt(21)),-3*(21-sqrt(21))]/392;b(6,1:5)=[-5*(231+51*sqrt(21)),-40*(7+sqrt(21)),-320*sqrt(21),3*(21+121*sqrt(21)),392*(6+sqrt(21))]/1960;b(7,1:6)=[15*(22+7*sqrt(21)),120,40*(7*sqrt(21)-5),-63*(3*sqrt(21)-2),-14*(49+9*sqrt(21)),70*(7-sqrt(21))]/180;c(1:7)=[9,0,64,0,49,49,9]/180;endforj=1:N-1k1=func(x(j),u(j));k2=func(x(j)+h*a(2),u(j)+h*k1*b(2,1));k3=func(x(j)+h*a(3),u(j)+h*[k1,k2]*b(3,1:2)');
k4=func(x(j)+h*a(4),u(j)+h*[k1,k2,k3]*b(4,1:3)');k5=func(x(j)+h*a(5),u(j)+h*[k1,k2,k3,k4]*b(5,1:4)');k6=func(x(j)+h*a(6),u(j)+h*[k1,k2,k3,k4,k5]*b(6,1:5)');k7=func(x(j)+h*a(7),u(j)+h*[k1,k2,k3,k4,k5,k6]*b(7,1:6)');u(j+1)=u(j)+h*[k1,k2,k3,k4,k5,k6,k7]*c';endend5.4⼦函数3,求Adams外插法或内插法的系数a,b:function[A,B]=Adams_arg(method,n)%[Adams系数a,b]=[⽅法,精度n]%输出两个列向量%系数对⽐法PA=eP=zeros(n);A=zeros(n,1);B=zeros(n,1);forj=1:(n)P(j,j:end)=1./(1:(n+1-j));endifstrcmp(method,'out')e=ones(n,1);elseif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学信息技术第三册 第19课带变量的过程教学实录 北京版
- 2023九年级历史下册 第一单元 殖民地人民的反抗与资本主义制度的扩展第4课 日本明治维新教学实录 新人教版
- 六年级儿童节讲话稿10篇
- 银行的实习报告模板集锦五篇
- 2024六年级英语上册 Unit 2 School in Canada Lesson 11 Always Do Your Homework教学实录 冀教版(三起)
- 异位妊娠说课-教学课件
- 老师道歉信范文集合五篇
- 第3课 突破封锁线(教学实录)-教学实录2023-2024学年粤教版(B版)小学信息技术六年级下册
- 驾驶员工作述职报告6篇
- 教师学期个人总结2021汇报【10篇】
- 中建八局一公司新员工手册
- WB原理流程课件
- 设备管理的设备绩效绩效指标和评价体系
- 智能安防智慧监控智慧管理
- 2024年甘肃兰州生物制品研究所有限责任公司招聘笔试参考题库附带答案详解
- 保单检视报告活动策划
- 室外消火栓安装工程检验批质量验收记录表
- AI在药物研发中的应用
- 辽宁省沈阳市铁西区2023-2024学年七年级上学期期末考试英语试题(含听力)
- 于永正教育文集:于永正:我怎样教语文
- 美容外外科管理制度
评论
0/150
提交评论