欢迎来到天天文库
浏览记录
ID:61775801
大小:1.32 MB
页数:14页
时间:2021-03-20
《二阶非线性常微分方程的打靶法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、二阶非线性常微分方程的打靶法计算思路主要分为以下五步:给定容许误差ε,迭代初始值γ1,对k=1,2,...做:(1)用四阶Runge-Kutta方法求解初值问,得出u1之后取其在γk的值,从而得到F(γk)=u1(b,γk)-β(2)若
2、F(γk)
3、<ε,则u1即为所求,跳出循环。否则:(3)用四阶Runge-Kutta方法求解初值问题由此得到F'(γk)=v1(b,γk)(4)用牛顿迭代计算γk+1,即(5)置k+1→k,转(1)直到误差在范围内。综上,实现了打靶法对非线性方程的拟合。接下来是每一步的代码:程序开头各变量的设置functionys=n
4、dbf(f,g,a,b,alfa,beta,n,eps,s0)%f为二阶导数,y''=f(x,y,y'),g为f对y求偏导后的%(a,b)为自变量迭代区间%alfa,beta为给定的边值条件%eps题目规定的精度%n为迭代次数%选取适当的s0的初值循环第一步x0=[alfa,s0];%选取合适的迭代初值y0=RK4(f,a,b,h,x0);%龙格库塔算出u1(γk)constant=y0(n,1)-beta;这里的y0(n,1)即是u1(γk,b),constant即为F(γk)循环第二步检验误差以跳出ifabs(constant)5、否合题意break;循环第三步得到F函数的导数u0=[0,1];u1=NRK4(g,a,b,h,u0,y0);通过偏导数求得的F’。循环第四步用牛顿迭代算出新的初值s0=s0-constant/u1(n,1);之后把所有的步奏放进一个while循环,跳出的条件即是constant小于给定的误差数值实验微分方程得到图像可以看出精度还是蛮高的与matlab自带函数的比较分别用Bvp4c函数和打靶法解微分方程:得到结论:图像上的拟合度差不多,但是具体做数值误差之后Bvp4c函数的精确度比较高。Bvp4c大概为1.0e-10,打靶法只有1.0e-4再改变迭代方6、法进行比较用二分法迭代γk此时不用再求F的导数,所以也不用输入偏导数g同样解上面的微分方程:图像的拟合度也比较高。数值误差方面和牛顿迭代在同一数量级,所以相差不大。算法总结牛顿打靶法精度比较高但是对于初值的选取要求很高,需要在精确值附近而且在开头需要手动输入偏导数谢谢观赏,祝大家期末满绩!
5、否合题意break;循环第三步得到F函数的导数u0=[0,1];u1=NRK4(g,a,b,h,u0,y0);通过偏导数求得的F’。循环第四步用牛顿迭代算出新的初值s0=s0-constant/u1(n,1);之后把所有的步奏放进一个while循环,跳出的条件即是constant小于给定的误差数值实验微分方程得到图像可以看出精度还是蛮高的与matlab自带函数的比较分别用Bvp4c函数和打靶法解微分方程:得到结论:图像上的拟合度差不多,但是具体做数值误差之后Bvp4c函数的精确度比较高。Bvp4c大概为1.0e-10,打靶法只有1.0e-4再改变迭代方
6、法进行比较用二分法迭代γk此时不用再求F的导数,所以也不用输入偏导数g同样解上面的微分方程:图像的拟合度也比较高。数值误差方面和牛顿迭代在同一数量级,所以相差不大。算法总结牛顿打靶法精度比较高但是对于初值的选取要求很高,需要在精确值附近而且在开头需要手动输入偏导数谢谢观赏,祝大家期末满绩!
此文档下载收益归作者所有