资源描述
数值分析首次试做实验记录
———————————————————————————————— 作者:
———————————————————————————————— 日期:
26
个人收集整理 勿做商业用途
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
线性方程组的直接解法
实验学时
一、实验目的、要求
目的:掌握解线性方程组直接法(特别是顺序高斯消去法)的基本思想,熟悉其算法,加强编程能力和编程技巧,练习从数值分析的角度看问题。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性.
二、实验原理
用高斯消去法解线性方程组的基本思想是设法消去方程组的系数矩阵A的主对角线下的元素,而将线性方程组化为等价的上三角形方程组,然后再通过回代过程便可获得原方程组的解。
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件。
四、实验内容:
用高斯消去法求解下列方程组Ax=b,其中
A =【2 2 2
3 2 4
1 3 9】
b =【1.0000
0。5000
2。5000】
五、实验过程原始记录(数据、图表、计算等)
Matlab源代码:
function x =Gauss_solve(A, b)
[n, n] = size(A);
for k = 1 : n—1
if A(k,k)==0
disp('A is singular,stop.')
end
for i = k+1 : n
mik = A(i, k) / A(k, k);
b(i) = b(i) - mik * b(k);
for j=k+1:n
A(i, j) = A(i, j) — mik * A(k, j);
end
end
end
% back substitution
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
sum=0;
for j=i+1:n
sum=sum+A(i,j)*x(j);
end
x(i)=(b(i)-sum)/A(i,i);
End
六、实验结果及分析
在命令窗口输入相关数据,运行上面定义的函数Gauss_solve
〉〉A=[2 2 2;3 2 4;1 3 9]
A =
2 2 2
3 2 4
1 3 9
>〉b=[1;1/2;5/2]
b =
1.0000
0。5000
2.5000
>〉x = Gauss_solve(A, b)
x =
-0。5000
1。0000
0
结果分析:根据顺序高斯消去法的算法,使用Matlab编写了程序,对所给的题目进行了求解。利用高等代数中的基本内容,我们可以看出该程序能够成功求解所给的线性方程组。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
线性方程组的迭代解法
实验学时
一、实验目的、要求
目的:掌握解线性方程组几种常见的迭代解法的基本思想,熟悉其算法,练习引入迭代矩阵的形式来解决方程组。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性.
二、实验原理
用迭代法求解方程组的基本思想:首先对A进行分解,A=D-L—U,找出下三角阵L,再找出上对角阵U,还有主对角阵D,于是有
Jacobi迭代法的矩阵形式的迭代公式为x=inv(D)*(L+U)*x+inv(D)*b
Gauss—Seidel迭代法的矩阵形式的迭代公式x=inv(D-L)*U*x+inv(D-L)*b
利用迭代即可在循环中实现的原则来完成此方程组的求解。注意在编程时也可使用分量形式的迭代公式.
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件。
四、实验内容:
用Jacobi迭代法和G-S迭代法求方程组: AX=b,其中
A =【10 —1 2 0
-1 11 -1 3
2 —1 10 -1
0 3 —1 8】
b =【6
25
—11
15】
五、实验过程原始记录(数据、图表、计算等)
Jacobi迭代法的Matlab源代码:
function [iter,x]=Jacobi(A,b,x0,eps,M)
n=length(x0);
x=x0;
iter=0;
for k=1:M
for i=1:n
sum=0;
for j=1:n
if j~=i
sum=sum+A(i,j)*x0(j);%x0 stands for x_k
end
end
x(i)=(b(i)—sum)/A(i,i);% x stands for x_{k+1}
end
if norm(x—x0)〈eps
iter=k;
return
end
x0=x;
end
disp('超过最大迭代次数')
Gauss-Seidel迭代法的Matlab源代码:
function [iter,x]=GS(A,b,x0,eps,M)
n=length(x0);
iter=0;
for k=1:M
x=x0; % x stands for x_{k}, x0 stands for x_{k+1}
for i=1:n
if i==1
sum=0;
for j=2:n
sum=sum+A(i,j)*x0(j);
end
t=(b(i)—sum)/A(i,i);
x0(i)=t;
end% end i==1
if 1<i<n
sum=0;
for j=1:i—1
sum=sum+A(i,j)*x0(j);
end
for j=i+1:n
sum=sum+A(i,j)*x0(j);
end
t=(b(i)—sum)/A(i,i);
x0(i)=t;
end% end 1<i<n
if i==n
sum=0;
for j=1:n—1
sum=sum+A(i,j)*x0(j);
end
t=(b(i)-sum)/A(i,i);
x0(i)=t;
end% end i==n
end %end i
if norm(x-x0)<eps
x=x0;
iter=k;
return
end
end%end k
disp(’超过最大迭代次数’)
六、实验结果及分析
在命令窗口输入相关数据,运行上面定义的函数Jacobi
>〉A=[10 -1 2 0;-1 11 -1 3;2 -1 10 —1;0 3 -1 8]
A =
10 —1 2 0
—1 11 -1 3
2 —1 10 -1
0 3 —1 8
>>b=[6;25;-11;15]
b =
6
25
-11
15
>〉x0=[0;0;0;0]
x0 =
0
0
0
0
>〉M=100
M =
100
>>eps=1e—4
eps =
1。0000e—004
>>[iter,x]=Jacobi(A,b,x0,eps,M)
iter =
13
x =
1.0000
2。0000
-1.0000
1。0000
然后运行上面定义的函数GS
>〉[iter,x]=GS(A,b,x0,eps,M)
iter =
6
x =
1。0000
2.0000
-1.0000
1.0000
结果分析:根据Jacobi迭代法和Gauss—Seidel迭代法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。利用高等代数中的基本内容,我们可以看出这两个程序都能够成功求解所给的线性方程组。从理论学习中我们知道,本题中的系数矩阵A为按行严格对角占优矩阵,所以理论上来说,Jacobi迭代法和Gauss-Seidel迭代法都应收敛,而且Gauss—Seidel迭代法的收敛速度应该更快。从实验我们可以得到同样的结论,所以理论分析和试验的结果是相吻合的。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
解非线性方程的迭代法
实验学时
一、实验目的、要求
目的:掌握解非线性方程的几种常见的迭代解法的基本思想,熟悉其算法,加深理解迭代法的真谛,掌握其中的规律。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。
二、实验原理
二分法的基本原理为将给定的初始有根区间逐步分半,直到找到满足一定精度要求的解,其基本思想为:对当前的有根区间,取其中点作为真解的近似值,若满足精度要求则停止计算,否则,从得到的两个小区间中选择一个作为新的有根区间,重复上述过程.程序中重要的是循环语句的使用和有根区间端点的判断。
牛顿法是一种非常重要的不动点迭代方法,对于不动点迭代而言,最重要的是迭代函数的构造。Newton法的迭代函数的构造依据是“由当前点的切线来代替原曲线,将该切线与x轴的交点作为下一个迭代点”.编程时注意用循环语句来实现迭代过程.
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件。
四、实验内容:
在区间[1,3]用二分法求.
用牛顿法解方程。
五、实验过程原始记录(数据、图表、计算等)
二分法的Matlab源代码:
function f=fun(x)
f=2^(—x)+exp(x)+2*cos(x)-6;
function [iter,x]=bisection(a,b,eps)
funa=fun(a);
funb=fun(b);
if funa*funb>=0
disp('Error,please give the correct initial points a and b!');
end
k=0;% k stands for the iteration
while 1
c=(a+b)/2;
func=fun(c);
k=k+1;
if (abs(c-a)<=eps)|(abs(func)〈=eps)
x=c;
iter=k;
return;
end
if funa*func〈0
b=c;
else
a=c;
end
End
Newton法的Matlab源代码:
function f=fun(x)
f=exp(x)—1.5-atan(x);
function f=fun_derivative(x)
f=exp(x)—1/(1+x^2);
function [iter,x]=newton_equation(x0,M,eps1,eps2)
iter=0;
v=fun(x0);
if abs(v)〈eps2
x=x0;
return
end
for k=1:M
x1=x0—v/fun_derivative(x0);
v=fun(x1);
iter=iter+1;
if (abs(x1—x0)〈eps1)|(abs(v)〈eps2)
x=x1;
return
end
x0=x1;
end
End
六、实验结果及分析
在命令窗口输入相关数据,运行函数bisection,得
>> a=1
a =
1
>〉 b=3
b =
3
>> eps=1e-4
eps =
1.0000e—004
〉〉 [iter,x]=bisection(a,b,eps)
iter =
15
x =
1.8294
〉> fun(x)
ans =
9。4896e—005
在命令窗口输入相关数据,运行函数newton_equation得
>〉x0=-7
x0 =
-7
>>M=20
M =
20
>〉eps1=1e-3
eps1 =
1。0000e—003
>>eps2=1e—5
eps2 =
1.0000e—005
〉〉[iter,x]=newton_equation(x0,M,eps1,eps2)
iter =
4
x =
—14.1011
>>fun(x)
ans =
—7.9958e-007
结果分析:根据二分法的算法和牛顿法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。从结果我们可以看出,这两种算法都对所给的非线性方程成功地给予了求解,从而说明了这两种算法的可行性与有效性.事实上,我们可以进一步实验,针对同一道题目用两种不同的方法求解,从而进一步明确两种方法各自的特点:二分法简单,有全局收敛性,但收敛速度比较慢;牛顿法解单根问题时可保证局部二阶的收敛性质。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
解非线性方程组的迭代法
实验学时
一、实验目的、要求
目的:掌握解非线性方程组的迭代法(重点是牛顿法)的基本思想,熟悉其算法,加深理解迭代法的真谛,掌握其中的规律。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性.
二、实验原理
解非线性方程组的牛顿法的迭代公式为
其中,表示的Jacobi矩阵,即
注意用循环语句来实现迭代过程。
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件.
四、实验内容:
用牛顿法求解非线性方程组
五、实验过程原始记录(数据、图表、计算等)
该方程组可等价写成,其中
。
Matlab源代码:
%程序funf。m给出了非线性方程组所对应的非线性函数
function f=funf(x)
f=[—cos(x(1))/81+x(2)^2/9+sin(x(3))/3—x(1);
sin(x(1))/3+cos(x(3))/3—x(2);
—cos(x(1))/9+x(2)/3+sin(x(3))/6—x(3)];
%程序发funJ。m给出了非线性函数的雅可比矩阵
function J=funJ(x)
J=[sin(x(1))/81-1 x(2)*2/9 cos(x(3))/3;
cos(x(1))/3 -1 -sin(x(3))/3;
sin(x(1))/9 1/3 cos(x(3))/6-1];
%程序Newton.m为解非线性方程组的牛顿法的主程序
function [m,r]=Newton(x0,eps)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% x0 为初始迭代点
% eps 为误差容限
% r 最终所得的近似解
% m 迭代次数
n = length(x0);
Fx= funf(x0);
J=funJ(x0);
r=x0;
m=0;
fprintf(’\n 第%d次迭代所得x的值: \n’,m);
disp(x0’);
for i=1:1000
d=—inv(J)*Fx;
x=x0+d;
x0=x;
Fx=funf(x0);
J=funJ(x0);
fprintf(’\n 第%d次迭代所得x的值: \n',i);
disp(x0');
if norm(d)〈eps
r=x;
m=i;
return
end
end
六、实验结果及分析
实验结果:
在命令窗口输入相关数据,运行上面定义的函数Newton
〉〉 x0=[0;0;0]
>> eps=1e-4
〉> [m,r]=Newton(x0,eps)
第0次迭代所得的x的值:
0 0 0
第1次迭代所得的x的值:
—0。0129 0.3290 —0.0017
第2次迭代所得的x的值:
-0。0000 0.3333 -0.0000
第3次迭代所得的x的值:
0.0000 0.3333 0.0000
m =
3
r =
0.0000
0。3333
0.0000
结果分析:根据解非线性方程组的牛顿法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。从结果我们可以看出,该算法对所给的非线性方程组成功地给予了求解,从而说明了解非线性方程组的牛顿法的可行性与有效性。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
解非线性方程组的迭代法
实验学时
一、实验目的、要求
目的:掌握解非线性方程组的迭代法(重点是牛顿法)的基本思想,熟悉其算法,加深理解迭代法的真谛,掌握其中的规律。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。
二、实验原理
解非线性方程组的牛顿法的迭代公式为
其中,表示的Jacobi矩阵,即
注意用循环语句来实现迭代过程.
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件.
四、实验内容:
用牛顿法求解非线性方程组
五、实验过程原始记录(数据、图表、计算等)
该方程组可等价写成,其中
。
Matlab源代码:
%程序funf.m给出了非线性方程组所对应的非线性函数
function f=funf(x)
f=[—cos(x(1))/81+x(2)^2/9+sin(x(3))/3-x(1);
sin(x(1))/3+cos(x(3))/3-x(2);
-cos(x(1))/9+x(2)/3+sin(x(3))/6—x(3)];
%程序发funJ.m给出了非线性函数的雅可比矩阵
function J=funJ(x)
J=[sin(x(1))/81—1 x(2)*2/9 cos(x(3))/3;
cos(x(1))/3 —1 —sin(x(3))/3;
sin(x(1))/9 1/3 cos(x(3))/6-1];
%程序Newton。m为解非线性方程组的牛顿法的主程序
function [m,r]=Newton(x0,eps)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% x0 为初始迭代点
% eps 为误差容限
% r 最终所得的近似解
% m 迭代次数
n = length(x0);
Fx= funf(x0);
J=funJ(x0);
r=x0;
m=0;
fprintf(’\n 第%d次迭代所得x的值: \n',m);
disp(x0');
for i=1:1000
d=—inv(J)*Fx;
x=x0+d;
x0=x;
Fx=funf(x0);
J=funJ(x0);
fprintf(’\n 第%d次迭代所得x的值: \n’,i);
disp(x0’);
if norm(d)<eps
r=x;
m=i;
return
end
end
六、实验结果及分析
实验结果:
在命令窗口输入相关数据,运行上面定义的函数Newton
〉> x0=[0;0;0]
〉〉 eps=1e—4
〉〉 [m,r]=Newton(x0,eps)
第0次迭代所得的x的值:
0 0 0
第1次迭代所得的x的值:
-0。0129 0.3290 —0.0017
第2次迭代所得的x的值:
-0.0000 0.3333 -0。0000
第3次迭代所得的x的值:
0.0000 0。3333 0.0000
m =
3
r =
0.0000
0.3333
0。0000
结果分析:根据解非线性方程组的牛顿法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解.从结果我们可以看出,该算法对所给的非线性方程组成功地给予了求解,从而说明了解非线性方程组的牛顿法的可行性与有效性。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
插值多项式的构造
实验学时
一、实验目的、要求
实验目的:已知一组数据,学会如何构造该组数据的插值多项式函数,了解利用插值多项式来逼近函数的重要思想,重点掌握Lagrange插值多项式和牛顿插值多项式的构造方法。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。
二、实验原理
Lagrange插值多项式的构造原理:我们首先需要构造插值基函数,(注意基函数存在一定的规律性),在此基础之上构造Lagrange插值多项式函数,进而求近似值。
牛顿插值多项式的构造具有很强的规律性,我们首先根据所给的数据构造差商表,然后在此基础上构造插值多项式。
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件。
四、实验内容:
1、已知函数表
xi 1 2 4 5
yi 16 12 8 9
求出其Lagrange插值多项式,并由此计算x=1。2处的近似值.
2、构造适合下列数据表的牛顿插值公式:
x
—1
0
1
3
y
-1
1
3
5
五、实验过程原始记录(数据、图表、计算等)
针对习题1的Lagrange 插值多项式的Mathematica源代码:
r0[x_,x0_,a_,b_,c_]:=(x—a)*(x-b)*(x-c)/((x0-a)*(x0-b)*(x0-c))
L3[x_]:=r0[x,1,2,4,5]*16+r0[x,2,1,4,5]*12+r0[x,4,1,2,5]*8+r0[x,5,1,2,4]*9;
L3[x]//N
Simplify[%] %对结果进行展开
L3[1.2]//N %求x=1。2处的近似值
针对习题2的Newton插值多项式的Matlab源代码:
disp('构造适合下列数据表的牛顿插值公式:’)
disp(’ x —1 0 1 3 ')
disp(’ y —1 1 3 5’)
%三次牛顿插值公式为:
%P3=f(x0)+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x—x1)+f[x0,x1,x2,x3](x-x0)%(x-x1)(x—x2)
X= [—1 0 1 3];
Y= [—1 1 3 5];
CS=[100,100,100;100,100,100;100,100,100]; %构造差商表
for i=1:1:3
CS(1,i)=( Y(i+1)—Y(i) )/( X(i+1)-X(i) );
end
for i=1:1:2
CS(2,i)=( CS(1,i+1)—CS(1,i) )/( X(i+2)-X(i) );
end
CS(3,1)=( CS(2,2)-CS(2,1) )/( X(4)—X(1) );
CS %构造差商表
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syms P3
syms x
syms b
P3=Y(1); %构造Newton插植多项式
a=0;
b=( x—X(1) );
for i=1:1:3
a=CS(i,1);
P3=P3 + a*(b);
b=(b) * ( x—X(i+1) );
end %构造Newton插植多项式
fprintf('\n求得牛顿插值公式为:’)
P3
fprintf(’/****************************************/')
六、实验结果及分析
习题1的实验结果:
1.33333 (5。 -1. x) (—4.+x) (-2.+x)+2. (-5.+x) (-4.+x) (—1.+x)+1。33333 (5。 —1。 x) (—2.+x) (—1。+x)+0.75 (-4.+x) (-2。+x) (—1.+x)
0.0833333x^3+0。0833333x^2—4。83333x+20.6667
15。1307
习题2的实验结果:
CS= 2.0000 2.0000 2。0000
0 —0.3333 100.0000
-0。0833 100。0000 100.0000
P3= 1+2*x—1/12*(x+1)*x*(x-1)
结果用图形表示为:
结果分析:根据Lagrange插值多项式和牛顿插值多项式的构造方法,分别使用Mathematica和Matlab编写了程序,并对所给的题目进行了求解。从结果我们可以看出,这两种方法可以成功地构造插值多项式.我们还可以针对同一道题目,用这两种不同的方法进行求解,比较结果的一致性.值得注意的是我们可以直接调用Mathematica中有函数InterpolatingPolynomial[]来直接实现插值函数的构造,并利用误差估计公式进行误差估计。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
数值积分
实验学时
一、实验目的、要求
目的:利用各种数值方法近似求定积分。
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。
二、实验原理
首先给出关于被积函数的表达式,然后根据Simpson公式和梯形公式求值.
1. Simpson公式:。
2.梯形公式: 。
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件.
四、实验内容:
已知,用Simpson公式和梯形公式分别求值
五、实验过程原始记录(数据、图表、计算等)
被积函数的Matlab源代码
function y=f(x)
y=4/(1+x.^2);
用Simpson公式和梯形公式近似求解的Matlab源代码:
disp('已知 y=4/(1+x.^2), ’)
disp('用辛甫生公式和梯形公式分别求积分值PI=int(y,x,0,1)')
%辛甫生公式 f(x)在[a,b]上的积分为:(b—a)/6*( f(a)+f(b)+4*f( (a+b)/2) );
%梯形公式 f(x)在[a,b]上的积分为:(b—a)/2*( f(a)+f(b) );
fprintf('\n方法一:辛甫生公式计算\n’)
b=1;
a=0;
PI=(b-a)/6*( f(a)+f(b)+4*f( (a+b)/2) )
fprintf(’\n方法二:梯形公式计算\n')
PI=(b—a)/2*( f(a)+f(b) )
六、实验结果及分析
实验结果:
Simpson公式的计算结果为:3。1333
梯形公式的计算结果为:3
结果分析:本定积分的精确值为PI,我们分别用Simpson公式和梯形公式进行了求解.理论上来说,Simpson公式比梯形公式的精度要高,数值试验的结果也表明Simpson公式的计算结果比梯形公式的计算结果更接近真解,从而说明了理论分析和数值试验结果的一致性。
实验中心(室)验收审查意见
实验中心(室)主任签字:
首次试做实验记录
实验中心(室): 年 月 日
实验课程名称
数值分析
面向专业
信息与计算科学
总学时数
实验项目名称
常微分方程初值问题的数值解法
实验学时
一、实验目的、要求
目的:了解求解常微分方程初值问题的常见的各种数值思想,并利用各种数值方法近似求解常微分方程的初值问题.
要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。
二、实验原理
1. Euler 方法的公式为
,
2. 预估—校正方法的公式为
,,
,
,
由Euler方法和预估—校正方法的公式很容易看出,只要作一个循环即可完成相关的操作。
三、使用仪器、材料
计算机一台,Matlab、C、Mathematica等软件.
四、实验内容:
已知常微分方程的初值问题为
用Euler方法和预估-校正方法求解该问题,步长均取。
五、实验过程原始记录(数据、图表、计算等)
Euler方法的Mathematica源代码
f[x_,y_]:=y—2x/y;
x=0;y=1;h=0。1;
While[x+h〈=1,y=y+h*f[x,y];x=x+h;Print[“x=",x,””,“y=",y,””]]
预估-校正方法的Mathematica源代码
x[0]=0;y[0]=1;h=0。1;x[n_]:=n*h;
f[u_,v_]:=v—2u/v;
K1[n_]:=f[x[n-1],y[n-1]];
K2[n_]:=f[x[n—1]+h,y[n-1]+h*K1[n]];
y[n_]:=y[n—1]+h/2*(K1[n]+K2[n]);
Table[{x
展开阅读全文