数值分析实验报告--常微分方程的差分方法及并行方法
- 格式:pdf
- 大小:122.05 KB
- 文档页数:33
《数值分析》实验报告
实验七、常微分方程的差分方法
及并行方法
(一)欧拉方法
一. 实验目的 ① 通过这次实验我们解决了 Mat lab 编有关微分方程的诸多问题 例如欧拉方法求微分方程。使我不仅深入了解欧拉公式的具体概念,还进一步学会使用Matlab 来求解求复杂的常微分方程的方法等问题,使结果更加精准。让我体会到了高数和计算方法相结合的重要性,使我们对这门课更加感兴趣。
②让我们熟悉Mat lab 编 环 并要熟练掌握及应用
二. 实验要求
要求会用Mat lab 来编关于欧拉方法的程序并会运行处结果,根据下面的有关题目算出结果后并画出有关图形以及比较其误差。要求实验的准确性。
三. 实验内容
首先对欧拉方法要有深入的了解并会准确应用,再编写出Mat lab 的欧拉方法的程序后,运行并把得到的结果,误差分心和图形写在试验报告上。
四. 实验题目
例 用欧拉方法求初值问题
⎪⎩⎪⎨⎧=≤≤−==1
,10,0x y x y x dx dy 的数值解,分别取5002.0005.0,
=h ,并计算误差,画出精确解和数值解的图形.
五. 实验原理
原理:向前欧拉公式如下:10(,),0,1,...n n n n n y y hf x y n x x nh +=+=⎧⎨=+⎩
六. 设计思想
它是一种最简单的解微分方程的数值方法,它的基本想法和微分法的基本思想相同,是在小区间[x n ,x n+1]上利用差商
[y(x n+1)-y(x n )]/h 来代替方程左端的导数y’,而方程右端的已知函数f(x,y)中的x 在最先区间[x n ,x n+1]上取的值不同。
七. 对应程序及实验结果及图形
用向前欧拉公式求解常微分方程初值问题的数值解及其截断误差公式的MATLAB 主程序:
function f=funfcn(x,y)
f=x-y ;保存名为funfcn.m的M文件
在工作区输入S1=dsolve('Dy=x-y','y(0)=1','x')
输出为:
S1 =-1+x+2*exp(-x)
再输入主程序
function P=Eulerli1(x0,y0,b,h)
n=(b-x0)/h; X=zeros(n,1);
Y=zeros(n,1); k=1;
X(k)=x0; Y(k)=y0;
for k=1:n
X(k+1)=X(k)+h;
Y(k+1)=Y(k)+h*(X(k)-Y(k)); k=k+1;
end
y= -1+X+2*exp(-X); plot(X,Y,'mp',X,y,'b-')
grid
xlabel('自变量 X'), ylabel('因变量 Y')
title('用向前欧拉公式求dy/dx=x-y ,y(0)=1在[0,1]上的数值解和精确解y= -1+x+2*exp(-x)')
legend('h=0.05时,dy/dx=x-y ,y(0)=1在[0,1]上的数值解','精确解y= -1+x+2*exp(-x)')
jwY=y-Y;xwY=jwY./y;
k1=1:n;k=[0,k1];
P=[k',X,Y,y,jwY,xwY];
保存名为Eulerli1.m的M文件
在MATLAB工作窗口输入下面的程序
x0=0;y0=1;b=1;h=0.05;
P=Eulerli1(x0,y0,b,h)
legend('h=0.05时,dy/dx=x-y,y(0)=1在[0,1]上的数
值解','精确解y=-1+x+2*exp(-x)')
输出结果为
P =
0 0 1.0000 1.0000 0 0
1.0000 0.0500 0.9500 0.9525 0.0025
0.0026
2.0000 0.1000 0.9050 0.9097 0.0047
0.0051
3.0000 0.1500 0.8647 0.8714 0.0067
0.0076
4.0000 0.2000 0.8290 0.8375 0.0084
0.0101
5.0000 0.2500 0.7976 0.8076 0.0100
0.0124
6.0000 0.3000 0.7702 0.7816 0.0115
0.0147
7.0000 0.3500 0.7467 0.7594 0.0127
0.0167
8.0000 0.4000 0.7268 0.7406 0.0138
0.0186
9.0000 0.4500 0.7105 0.7253 0.0148
0.0203
10.0000 0.5000 0.6975 0.7131 0.0156
0.0219
11.0000 0.5500 0.6876 0.7039 0.0163
0.0232
12.0000 0.6000 0.6807 0.6976 0.0169
0.0242
13.0000 0.6500 0.6767 0.6941 0.0174
0.0251
14.0000 0.7000 0.6753 0.6932 0.0178
0.0257
15.0000 0.7500 0.6766 0.6947 0.0182