二阶非线性常微分方程的打靶法
二阶非线性常微分方程的打靶法 计算思路 主要分为以下五步: 给定容许误差ε,迭代初始值γ1,对k=1,2,...做: (1)用四阶Runge-Kutta 方法求解初值问,得出u1之后取其在γk的值,从而得到F(γk)=u1(b,γk)-β (2)若|F(γk)|<ε,则u1 即为所求,跳出循环。 否则: (3)用四阶Runge-Kutta 方法求解初值问题 由此得到F'(γk)=v1(b,γk) (4)用牛顿迭代计算γk+1,即 (5)置k+1→k,转(1)直到误差在范围内。 综上,实现了打靶法对非线性方程的拟合。 接下来是每一步的代码: 程序开头各变量的设置 function ys=ndbf(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) 循环第二步 检验误差以跳出 if abs(constant)