数值分析实验报告(共6篇)
篇1:数值分析实验报告
《数值分析》课程实验报告
实验名称 用二分法和迭代法求方程的根
成绩
一、实验目的
掌握利用二分法以及迭代法求方程近似根的方法,并学会运用 matlab 软件编写程序,求解出方程的根,对迭代法二分法进一步认识并灵活运用。
二、实验内容
比较求方程 5 0xx e 的根,要求精确到小数点后的第 4 位 1.在区间[0,1]内用二分法; 2.用迭代法1/5kxkx e,取初值00.25 x .三、算法描述
1、二分法:二分法是最简单的求根方法,它是利用连续函数的零点定理,将汗根区间逐次减半缩小,取区间的中点构造收敛点列{ }来逼近根 x.2、迭代法:迭代法是一种逐次逼近的方法,其步骤是首先给定一个粗糙的初始值,然后用一个迭代公式反复修正这个值,知道满足要求为止。
四、实验步骤1、二分法:
(1)计算 f(x)在区间[0,1]端点处的值 f(0)和 f(1)的值;
(2)计算 f(x)在区间【0,1】的中点(0+1)/2=1/2 处的值 f((a+b)/2);
(3)如果函数值 f(1/2)=0,则 1/2 是 f(x)=0 的实根,输出根 x,终止;否则继续转(4)继续做检验。由于 f(1/2)≠0,所以继续做检验。
(4)如果函数值 f(0)* f(1/2)<0,则根在区间[0,1/2]内,这时以 1/2 代表 1;否则以 1/2 代表 0;,此时应该用 1/2 代表 1.(5)重复执行(2)(3)(4)步,直到满足题目所要求的精度,算法结束。2、迭代法
(1)提供迭代初值25.00 x;(2)计算迭代值)(0 1x x ;
(3)检查|0 1x x |,若 | |0 1x x,则以1x代替0x转(2)步继续迭代;当 | |0 1x x时
终止计算,取作为所求结果。
五、程序
(1)二分法程序:
function y=bisection(fx,xa,xb,n,delta)
x=xa;fa=5*x-exp(x);
x=xb;fb=5*x-exp(x);
disp(“[
n
xa
xb
xc
fc
]”);
for i=1:n
xc=(xa+xb)/2;x=xc;fc=5*x-exp(x);
X=[i,xa,xb,xc,fc];
disp(X),if fc==0,end
if fc*fa<0
xb=xc;
else xa=xc;
end
if(xb-xa) end (2)迭代法程序: function y=diedai(fx,x0,n,delta) disp(“[ k xk ]”); for i=1:n x1=(exp(x0))/5; X=[i,x1]; disp(X); if abs(x1-x0) fprintf(“The procedure was successful”) return else i=i+1; x0=x1; end end 六、实验结果及分析 (1)二分法: 实验结果如下: [ n xa xb xc fc ] 1.0000 0 1.0000 0.5000 0.8513 2.0000 0 0.5000 0.2500 --0.0340 3.0000 0.2500 0.5000 0.3750 0.4200 4.0000 0.2500 0.3750 0.3125 0.1957 5.0000 0.2500 0.3125 0.2813 0.0815 6.0000 0.2500 0.2813 0.2656 0.0239 7.0000 0.2500 0.2656 0.2578 --0.0050 8.0000 0.2578 0.2656 0.2617 0.0094 9.0000 0.2578 0.2617 0.2598 0.0022 10.0000 0.2578 0.2598 0.2588 --0.0014 11.0000 0.2588 0.2598 0.2593 0.0004 12.0000 0.2588 0.2593 0.2590 --0.0005 13.0000 0.2590 0.2593 0.2592 --0.0001 14.0000 0.2592 0.2 593 0.2592 0.0002 15.0000 0.2592 0.2592 0.2592 0.0001 依据题目要求的精度,则需做二分十四次,由实验数据知 x=0.2592 即为所求的根 (2)迭代法: 实验结果如下: 根据题目精度要求,故所求根为 x=0.2592.对二分法和迭代法的观察和分析我们可以知道,二分法的优点是方法比较简单,编程比较容易,只是二分法只能用于求方程的近似根,不能用于求方程的复根,且收敛速度慢。而迭代法的收敛速度明显大于二分法的速度。 学 号: 学 院: 机 电 学 院 日 期: 2015 年 X 月X 日 目 录 实验一 函数插值方法 1 实验二 函数逼近与曲线拟合 5 实验三 数值积分与数值微分 7 实验四 线方程组的直接解法 9 实验五 解线性方程组的迭代法 15 实验六 非线性方程求根 19 实验七 矩阵特征值问题计算 21 实验八 常微分方程初值问题数值解法 24 实验一 函数插值方法 一、问题提出 对于给定的一元函数的n+1个节点值。试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。 数据如下: (1)0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多项式,和分段三次插值多项式,计算, 的值。(提示:结果为,)(2)1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange多项式,计算的,值。(提示:结果为,)二、要求 1、利用Lagrange插值公式 编写出插值多项式程序; 2、给出插值多项式或分段三次插值多项式的表达式; 3、根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何; 4、对此插值问题用Newton插值多项式其结果如何。Newton插值多项式如下: 其中: 三、目的和意义 1、学会常用的插值方法,求函数的近似表达式,以解决其它实际问题; 2、明确插值多项式和分段插值多项式各自的优缺点; 3、熟悉插值方法的程序编制; 4、如果绘出插值函数的曲线,观察其光滑性。 四、实验步骤(1)0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多项式,和分段三次插值多项式,计算, 的值。(提示:结果为,)第一步:先在matlab中定义lagran的M文件为拉格朗日函数代码为: function[c,l]=lagran(x,y)w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1 v=1;for j=1:n+1 if(k~=j)v=conv(v,poly(x(j)))/(x(k)-x(j));end end l(k,:)=v;end c=y*l;end 第二步:然后在matlab命令窗口输入: >>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382];>> lagran(x,y)回车得到: ans =121.6264-422.7503 572.5667-377.2549 121.9718-15.0845 由此得出所求拉格朗日多项式为 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在编辑窗口输入如下命令: >> x=[0.4 0.55 0.65 0.80,0.95 1.05];>> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.0845;>> plot(x,y)命令执行后得到如下图所示图形,然后 >> x=0.596;>> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.084 y =0.6262 得到f(0.596)=0.6262 同理得到f(0.99)=1.0547(2)1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange多项式,和分段三次插值多项式,计算的,值。(提示:结果为,)实验步骤: 第一步定义 function[c,l]=lagran(x,y)w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1 v=1;for j=1:n+1 if(k~=j)v=conv(v,poly(x(j)))/(x(k)-x(j));end end l(k,:)=v;end c=y*l;end 定义完拉格朗日M文件 第二步:然后在matlab命令窗口输入: >>>> x=[1 2 3 4 5 6 7];y=[0.368 0.135 0.050 0.018 0.007 0.002 0.001];>> lagran(x,y)回车得到: ans =0.0001-0.0016 0.0186-0.1175 0.4419-0.9683 0.9950 由此得出所求拉格朗日多项式为 p(x)=0.0001x6-0.0016x5+0.0186x4-0.1175x3+0.4419x2-0.9683x+0.9950 第三步:在编辑窗口输入如下命令: >> x=[1 2 3 4 5 6 7];>> y=0.0001*x.^6-0.0016*x.^5+0.0186*x.^4-0.1175*x.^3+0.4419*x.^2-0.9683*x+0.9950;>> plot(x,y)命令执行后得到如下图所示图形,然后 >> x=1.8;>> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.084 y =0.1650 得到f(0.596)=0.6262 同理得到f(6.15)=2.3644 五、实验结论 插值是在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点,它是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 实验二 函数逼近与曲线拟合 一、问题提出 从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t的拟合曲线。 t(分)0 5 10 15 20 25 30 35 40 45 50 55 0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64 二、要求 1、用最小二乘法进行曲线拟合; 2、近似解析表达式为; 3、打印出拟合函数,并打印出与的误差,; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、* 绘制出曲线拟合图。 三、目的和意义 1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系 四、实验步骤: 第一步先写出线性最小二乘法的M文件 function c=lspoly(x,y,m)n=length(x);b=zeros(1:m+1);f=zeros(n,m+1);for k=1:m+1 f(:,k)=x.^(k-1);end a=f'*f;b=f'*y';c=a\b;c=flipud(c);第二步在命令窗口输入: >>lspoly([0,5,10,15,20,25,30,35,40,45,50,55],[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64],2)回车得到: ans =-0.0024 0.2037 0.2305 即所求的拟合曲线为y=-0.0024x2+0.2037x+0.2305 在编辑窗口输入如下命令: >> x=[0,5,10,15,20,25,30,35,40,45,50,55];>> y=-0.0024*x.^2+0.2037*x+0.2305;>> plot(x,y)命令执行得到如下图 五、实验结论 分析复杂实验数据时,常采用分段曲线拟合方法。利用此方法在段内可以实现最佳逼近,但在段边界上却可能不满足连续性和可导性。分段函数的光滑算法,给出了相应的误差分析.给出了该方法在分段曲线拟合中的应用方法以及凸轮实验数据自动分段拟合。 实验三 数值积分与数值微分 一、问题提出 选用复合梯形公式,复合Simpson公式,Romberg算法,计算(1)(2)(3)(4)二、要求 1、编制数值积分算法的程序; 2、分别用两种算法计算同一个积分,并比较其结果; 3、分别取不同步长,试比较计算结果(如n = 10, 20等); 4、给定精度要求ε,试用变步长算法,确定最佳步长。 三、目的和意义 1、深刻认识数值积分法的意义; 2、明确数值积分精度与步长的关系; 3、根据定积分的计算方法,可以考虑二重积分的计算问题。 四、实验步骤 第一步:编写各种积分的程序 复合梯形程序如下: function I=TX(x,y)n=length(x);m=length(y);if n~=m error('The lengths of X and Y must be equal');return;end h=(x(n)-x(1))/(n-1);a=[1 2*ones(1,n-2)1];I=h/2*sum(a.*y);复合Simpson程序如下: function s = simpr1(f,a,b,n)h=(b-a)/(2*n);s1=0;s2=0;for k=1:10 x=a+h*(2*k-1);s1=s1+feval(f,x);end for k=1:(10-1)x=a+h*2*k;s2=s2+feval(f,x);end s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;end Romberg程序如下: function I = Romber_yang(fun,a,b,ep)if nargin<4 ep=1e-5;end;m=1;h=b-a;I=h/2*(feval(fun,a)+feval(fun,b));T(1,1)=I;while 1 N=2^(m-1);h=h/2;I=I/2;for i=1:N I=I+h*feval(fun,a+(2*i-1)*h);end T(m+1,1)=I;M=2*N;k=1;while M>1;T(m+1,k+1)=(4^k*T(m+1,k)-T(m,k))/(4^k-1);M=M/2;k=k+1;end if abs(T(k,k)-T(k-1,k-1)) 2、对于积分Ι=01sinXXdx,f(0)=1,梯形积分T=0.94607307,辛普森积分S=0.94607308,Romberg积分R=0.94607307。 3、对于积分Ι=01eX4+X2dx,梯形积分T=0.39081248,辛普森积分S=0.39081185,Romberg积分R=0.39081885。 4、对于积分Ι=01ln1+X1+X2dx,梯形积分T=0.27218912,辛普森积分S=0.27219844,Romberg积分R=0.27219827。 五、实验结论,通过本实验学会复合梯形公式,复合Simpson公式,Romberg公式的编程与应用,掌握MATLAB提供的计算积分的各种函数的使用方法。 实验四 线方程组的直接解法 一、问题提出 给出下列几个不同类型的线性方程组,请用适当算法计算其解。 1、设线性方程组 2、设对称正定阵系数阵线方程组 3、三对角形线性方程组 二、要求 1、对上述三个方程组分别利用Gauss顺序消去法与Gauss列主元消去法; 平方根法与改进平方根法; 追赶法求解(选择其一); 2、应用结构程序设计编出通用程序; 3、比较计算结果,分析数值解误差的原因; 4、尽可能利用相应模块输出系数矩阵的三角分解式。 三、目的和意义 1、通过该课题的实验,体会模块化结构程序设计方法的优点; 2、运用所学的计算方法,解决各类线性方程组的直接算法; 3、提高分析和解决问题的能力,做到学以致用; 4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。 四、实验步骤: 列主元高斯消去法的matlab的M文件程序 function [x,det,index]=Gauss(A,b)% 求线形方程组的列主元Gauss消去法,其中,% A为方程组的系数矩阵; % b为方程组的右端项; % x为方程组的解; % det为系数矩阵A的行列式的值; % index为指标变量,index=0表示计算失败,index=1表示计算成功。 [n,m]=size(A);nb=length(b);% 当方程组行与列的维数不相等时,停止计算,并输出出错信息。 if n~=m error('The rows and columns of matrix A must be equal!');return;end % 当方程组与右端项的维数不匹配时,停止计算,并输出出错信息 if m~=nb error('The columns of A must be equal the length of b!');return;end % 开始计算,先赋初值 index=1;det=1;x=zeros(n,1);for k=1:n-1 % 选主元 a_max=0;for i=k:n if abs(A(i,k))>a_max a_max=abs(A(i,k));r=i;end end if a_max<1e-10 index=0;return;end % 交换两行 if r>k for j=k:n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;end z=b(k);b(k)=b(r);b(r)=z;det=-det;end % 消元过程 for i=k+1:n m=A(i,k)/A(k,k);for j=k+1:n A(i,j)=A(i,j)-m*A(k,j);end b(i)=b(i)-m*b(k);end det=det*A(k,k);end det=det*A(n,n);% 回代过程 if abs(A(n,n))<1e-10 index=0;return;end for k=n:-1:1 for j=k+1:n b(k)=b(k)-A(k,j)*x(j);end x(k)=b(k)/A(k,k);end 然后在命令窗口输入 >> A=[4 2-3-1 2 1 0 0 0 0;8 6-5-3 6 5 0 1 0 0;4 2-2-1 3 2-1 0 3 1;0-2 1 5-1 3-1 1 9 4;-4 2 6-1 6 7-3 3 2 3;8 6-8 5 7 17 2 6-3 5;0 2-1 3-4 2 5 3 0 1;16 10-11-9 17 34 2-1 2 2;4 6 2-7 13 9 2 0 12 4;0 0-1 8-3-24-8 6 3-1];>> b=[5 12 3 2 3 46 13 38 19-21];>> gauss(A,b)ans = 1.0000-1.0000 0.0000 1.0000 2.0000 0.0000 3.0000 1.0000-1.0000 2.0000 高斯-约当消去法maltab的M文件程序 function [x,flag]=Gau_Jor(A,b)% 求线形方程组的列主元Gauss-约当法消去法,其中,% A为方程组的系数矩阵; % b为方程组的右端项; % x为方程组的解; [n,m]=size(A);nb=length(b);% 当方程组行与列的维数不相等时,停止计算,并输出出错信息。 if n~=m error('The rows and columns of matrix A must be equal!');return;end % 当方程组与右端项的维数不匹配时,停止计算,并输出出错信息 if m~=nb error('The columns of A must be equal the length of b!');return;end % 开始计算,先赋初值 flag='ok';x=zeros(n,1);for k=1:n % 选主元 max1=0;for i=k:n if abs(A(i,k))>max1 max1=abs(A(i,k));r=i;end end if max1<1e-10 falg='failure';return;end % 交换两行 if r>k for j=k:n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;end z=b(k);b(k)=b(r);b(r)=z;end % 消元过程 b(k)=b(k)/A(k,k);for j=k+1:n A(k,j)=A(k,j)/A(k,k);end for i=1:n if i~=k for j=k+1:n A(i,j)=A(i,j)-A(i,k)*A(k,j);end b(i)=b(i)-A(i,k)*b(k);end end end % 输出x for i=1:n x(i)=b(i);end 然后保存后在命令窗口输入: >> A=[4 2-4 0 2 4 0 0;2 2-1-2 1 3 2 0;-4-1 14 1-8-3 5 6;0-2 1 6-1-4-3 3;2 1-8-1 22 4-10-3;4 3-3-4 4 11 1-4;0 2 5-3-10 1 14 2;0 0 6 3-3-4 2 19];>> b=[0-6 20 23 9-22-15 45];>> Gau_Jor(A,b)ans = 121.1481-140.1127 29.7515-60.1528 10.9120-26.7963 5.4259-2.0185 五、实验结论 用LU法,调用matlab中的函数lu中,L往往不是一个下三角,但可以直接计算不用它的结果来计算,不用进行行变换。如果进行行变b也要变,这样会很麻烦。 实验五 解线性方程组的迭代法 一、问题提出 对实验四所列目的和意义的线性方程组,试分别选用Jacobi 迭代法,Gauss-Seidel迭代法和SOR方法计算其解。 二、要求 1、体会迭代法求解线性方程组,并能与消去法做以比较; 2、分别对不同精度要求,如由迭代次数体会该迭代法的收敛快慢; 3、对方程组2,3使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 三、目的和意义 1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较; 2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序; 3、体会上机计算时,终止步骤或k >(给予的迭代次数),对迭代法敛散性的意义; 4、体会初始解,松弛因子的选取,对计算结果的影响。 四、实验步骤 第一步编写实验所需的Jacobi迭代法,Gauss-Seidel迭代法,SOR迭代法的程序。 Jacobi迭代法: function [x,k,index]=J(A,b,ep,itmax)if nargin<4 itmax=100;end if nargin<3 ep=1e-5;end n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while 1 for i=1:n y(i)=b(i);for j=1:n if j~=i y(i)=y(i)-A(i,j)*x(j);end end if abs(A(i,i))<1e-10|k==itmax index=0;return;end y(i)=y(i)/A(i,i);end if norm(y-x,inf) function [x,k,index]=G(A,b,ep,itmax)if nargin<4 itmax=100;end if nargin<3 ep=1e-5;end n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while 1 y=x;for i=1:n z=b(i);for j=1:n if j~=i z=z-A(i,j)*x(j);end end if abs(A(i,i))<1e-10|k==itmax index=0;return;end z=z/A(i,i);x(i)=z;end if norm(y-x,inf) function [x,k,index]=SOR(A,b,ep,w,itmax)if nargin<5 itmax=100;end if nargin<4 w=1;end if nargin<3 ep=1e-5;end n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while 1 y=x;for i=1:n z=b(i);for j=1:n if j~=i z=z-A(i,j)*x(j);end end if abs(A(i,i))<1e-10|k==itmax index=0;return;end z=z/A(i,i);x(i)=(1-w)*x(i)+w*z;end if norm(y-x,inf) 1、设线性方程组 2、设对称正定阵系数阵线方程组 3、三对角形线性方程组 五、实验结论 迭代法是解线性方程组的一个重要的实用方法,特别适用于求解在实际中大量出现的,系数矩阵为稀疏阵的大型线性方程组。通过此次实验学会了Jacobi迭代法,Gauss-Seidel迭代法,SOR迭代法的程序编写,并掌握了它们各自的优缺点及其适用条件。 实验六 非线性方程求根 一、问题提出 设方程有三个实根 现采用下面六种不同计算格式,求 f(x)=0的根或 1、2、3、4、5、6、二、要求 1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况; 2、用事后误差估计来控制迭代次数,并且打印出迭代的次数; 3、初始值的选取对迭代收敛有何影响; 4、分析迭代收敛和发散的原因。 三、目的和意义 1、通过实验进一步了解方程求根的算法; 2、认识选择计算格式的重要性; 3、掌握迭代算法和精度控制; 4、明确迭代收敛性与初值选取的关系。 四、实验步骤 第一步:编写实验所需的程序。 function [x_star,index,it]=DD(fun,x,ep,itmax)if nargin<4 itmax=100;end if nargin<3 ep=1e-5;end index=0;k=1;while k 1、,x1=0,x2=0。 2、,x1=无穷大,x2=-0.3473。 3、,x1=1.8794,x2=1.8794。 4、,x1=-0.3473,x2=-0.3473.。 5、,x1=1.8794,x2=1.8794。 6、,x1=1.8794,x2=-0.3473。 五、实验结论 对于非线性方程,求它的解析解有时候是很困难的,但采用数值方法可以很容易地求它的近似解。此次实验就是采用迭代法求非线性方程的根。对于一个非线性方程,选用不同的迭代形式,因为其收敛程度不一样,造成其效率与精确度有很大的差别。 实验七 矩阵特征值问题计算 一、问题提出 利用冪法或反冪法,求方阵的按模最大或按模最小特征值及其对应的特征向量。 设矩阵A的特征分布为: 且 试求下列矩阵之一(1)求,及 取 结果(2)求及 取 结果: (3)求及 取 结果(4)取 这是一个收敛很慢的例子,迭代次才达到 结果(5)有一个近似特征值,试用幂法求对应的特征向量,并改进特征值(原点平移法)。 取 结果 二、要求 1、掌握冪法或反冪法求矩阵部分特征值的算法与程序设计; 2、会用原点平移法改进算法,加速收敛; 对矩阵B=A-PI取不同的P值,试求其效果; 3、试取不同的初始向量,观察对结果的影响; 4、对矩阵特征值的其它分布,如且如何计算。 三、目的和意义 1、求矩阵的部分特征值问题具有重要实际意义,如求矩阵谱半径,稳定性问题往往归于求矩阵按模最小特征值; 2、进一步掌握冪法、反冪法及原点平移加速法的程序设计技巧; 3、问题中的题(5),反应了利用原点平移的反冪法可求矩阵的任何特征值及其特征向量。 四、实验步骤 第一步:写出实验所需的幂法求最大特征值及反幂法求最小特征值的程序。 幂法程序: function [m,u,index]=TZ(A,ep,itmax)if nargin<3 itmax=100;end if nargin<2 ep=1e-5;end n=length(A);u=ones(n,1);index=0;k=0;m1=0;while k<=itmax v=A*u;[vmax,i]=max(abs(v));m=v(i);u=v/m;if abs(m-m1) function [m,u,index]=FTZ(A,ep,itmax)if nargin<3 itmax=100;end if nargin<2 ep=1e-5;end n=length(A);u=ones(n,1);index=0;k=0;m1=0;invA=inv(A);while k<=itmax v=invA*u;[vmax,i]=max(abs(v));m=v(i);u=v/m;if abs(m-m1) λ3=3.4723,x3=(1.0000 0.5229 0.2422)T。,λ1=21.3053,X1=(0.8724 0.5401 0.9973 0.5644 0.4972 1.0000)T; λ6=1.6214。 五、实验结论 求n阶方阵A的特征值和特征向量,也是实际中常常碰到的问题。通过此次实验掌握了用幂法和反幂法求一个方阵的最大特征值和特征向量,绝对值最小的特征值和特征向量。 实验八 常微分方程初值问题数值解法 一、问题提出 科学计算中经常遇到微分方程(组)初值问题,需要利用Euler法,改进Euler法,Rung-Kutta方法求其数值解,诸如以下问题: (1)分别取h=0.1,0.2,0.4时数值解。 初值问题的精确解。 (2)用r=3的Adams显式和预-校式求解 取步长h=0.1,用四阶标准R-K方法求值。 (3)用改进Euler法或四阶标准R-K方法求解 取步长0.01,计算数值解,参考结果。 (4)利用四阶标准R-K方法求二阶方程初值问题的数值解(I)(II)(III)(IV) 二、要求 1、根据初值问题数值算法,分别选择二个初值问题编程计算; 2、试分别取不同步长,考察某节点处数值解的误差变化情况; 3、试用不同算法求解某初值问题,结果有何异常; 4、分析各个算法的优缺点。 三、目的和意义 1、熟悉各种初值问题的算法,编出算法程序; 2、明确各种算法的精度与所选步长有密切关系; 3、通过计算更加了解各种算法的优越性。 四、实验步骤 function [x,y]=euler(fun,x0,xfinal,y0,n);if nargin<5,n=50;end h=(xfinal-x0)/n;x(1)=x0;y(1)=y0;for i=1:n;x(i+1)=x(i)+h;y(i+1)=y(i)+h*feval(fun,x(i),y(i));end 实验程序及分析(Ⅰ)(1)、算法程序 function E =Euler_1(fun,x0,y0,xN,N)% Euler向前公式,其中 % fun为一阶微分方程的函数 % x0,y0为初始条件 % xN为取值范围的一个端点 % h为区间步长 % N为区间个数 % x为Xn构成的向量 % y为yn构成的向量 x=zeros(1,N+1);y=zeros(1,N+1);x(1)=x0;y(1)=y0;h=(xN-x0)/N;for n=1:N x(n+1)=x(n)+h;y(n+1)=y(n)+h*feval(fun,x(n),y(n));end T=[x',y'] function z=f(x,y)z=4*x/y-x*y;(2)、运行程序 >> Euler_1('f',0,3,2,20)结果 : 数值分析是一门与计算机使用紧密结合的实用性很强的数学课程, 它不仅是信息与计算科学专业、应用数学专业的一门专业基础课, 也是很多工科专业的一门很重要的课程。数值分析包含了大量严谨的数学理论, 也有很强的实用价值。 如今的课堂教学往往非常注重讲授数值方法的原理, 而数值分析的理论覆盖面很广, 从数值逼近、积分微分到常微分方程、高等代数等, 这就需要学生有良好的基础和知识积累, 才能在理论学习中游刃有余。教师一般在课堂上都是由实际出发, 由现实的例子作为背景引入具体理论, 然后对理论进行详细讲解, 最后再回到实例当中解决问题。 笔者认为, 若是只在课堂上讲授理论, 尽管有多媒体手段的加入, 各种图形、程序可以用ppt展示给学生看, 学生是听懂了, 看会了, 可是到实际使用中还是不知道如何下手。数值分析是一门注重做的课程, 再复杂的理论, 都需要学生学会如何在现实工作中用出来。所以实验教学在数值分析整个教学过程中的地位是非常重要的, 在实验中, 学生通过软件编程实现已有算法, 绘制图形图像的过程中可以加深对算法的理解, 直观感受算法理论的精妙, 提高学习兴趣。在运用自己的程序解决问题的过程中, 能在不同的问题中掌握算法的使用注意事项, 在实验中累积算法经验从而让学生可以在实际中能熟练应用课本上的理论。 二、函数插值实验教学设计 函数插值理论在数值分析中是非常重要的一个知识点, 也是离散函数逼近的重要方法。其原理是利用插值法, 可在离散数据的基础上得到一条连续函数通过全部已知数据点, 进而可以估算出其他节点处的近似值。插值方法主要有拉格朗日插值、牛顿插值、分段线性插值、样条插值等, 其理论烦琐, 但是又非常重要, 它是数值积分理论的重要理论基础。插值方法很多, 如何在理论和实验教学中让学生掌握各个方法的原理, 以及每个插值方法使用的注意事项, 是摆在教师面前的难题。 课堂注重理论, 实验注重做法, 在实验教学中, 笔者认为应该在加强课堂理论学习的基础上, 实验要注重如何让学生巩固课堂学习的成果, 把插值的原理和特点通过设计的算例让学生自己描绘出来。学生通过实验全面认识各个插值理论的优缺点, 为以后数值积分的学习打下基础。为此, 在插值实验这一节, 我们为学生设计了一个比较实验, 通过每一对有特点的算例的比较, 让学生在比较中获得各个插值方法的使用注意事项和具体的操作方法, 知道什么可以做什么不能做, 并且获得对插值的全新认识。 实验的首要任务是编程, 利用MATLAB数学软件结合课堂学到的理论公式编写拉格朗日插值和牛顿插值的程序。尽管MATLAB有内置的命令实现拉格朗日插值, 但是学生无法通过内置命令掌握拉格朗日插值理论公式, 并且由于通过MATLAB编程实现拉格朗日插值和牛顿插值比较容易, 所以还是要求学生通过理论公式独立编程, 以加深对理论公式的记忆和理解。在编程的基础上, 要求学生利用编写的程序完成以下对比实验。 1.从函数y=sin (x) , x∈ (-2π, 2π) 中等距离取5个点, 要求学生分别利用拉格朗日插值和牛顿插值进行求插值函数的操作, 观察利用两个插值原理求出来的插值函数有何异同。 2.从多项式中等距离取5个点, 要求学生利用拉格朗日插值方法进行插值操作, 观察获得的插值函数和原函数有何异同。 3.提示学生对函数y=sin (x) , x∈ (-2π, 2π) 的5点拉格朗日插值效果不好, 若要提高插值效果, 将节点个数增加到11个, 将插值效果进行比较。 4.在上例的基础上, 让学生通过画图比较函数, x∈ (-1, 1) 的5点拉格朗日插值和11点拉格朗日插值效果。提示学生可以进一步增加节点个数, 观察得出的图形。 5.利用分段插值的方法, 对函数, x∈ (-1, 1) 进行11点插值, 与11点拉格朗日插值的插值效果比较。 6.保留拉格朗日插值方法, 取消等距节点, 提示学生利用[-1, 1]上的切比雪夫多项式的零点 (切比雪夫点) k=1, 2, …, n+1对以上两个函数进行拉格朗日插值, 与等距节点的插值效果进行比较。 我们希望学生做完以上案例后不但能顺利完成结果的获得, 而且还能利用课堂学到的理论知识分析得到的结果, 这些结果都是课堂上讲解的理论知识的数值例子, 能做出来, 会分析, 这是对学生的锻炼, 也能提高学生的动手能力和学习积极性。以下我们对以上案例进行分析。 1.通过案例1, 学生得到结果后能了解到, 在相同的节点条件下, 利用拉格朗日插值和牛顿插值得到的插值多项式是一样的, 这与课堂的理论分析完全一致。这个结果是学生自己完成实验后得到的, 与课堂理论分析结合, 学生更能理解两种插值的相同之处。而通过编写两个插值方法的MATLAB程序, 学生既可以学习编程, 还可以掌握两者达到同一目的的不同之处。 2.通过上例可得出拉格朗日插值和牛顿插值结果一样的结论, 所以对四次多项式y=x4+x3+x2+x+1进行5点插值只需利用拉格朗日插值即可。学生可通过得到的结果和图形知道, 其实得到的插值多项式就是原来的四次多项式本身, 原函数和插值多项式两者的误差为零。这个结论可以提示学生通过拉格朗日插值理论的误差公式解释和分析, 从而复习和掌握拉格朗日插值误差公式。 3.通过案例1得到的插值多项式的图形对比原函数图形可知, 一般来说函数的5点插值的逼近效果还是不理想的, 误差比较大。若要提高逼近效果, 首先让学生通过实验观察提高节点个数对插值的逼近效果的影响。所以设计了一个对比实验让学生对两个函数进行高次插值。通过实验结果的观察可知, 对于函数y=sin (x) , x∈ (-2π, 2π) , 11点的插值逼近效果在整个区间上都比5点插值效果好, 几乎和原函数重合了提高插值次数达到了良好的效果。而对于龙格函数, x∈ (-1, 1) , 高次插值出现了龙格现象, 即区间中间部分逼近效果非常好, 而区间两边出现非常大的震荡。通过这两个案例的比较分析, 让学生自己总结出光靠增加节点个数提高插值的逼近效果不可行, 需要另找办法。龙格现象是插值理论的重要知识点, 在课堂教学中学生对该现象只停留在理论上, 通过该实验案例的分析, 学生在自己做出龙格现象图形的时候, 能加深对龙格现象和拉格朗日插值的缺点的理解。而对于学生普遍会存在疑问, 龙格现象只是龙格函数的特有现象吗?y=sin (x) , x∈ (-2π, 2π) 不会出现龙格现象吗?可提示学生继续对没有出现龙格现象的函数增加插值节点, 观察龙格现象是否是所有函数的共有特点, 并且这可以留作实验作业让学生课后自己完成。 4.此案例提供一个提高逼近效果的方法, 就是分段插值, 利用分段插值, 可以在增加节点个数的情况下, 保持插值次数不增加, 从而保证的插值效果。学生通过此案例可以理解为什么介绍完整体插值后还需要讲解分段插值, 老师在以后介绍数值积分中的复化积分公式的时候, 进行比较讲解。 5.通过切比雪夫点的插值案例, 提示学生分段插值不是提高逼近效果的唯一方法, 通过改变节点的选取, 把原来的等距节点变为区间上正交多项式的零点, 可以在增加节点个数, 让拉格朗日插值的逼近效果也相应提高而不会出现龙格现象。这个案例可以和以后数值积分中的高斯求积公式配合, 让学生了解正交多项式的零点在函数逼近方面的重要应用。并且在介绍完[-1, 1]上的切比雪夫点插值后, 可以预留作业, 让学生在其他区间上寻找正交多项式零点进行拉格朗日插值, 让学生对正交多项式理论加深印象, 为以后数值积分的高斯求积公式的介绍铺垫。 三、结束语 本文介绍了在数值分析实验教学中引入比较教学法, 通过在函数插值实验中设计的几对比较案例, 让学生在完成实验过程中经比较加深理解和掌握理论课上介绍的知识。课堂理论教学让学生听与看获得理论知识, 实验教学强调学生做, 让学生在做的过程中获得比在课堂听更多的知识和操作方法, 也是把学到的知识用到实际中关键的一步。通过在学生中进行的教学试验, 学生在一个综合设计性实验 (4课时) 中, 在有MATLAB基础的前提下, 完全能从编写程序, 学会程序的操作开始, 独立完成以上比较实验, 并且能针对每个比较实验的案例, 给出合理的理论分析, 达到良好的教学效果。 摘要:数值分析是大学本科数学和工科专业的重要课程, 实验是数值分析课程的重要组成部分, 本文通过数值分析的插值实验的教学案例, 分析了如何在实验中引入比较法, 让学生在做实验的过程中获得理论知识的巩固的方法。 关键词:数值分析,实验,插值 参考文献 [1]赵景军, 吴勃英.关于数值分析教学的几点探讨[J].大学数学, 2005, 21 (3) :28-30. [2]李庆杨, 王能超, 易大义.数值分析[M].武汉:华中科技大学出版社, 2001. 关键词 数值分析 实验课教学 研讨式教学 实践应用能力 中图分类号:G420 文献标识码:A 文章编号:1002-7661(2016)15-0001-02 一、《数值分析》开设实验课教学的必要性 相关文献研究指出,近几年信息与计算科学专业就业形势严峻,毕业生就业难和就业质量低的问题仍未有效缓解。大学生就业难,究其原因还是高校培养的学生不能适应社会发展的需要,他们的动手能力、实践应用能力不强,创新能力不够,学校里学到的东西只是纸上谈兵,所以培养出来的学生往往是高分低能。用人单位并不是不需要人才,而是招不到符合企业要求的人才,如何解决用人单位与人才培养单位这一突出的矛盾,也是教育行政管理部门和教育工作者一直在寻找的答案。 《数值分析》课程是我校信息与计算科学专业一门重要的专业主干课程,这门课程是研究如何运用数值计算方法对所建立的数学模型求出数值解的一门课程。这门课程的一个重要特点就是以计算机为计算工具,根据计算机的特点提出实际可行的有效算法,所以数值实验是课程的一个重要环节。学生学了这门课的目的是什么,我们的学生很多是为了拿学分,为了毕业,这样培养出来的学生不“低能”才怪。我们学这门课是为了解决实际问题的,学以致用,“用”才是我们的目的,《数值分析》实验课的开设正好可以检验学生学了是否会“用”,或者从不会“用”变得会“用”,甚至还会创新,这样目的就达到了。因此,《数值分析》实验课是培养学生实践应用能力和创新能力的一种有效途径。然而目前传统的实验课教学并不能有效地发挥其培养学生能力的效用,传统的教学方法不得不改革,我们在实验课教学中采用研讨式教学法,使实验课真正起到培养学生能力的目的。 二、研讨式实验教学更利于提升学生的实践应用能力 传统实验教学方法是教师讲授原理,然后实验演示,学生模拟,实验过程和结果是事先就设计好的,实验过程中学生没有新的发现也感受不到惊喜,更谈不上创新了,实验顺利而平淡,这种教学模式并不能充分培养学生解决问题的能力。研讨式教学是以解决问题为中心的教学方式,师生通过共同查找资料,讨论、实践、探索,提出解决问题的方式,使学生达到掌握知识和技能的目的。研讨式教学要求以“引导”为主, 要以学生为主体,教师只是教学活动的参与者和组织者,要充分发挥学生的主体地位,发挥学生的主观能动性,引导学生积极思考和实践。比如在做函数逼近实验时,同一问题可以让学生用不同的逼近方法进行实验,自己去感受不同逼近方法的优劣,比较逼近精度。实验过程中小组同学积极研讨,提出解决问题的思路,通过思想的交流也可能有创新灵感的产生。因此,研讨式教学模式更利于提升学生的实践应用能力和创新能力。 三、研讨式教学有利于提高教师的教学能力和知识水平 开展研讨式教学,看起来是以学生为主体,学生做研讨,其实作为教师,任务更艰巨,压力更大,此时教师不是知识的灌输者,而是作为一个思想的倾听者,对学生的发言要作出理性的分析,并加以引导,教师在整个教学过程中要发挥好“导演”的角色,如何引导,是教学成功的关键因素之一。教师需要具有功底深厚的专业知识,还要有敏锐的观察力和分析能力,因此,教师在教学前需要查阅大量资料,对专业知识不仅要有一个广博的了解,还要思考教学过程中可能出现的每一个环节,如何进行课堂设计,如何提出引导性的问题,这需要教师前期投入大量的精力和付出。研讨中,教师也要参与学生的讨论,使研讨既有深度又有广度。教师在这一过程中无形提高了自身的教学能力和知识水平。 四、研讨式教学有利于培养学生的情感态度和价值观 学生在实验过程中,积极参与研讨和查阅资料,激发了学生的好奇心和求知欲,通过自身努力,当问题解决时,学生会感受到成功的快乐和喜悦,增强了学生学习的兴趣,同时培养了学生克服困难的勇气以及学好本课程的信心。研讨过程中,学生要合作交流,发表自己的看法,对别人的观点可以提出质疑并加以论证,这一过程培养了学生认真思考、实事求是的科学态度。合作交流的过程,锻炼了学生的表达能力,培养了学生的团队合作意识,也增进了同学之间的友谊、师生之间的感情。数学教学中有一个重要目标就是通过数学学习培养学生的情感态度,而研讨式教学正好是实现这一目标的重要手段。 参考文献: [1]马国春,詹士昌. 信息与计算科学专业就业状况及其对本专业建设的启发[J].绍兴文理学 院学报,2014,34(10):65-68. [2]曾金平.数值计算方法[M].长沙:湖南大学出版社,2006,(8). 基金项目:邵阳学院校级教改项目(编号:2015JG07) 学号:AS1010131 一、实验目的 1.掌握各种复化求积公式,并利用它们求定积分; 2.掌握比较一阶导数和二阶导数的数值方法; 3.通过用不同复化求积公式计算定积分,并与精确解得比较,明白各个复化求积公式的优缺点。 二、 实验题目 1、、本 书本 118 页 页 5.1 单数题 : format long fun=inline(“2/(1-x^2)”)matrap(fun,2,3,10) 2、、本 书本 118 页 页 5.2 单数题: : fun=inline(“sin(x)/(x)”)masimp(fun,0,1,5) 2、比较一阶导数和二阶导数的数值方法 利用等距节点的函数值和端点的导数值,用不同的方法求下列函数的一阶和二阶导数,分析各种方法的有效性,并用绘图软件绘出函数的图形,观察其特点。 解: 对于方程3 5611201x x y , 2 , 0 x,利用程序 shiyan2 2 _01.m 内容如下: clear clc fun=inline(“x.^5/20--(11./6)*x.^3”); dfun=inline(“x.^4/4--(11./2)*x.^2”); ddfun=inline(“x.^3--11*x”); n=8;h=2/n; x=0:h:2;x1=x(2:n); y=feval(fun,x); dy=feval(dfun,x1); ddy=feval(ddfun,x1); for i=2:n dy1(i)=(y(i+1)--y(i))/h; dy2(i)=(y(i)--y(i--1))/h; dy3(i)=(y(i+1)--y(i--1))/(2*h); ddy1(i)=(y(i+1)--2*y(i)+y(i--1))/(h *h); end for i=1:n--1 1 err1(i)=abs(dy1(i)--dy(i)); err2(i)=abs(dy2(i)--dy(i)); err3(i)=abs(dy3(i)--dy(i)); errd2(i)=abs(ddy1(i)--ddy(i)); end [err1“ err2” err3“ errd2”] plot(x,y,“r”) hold on plot(x1,dy,“y”) plot(x1,ddy,“k”) 结果分析: 气膜冷却流场的实验研究和数值模拟的分析 用X型双丝热线探头对扇形气膜孔射流下游流场的测量结果表明,湍流因射流的注入而显著增强,并存在十分明显的各向非同性.传统的应力和速度梯度的涡粘关系仍然适用于气膜冷却流场,但应该在不同的`方向上分别对湍流粘性系数进行修正.标准k-ε湍流模型可成功地模拟孔内流动和流向倾角α较小时的掺混气膜冷却流场,但在α较大时的孔中线附近区域内的流场模拟是不成功的,并导致冷却效率的模拟失败. 刘松龄,许都纯,Liu Songling,Xu Duchun(西北工业大学航空动力与热力工程系,西安,710072) 相关文章:
误差分析实验报告01-20
行政协议概念与性质的法律分析01-20
网络协议分析与应用01-20
热分析实验报告范文01-20
新三板-对赌协议案例分析01-20
公证模式下股权回购协议之强制执行效力分析01-20
车间主任竞聘书(十六篇)01-20
小学三年级第二学期数学期末试题分析精选01-20
协议分析综合实验报告01-20
篇2:数值分析实验报告
篇3:数值分析实验报告
篇4:数值分析实验报告
篇5:实验四数值微积分实验报告
篇6:数值分析实验报告