数值分析课程设计。
题目:常微分方程的数值解法。
组员:邓全飞 201120320105
许曦 201120320108
熊鲁平 201120320203
余佳明 201120320206
专业:信息与计算科学
指导老师:刘唐伟
一、摘要 3
二、设计目的 3
三、理论基础 3
1.欧拉公式【3】 3
2.改进euler方法【3】 3
3.三阶龙格-库塔方法【3】 3
4.四阶龙格-库塔方法【3】 4
四、程序**及运算结果 4
1、用欧拉法求解 5
2、用改进欧拉法求解: 6
3、用3阶龙格—库塔求解 7
4、 用4阶龙格—库塔求解 9
6、欧拉方法与改进欧拉方法、3阶龙格-库塔法以及4阶龙格-库塔法得出的解得比较。 10
五、数值分析设计的gui界面 13
六、结果分析 14
七、设计心得 14
八、参考文献 14
一、摘要。在matlab环境下熟悉的运用计算机编程语言并结合龙格-库塔法的理论基础对常微分方程初值问题进行求解,在运行完程序后以及对运行结果做出各方面的分析和比较。
二、设计目的。
用熟悉的计算机语言编程上机完成用欧拉方法、改进欧拉方法、3阶龙格-库塔法以及4阶龙格-库塔法求解常微分方程初值问题。
三、理论基础。
1.欧拉公式【3】
在点将作taylor展开,得。
那么当h充分小时,略去误差项,用近似替代、近似替代,并注意到,便得。
上述方法称为euler方法。
2.改进euler方法【3】
在应用梯形方法的迭代公式进行运算时,每迭代一次都要重新计算函数的值,且还要判断何时可以终止或转下一步计算。为了控制计算量和简化算法,通常只迭代一次就转入下一步计算。具体说,我们先用euler公式求得一个初步的近似值,称之为**值,然后用梯形方法的迭代公式作一次迭代得,即将校正一次,这样建立的**-校正方法称之为改进的euler方法:
**:,校正:.
3.三阶龙格-库塔方法【3】
类似前面改进的euler方法公式的推导方法,将在处作taylor展开,然后再将在处作taylor展开,只要将两个展开式前四项相同便有。于是得到三阶龙格-库塔公式为:
4.四阶龙格-库塔方法【3】
类似前面三阶龙格-库塔的推导方法,如果每步计算四次函数f(x,y)的值,完全类似的,可以导出局部截断误差为的四阶龙格-库塔公式,其公式为:
四、程序**及运算结果。
用欧拉方法、改进欧拉方法、3阶龙格-库塔法以及4阶龙格-库塔法求解常微分方程初值问题:
精确解为:y0=[ 2.0000 -1.
9802 -1.9231 -1.8349 -1.
7241 -1.6000 -1.4706 -1.
3423 -1.2195 -1.1050 -1.
0000]
精确解图形。
1、用欧拉法求解。
程序如下:建立函数文件。
function [x,y]=cwfa1(fun,x_span,y0,h)
x=x_span(1):h:x_span(2);
y(1)=y0;
for n=1:length(x)-1
y(n+1)=y(n)+h*feval(fun,x(n),y(n));
endx=x';y=y';
在matlab输入以下程序:
> clear all
> fun=inline(' y^2*x ')
> [x,y]=cwfa1(fun,[0,1],-2,0.1);
> [x,y]
> plot(x,y,'r+-'ans =
结果及其图象:
图1 欧拉法解。
2、用改进欧拉法求解:
程序如下:建立函数文件。
function [x,y]=cwfa2(fun,x_span,y0,h)
x=x_span(1):h:x_span(2);
y(1)=y0;
for n=1:length(x)-1
k1=feval(fun,x(n),y(n));
y(n+1)=y(n)+h*k1;
k2=feval(fun,x(n+1),y(n+1));
y(n+1)=y(n)+h*(k1+k2)/2;
endx=x';y=y';
在matlab输入以下程序:
> clear all
> fun=inline(' y^2*x');
> [x,y]=cwfa2(fun,[0,1],-2,0.1);
> [x,y]
> plot(x,y,'r+-'ans =
结果及其图像:
图3改进欧拉解。
3、用3阶龙格—库塔求解。
程序如下:建立函数文件。
function [x,y]=cwfa4(fun,x_span,y0,h)
x=x_span(1):h:x_span(2);
y(1)=y0;
for n=1:length(x)-1
k1=feval(fun,x(n),y(n));
k2=feval(fun,x(n)+h/2,y(n)+h/2*k1);
k3=feval(fun,x(n)+h,y(n)+h*(2*k2-k1));
y(n+1)=y(n)+h*(k1+4*k2+k3)/6;
endx=x';y=y';
在matlab输入以下程序:
clear all;
fun=inline(' y^2*x');
x,y]=cwfa4(fun,[0,1],-2 ,0.1);
x,y] plot(x,y, 'b*-'ans =
结果及图像:
图3 3阶龙格-库塔解。
4、 用4阶龙格—库塔求解。
程序如下:建立函数文件。
function [x,y]=cwfa3(fun,x_span,y0,h)
x=x_span(1):h:x_span(2);
y(1)=y0;
for n=1:length(x)-1
k1=feval(fun,x(n),y(n));
k2=feval(fun,x(n)+h/2,y(n)+h/2*k1);
k3=feval(fun,x(n)+h/2,y(n)+h/2*k2);
k4=feval(fun,x(n+1),y(n)+h*k3);
y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;
endx=x';y=y';
在matlab输入以下程序:
> clear all;
> fun=inline(' y^2*x ')
> [x,y]=cwfa3(fun,[0,1],-2 ,0.1);
> [x,y]
> plot(x,y, 'b*-'ans =
结果及其图象:
图4 4阶龙格-库塔解。
6、欧拉方法与改进欧拉方法、3阶龙格-库塔法以及4阶龙格-库塔法得出的解得比较。
x=0:0.1:1;
y0=[ 2.0000 -1.9802 -1.
9231 -1.8349 -1.7241 -1.
6000 -1.4706 -1.3423 -1.
2195 -1.1050 -1.0000]
y1=[ 2.0000 -2.0000 -1.
9600 -1.8832 -1.7768 -1.
6505 -1.5143 -1.3767 -1.
2440 -1.1202 -1.0073];
y2=[ 2.0000 -1.9800 -1.
9227 -1.8345 -1.7239 -1.
6001 -1.4711 -1.3432 -1.
2208 -1.1066 -1.0018];
奥数 五年级解方程练习题
五年级。一 解方程 2 解方程 3.2x 9 23 3 5x 4 45 3x 24 5x 12 58 5x 43 x 2x 15 5 2x 3 20 3 8 x 2 18 1.5x 2x 2.8 8.4 4 x 2 7.6 2.4 5x 1.8 1.2 6.4 6.8 1.2 x 10.8 x 10...