大佬救命这matlab题怎么做? 5
【问题】常微分方程数值解问题。用预估校正Euler法,求解初值问题。
求出步长h=0.1的所有点的值,并绘制图形。
【求解方法】用预估校正Euler法来求解,其方法是:
第一步,根据y(0)=1边界值,通过折线法计算,提供初值,即
上述式(1)也就是预报公式。
第二步,根据初值,通过梯形法计算,得到较精确的值,即
上述式(2)也就是校正公式。
这里,yn—表示y(xn)的近似值;h=x(i+1)-x(i)—表示步长
第三步,按上述循环计算,计算当x分别等于0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1的y(x)值。
第四步,根据x和y值,进行绘制该微分方程的数值解曲线。
【求解过程】
通过计算,得到微分方程的数值解
x =[0 0.1 0.20.30.4 0.50.6 0.7 0.8 0.91.0]
y =[1 1.0959 1.1841 1.26621.3434 1.4164 1.4860 1.5525 1.6165 1.6782 1.7379]
根据这些点,就可以绘制其图形。
【matlab求解】求解步骤:
第一步,根据预估校正Euler法的迭代式,编写其函数,如Euler_Cauchy(func,x0,y0,xf,h)
这里,func——表示微分方程,x0,y0——表示微分方程初始值,xf——表示x的终值,hf——表示步长
第二步,编写微分方程函数,即
function f=func(x,y);
f(1)=y-2*x/y;
f=f(:);
end
第三步,编写主程序,即
y0=1; %初值
x0=0;xf=1; %x的范围
n=10; %等份
h=(xf-x0)/n %步长
[t,x]=Euler_Cauchy(@func,x0,y0,xf,h); %预估校正Euler法计算
plot(x,y,'ks-') %绘制函数图
tu on %绘制坐标区网格线
xlabel('x'),ylabel('y(x)') %标注坐标轴名称
第四步,运行后,即可得到如下图形。
【数值解图形分析】从上述图形中,可以看到得到的数值解与精确解比较,精度较高的顺序依次是:
欧拉法→改进的欧拉法(预估校正Euler法)→龙格-库塔法→解析解
【常微分方程数值解方法】
1、欧拉法。欧拉方法(也叫折线法)是最早的一种数值方法。欧拉方法是一种数值解微分方程的方法,它是由瑞士数学家欧拉发明的。欧拉方法的基本思想是将微分方程转化为差分方程然后通过迭代求解差分方程来逼近微分方程的解。是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。它是一种解决数值常微分方程的最基本的一类显型方法。
欧拉方法的具体步骤如下:
首先将微分方程转化为差分方程,即将微分方程史的导数用差分代替,然后将差分方程史的未知函数值用前一时刻的函数值代替,得到一介递推公式。接着.从初始时刻开始,按照递推公式依次计算出每个时刻的函数值,直到达到所需的时刻为止。最后,将计算出的函数值作为微分方程的近似解。
欧拉法迭代式
2、预估校正欧拉法。预估校正欧拉法是对欧拉算法的改进方法。微分方程的本质特征是方程中含有导数项,数值解法的第一步就是设法消除其导数值,这个过程称为离散化。实现离散化的基本途径是用向前差商来近似代替导数,这就是欧拉算法实现的依据。
这个方法中,(1)式用折线法提供初值,称为预报公式。(2)式用梯形法给出较精确的值,称为校正公式。合称预报校正公式。