特征值问题数值计算上机实验
-8
主特征值误差的下降曲线 乘幂法 Atiken加 速 Rayleigh加 速
3 2.5 2 1.5 1 0.5 0
1.1
1.2
1.3
1.4
1.5 1.6 迭代步数
1.7
1.8
1.9 x 10
2
4
从上面两图可以看出, 初始阶段乘幂法会剧烈震荡, 在迭代一段时间后会突然特征值误差变 大。在迭代 6000 次后,震荡现象不再出现。从第二张图中可以看出,采用 Atiken 和 Rayleigh 商加速得到的误差下降较快。 由于 Atiken 加速和 Rayleigh 商加速均是对特征值进行的, 对特征向量无影响, 故特征子空间 的距离的下降情形一致。下图为特征子空间距离的下降曲线。
练习 6.20 用二分法加原点位移反幂法求解在(1,2)之间的特征值。 实验步骤: 1.strum 序列 pi μ ������ i=0 的符号相同数计算 采用讲义给出的如下算法: q1 = ������1 (������) ������������2 q i ������ = ������������ − ������ − , ������ = 2,3, …. ������������−1 ������ 符号相同数恰好为序列q1 ������ , ������2 ������ , …中非负数的个数。
从上面序列可以看出,迭代一次后特征值并不靠近真实特征值,但利用反幂法,迭代 20 步 后,精度已达到10−10 级别。 从特征向量的距离的角度来看:
10 10 10
特征子空间距离大小
0
n=100, 特 征 子 空 间 距 离 的 下 降 曲 线
-1
-2
10 10 10 10 10 10
-3
-4
-5
10
-250
阈值 古典 循环 0 0.5 1 1.5 2
Givens 变 换 次 数 2.5 3 3.5 4 4.5 x 10 5
4
10
-300
10
50
n=101, 阈 值 、 循 环 及 古 典 Jacobi方 法 中 非 对 角 线 元 F范 数 值 的 下 降
10
0
10
非 对 角 线 元 F范 数 的 大 小
3.9962066557820 6
1.69099045876919e-0 9
3.9962066574740 9
7.54951656745106e-1 5
从上面两表可以看出,n=100 时,利用乘幂法和降阶法求出的特征值误差为10−10 和10−9量 级,而利用同时迭代法求出的特征值误差为10−15 和10−15 量级。n=101 时,利用乘幂法和降 阶法求出的特征值误差为10−16 和10−9 量级,而利用同时迭代法求出的特征值误差为10−15 和10−15 量级。 由此可以看出降阶法求出的第二个主特征值的精度远低于同时迭代法求出的第二个主特征 值精度。 理论分析如下, 因为使用降阶法, 第二个主特征信息的计算精度会受到第一个主特征信息计 算精度的影响,由于舍入误差的积累,特征信息的逐次求解过程,势必造成计算精度越来越 差。 而子空间同时迭代法可以同时求出矩阵的前若干个主特征值信息, 避免了舍入误差的积 累,故对较靠后的主特征值也有很好的精度。
3.9990325645839 8 3.9961311942671 9
降阶法+乘幂 法
3.9990325644623 3 3.9961311960320 9 0
误差
1.21668009001041e-1
同时迭代法
3.9990325645839 8 3.9961311942672
误差
3.10862446895044e-1 5 6.21724893790088e-1 5
特征值误差
阈值 古典 循环
1.2 1 0.8 0.6 0.4 0.2 0
0
1
2
3 Givens 变 换 次 数
4
5 x 10
6
4
从上面两图可以看出,使用古典 Jacobi 方法,矩阵的对角元最快地趋于真实特征值。阈值 Jacobi 比循环 Jacobi 稍微快一些。 (2)用进行相同次数的 Givens 变换后,矩阵非对角元的 F-范数值的下降来刻画收敛过程。
解:采用教科书上 8.1 算法编写程序。在 n=100 时,由于 1,1,1, … ,1 T 在主特征值对应的特 征向量上投影为 0,如果取v0 = 1,1,1, … ,1 T ,若无舍入误差的影响,就会导致乘幂法求解 出的特征值为第二主特征值。故这里取初始向量v0 为随机向量。为了便于比较,在每一步迭 代中,将 Atiken 加速值和 Rayleigh 商加速值分别计算出来,并作出如下图像:
从特征向量的角度来看,可得迭代过程中特征向量与用 eig 函数求出的特征向量的子空间之 间的距离如下表: 2.1073424255447e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
从上表可以看出,进行一次迭代后计算得到的特征向量与 eig 函数求出的特征向量子空间的 距离已为10−8 数量级,故可以认为两者相同,即反幂法确有“一次收敛”到特征向量的特 性。 不过并未观察到后续迭代会起到反作用的现象 (即做多次反幂法后, 特征子空间的距离反而 可能会变大) ,这可能是由于 MATLAB 计算的精度太高导致。
特征值问题数值计算上机实验
练习 6.16: 取初始向量为v0 = 1,1,1, … ,1 ������ ,用乘幂法计算主特征值及其相应的特征向量。 请绘制主特征值误差下降曲线,以及特征子空间距离的下降曲线。然后采用 Atiken 加速 技巧和 Rayleigh 商技术分别对算法进行加速,并完成类似的工作。
为了比较三种不同的方法的效率,下面将经过相同次数的 Givens 变换后三种不同的 Jacobi 方法分别对应的非对角元的 F-范数值的大小显示在一张图上,由此来进行比较。由于阈值 Jacobi 方法的效率也部分依赖于消元容限的选取,这里需要指出消元容限。采用的消元容限 为:σ1 = n ������0
练习 6.18 用幂法求解第二主特征值及其特征向量;用同时迭代法求解Tn 的前两个主特
征值。比较两者的计算效果。
解:对于用乘幂法求解第二主特征值,先采用降阶法,这里取S1 为 Householder 变换矩阵, 先利用乘幂法求出Tn 的主特征值λ1 及其对应的特征向量x1 ,然后求出降阶阵 A2,此处利用 MATLAB 的 eig 函数,发现 A2 与Tn 除λ1 外的其余特征值的差距不大。 再对A2 用乘幂法,可以求出 A2 的主特征值,即Tn 的第二特征值。见下表: 而若用同时迭代法则可直接求出Tn 的前两个主特征值。 采用教科书上算法, 可得计算结果如 下: 当 n=100 真实值
n=100, 阈 值 、 循 环 及 古 典 Jacobi方 法 中 特 征 值 误 差 的 下 降 2 1.8 1.6 1.4
特征值误差
阈值 古典 循环
1.2 1 0.8 0.6 0.4 0.2 0
0
0.5
1
1.5
2 2.5 3 Givens 变 换 次 数
3.5
4
4.5 x 10
5
4
n=101, 阈 值 、 循 环 及 古 典 Jacobi方 法 中 特 征 值 误 差 的 下 降 2 1.8 1.6 1.4
2.利用循环依次计算出(0,1)区间上的全部特征值的区间估计。 3.对上面的区间估计在利用反幂法得到特征值的近似。 实验数据: n=100 和 101 时,直接利用 MATLABeig 函数,得到T100 、T101 位于(1,2)区间上的特征值如下 表: (左边为 n=100 时的情形,右边为 n=101 时的情形)
1.3265605505321 8 1.95501348518822
2.03078984640160 2.03125681228880 2.03106008819891 2.03111963185171 2.03109858241729 2.03110536218386 2.03110536218386
-6
-7
-8
0
2
4
6
8
10 12 迭代步数
14
16
18
20
(其中间断处是由于值为 0) 从上图可以看出特征向量无“一次收敛”特性,但经过 6 次迭代后,误差已达到10−8 数量 级。 当 n=101 时,T101 的靠近 2 的特征值为 1.9384098828 和 2 以及 2.06159011711234,即恰好 2 为T101 的特征值,取 q=2,由于此时矩阵T101 − ������������ 奇异,故可对平移量 q 进行一个非常小 的扰动,取ε = 10−15 .对T101 − (������ + ������)������进行反幂法,预计此时反幂法的“一次收敛”特性非 常明显。进行 20 次反幂法得到计算序列结果为: 1.99999999999998 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-50
10
-100
10
-150
10
-200
10
-250
10
-300
阈值 古典 循环 0 1 2
Givens 变 换 次 数 3 4 5 x 10 6
4
从上面两图可以看出,仅从进行相同次数的 Givens 变化的角度来看,应用古典 Jacobi 方法 效率最高,阈值和循环 Jacobi 差距不大。从理论上来说也是合理的,这是由于古典 Jacobi 方法每次都是将模最大的元变为 0,所以效率最高。但是,对于较大矩阵的计算机来说,计 算是容易的, 搜索模最大的元素的代价是巨大的。 故经典 Jacobi 用计算机实际执行起来效率 不高。而循环 Jacobi 算法扫描整个矩阵,按预定的次序将元素变为 0,省去了搜索最大元的 代价。阈值 Jacobi 则是每一次消元时只对大于容限的值进行处理。
线代上机实验报告(3篇)
第1篇一、实验目的1. 掌握线性代数基本概念和基本运算方法。
2. 熟悉MATLAB软件在解决线性代数问题中的应用。
3. 提高实际操作能力和编程能力。
二、实验环境1. 操作系统:Windows 102. 软件环境:MATLAB R2019b3. 实验设备:计算机三、实验内容1. 矩阵的基本运算2. 矩阵的秩3. 矩阵的逆4. 线性方程组的求解5. 特征值和特征向量6. 二次型及其标准形四、实验步骤1. 矩阵的基本运算(1)创建矩阵A:A = [1, 2, 3; 4, 5, 6; 7, 8, 9](2)计算矩阵A的转置:A_transpose = A'(3)计算矩阵A的行列式:det_A = det(A)(4)计算矩阵A的逆:A_inverse = inv(A)2. 矩阵的秩(1)创建矩阵B:B = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12](2)计算矩阵B的秩:rank_B = rank(B)3. 矩阵的逆(1)创建矩阵C:C = [1, 2; 3, 4](2)判断矩阵C是否可逆:is_inverse = rank(C) == size(C, 1)(3)如果可逆,计算矩阵C的逆:C_inverse = inv(C)4. 线性方程组的求解(1)创建矩阵A和B:A = [1, 2; 3, 4]B = [5; 6](2)使用MATLAB内置函数求解线性方程组:x = A \ B5. 特征值和特征向量(1)创建矩阵D:D = [4, 1; 2, 3](2)计算矩阵D的特征值和特征向量:[V, D] = eig(D)6. 二次型及其标准形(1)创建矩阵E:E = [2, 1; 1, 3](2)计算矩阵E的特征值和特征向量:[V, D] = eig(E)(3)将二次型E化为标准形:Q = V D inv(V)五、实验结果与分析1. 矩阵的基本运算(1)矩阵A:1 2 34 5 67 8 9(2)矩阵A的转置:1 4 72 5 83 6 9(3)矩阵A的行列式:(4)矩阵A的逆:-1.5 0.50.5 -0.52. 矩阵的秩矩阵B的秩为2。
数值代数上机实验报告
数值代数上机实验报告试验项目名称:平方根法与改进平方根法实验内容:先用你熟悉的计算机语言将平方根法和改进平方根法编写成通用的子程序,然后用你编写的程序求解对称正定方程组Ax=b,其中,A=[101 10 1…1 10 11 10]100*100b随机生成,比较计算结果,评论方法优劣。
实验要求:平方根法与改进的平方根的解法步骤;存储单元,变量名称说明;系数矩阵与右端项的生成;结果分析。
实验报告姓名:罗胜利班级:信息与计算科学0802 学号:u200810087 实验一、平方根法与改进平方根法先用你所熟悉的计算机语言将平方根法和改进的平方根法编成通用的子程序,然后用你编写的程序求解对称正定方程组AX=b,其中系数矩阵为40阶Hilbert矩阵,即系数矩阵A的第i行第j列元素为=,向量b的第i个分量为=.平方根法函数程序如下:function [x,b]=pingfanggenfa(A,b)n=size(A);n=n(1);x=A^-1*b; %矩阵求解disp('Matlab自带解即为x');for k=1:nA(k,k)=sqrt(A(k,k));A(k+1:n,k)=A(k+1:n,k)/A(k,k);for j=k+1:n;A(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k);endend %Cholesky分解for j=1:n-1b(j)=b(j)/A(j,j);b(j+1:n)=b(j+1:n)-b(j)*A(j+1:n,j);endb(n)=b(n)/A(n,n); %前代法A=A';for j=n:-1:2b(j)=b(j)/A(j,j);b(1:j-1)=b(1:j-1)-b(j)*A(1:j-1,j);endb(1)=b(1)/A(1,1); %回代法disp('平方根法的解即为b');endfunction [x]=ave(A,b,n) %用改进平方根法求解Ax=b L=zeros(n,n); %L为n*n矩阵D=diag(n,0); %D为n*n的主对角矩阵S=L*D;for i=1:n %L的主对角元素均为1L(i,i)=1;for i=1:nfor j=1:n %验证A是否为对称正定矩阵if (eig(A)<=0)|(A(i,j)~=A(j,i)) %A的特征值小于0或A非对称时,输出wrong disp('wrong');break;endendendD(1,1)=A(1,1); %将A分解使得A=LDL Tfor i=2:nfor j=1:i-1S(i,j)=A(i,j)-sum(S(i,1:j-1)*L(j,1:j-1)');L(i,1:i-1)=S(i,1:i-1)/D(1:i-1,1:i-1);endD(i,i)=A(i,i)-sum(S(i,1:i-1)*L(i,1:i-1)');endy=zeros(n,1); % x,y为n*1阶矩阵x=zeros(n,1);for i=1:ny(i)=(b(i)-sum(L(i,1:i-1)*D(1:i-1,1:i-1)*y(1:i-1)))/D(i,i); %通过LDy=b解得y的值endfor i=n:-1:1x(i)=y(i)-sum(L(i+1:n,i)'*x(i+1:n)); %通过L T x=y解得x的值改进平方根法函数程序如下:function b=gaijinpinfanggenfa(A,b)n=size(A);n=n(1);v=zeros(n,1);for j=1:nfor i=1:j-1v(i)=A(j,i)*A(i,i);endA(j,j)=A(j,j)-A(j,1:j-1)*v(1:j-1);A(j+1:n,j)=(A(j+1:n,j)-A(j+1:n,1:j-1)*v(1:j-1))/A(j,j);end %LDL'分解B=diag(A);D=zeros(n);for i=1:nD(i,i)=B(i);A(i,i)=1;EndA=tril(A); %得到L和Dfor j=1:n-1b(j)=b(j)/A(j,j);b(j+1:n)=b(j+1:n)-b(j)*A(j+1:n,j);endb(n)=b(n)/A(n,n); %前代法A=D*(A');for j=n:-1:2b(j)=b(j)/A(j,j);b(1:j-1)=b(1:j-1)-b(j)*A(1:j-1,j);endb(1)=b(1)/A(1,1); %回代法disp('改进平方根法解得的解即为b');end调用函数解题:clear;clc;n=input('请输入矩阵维数:');b=zeros(n,1);A=zeros(n);for i=1:nfor j=1:nA(i,j)=1/(i+j-1);b(i)=b(i)+1/(i+j-1);endend %生成hilbert矩阵[x,b]=pingfanggenfa(A,b) b=gaijinpinfanggenfa(A,b)运行结果:请输入矩阵维数:40Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 6.570692e-020. > In pingfanggenfa at 4In qiujie at 10Matlab自带解即为x平方根法的解即为bx =1.60358.96850.85621.01950.9375-50.2500-3.0000-16.000024.0000-49.5000-30.000039.000022.0000-64.0000-12.00002.000010.2500-10.5000-1.0000-10.875083.000046.0000-98.0000-69.000068.000021.0000-50.7188-8.7500-8.0000 112.0000 6.0000 -68.7500 22.000044.0000 -28.0000 8.0000 -44.000012.0000b =1.0e+007 *0.0000-0.00000.0001-0.0004-0.00140.0424-0.29801.1419-2.73354.2539-4.30182.7733-1.19890.5406-0.36880.32850.4621-0.25130.05650.0000-0.00510.0071-0.0027-0.0031-0.00190.00090.0002-0.0002-0.00060.00040.0001-0.00020.00010.0000-0.00000.0000-0.0000-0.0000改进平方根法解得的解即为bb =1.0e+024 *0.0000-0.00000.0001-0.0012-0.0954 0.4208 -1.2101 2.0624 -1.0394 -3.3343 6.2567 -0.2463 -7.45942.80303.6990 0.7277 -1.7484 -0.4854 -3.6010 0.2532 5.1862 1.4410 0.8738 -4.5654 1.0422 4.0920 -2.7764 -2.2148 -0.8953 0.3665 4.8967 1.0416 0.1281-1.1902-2.83348.4610-3.6008实验二、利用QR分解解线性方程组:利用QR分解解线性方程组Ax=b,其中A=[16 4 8 4;4 10 8 4;8 8 12 10;4 4 10 12];b=[32 26 38 30];求解程序如下:定义house函数:function [v,B]=house(x)n=length(x);y=norm(x,inf);x=x/y;Q=x(2:n)'*x(2:n);v(1)=1;v(2:n)=x(2:n);if n==1B=0;elsea=sqrt(x(1)^2+Q);if x(1)<=0v(1)=x(1)-a;elsev(1)=-Q/(x(1)+a);endB=2*v(1)^2/(Q+v(1)^2);endend进行QR分解:clear;clc;A=[16 4 8 4;4 10 8 4;8 8 12 10;4 4 10 12]; b=[32 26 38 30];b=b';x=size(A);m=x(1);n=x(2);d=zeros(n,1);for j=1:n[v,B]=house(A(j:m,j));A(j:m,j:n)=(eye(m-j+1)-B*(v')*v)*A(j:m,j:n); d(j)=B;if j<m< p="">A(j+1:m,j)=v(2:m-j+1);endend %QR分解R=triu(A); %得到R D=A;I=eye(m,n);Q=I;for i=1:nD(i,i)=1;endH=tril(D);M=H';for i=1:nN=I-d(i)*H(1:m,i)*M(i,1:m);Q=Q*N;end %得到Qb=(Q')*b; %Q是正交阵for j=n:-1:2b(j)=b(j)/R(j,j);b(1:j-1)=b(1:j-1)-b(j)*R(1:j-1,j);endb(1)=b(1)/R(1,1); %回带法运行结果如下:R =18.7617 9.8072 15.7769 11.08640 9.9909 9.3358 7.53410 0 5.9945 9.80130 0 0 -0.5126Q =0.8528 -0.4368 -0.2297 -0.17090.2132 0.7916 -0.4594 -0.34170.4264 0.3822 0.2844 0.76890.2132 0.1911 0.8095 -0.5126b=1.000000000000001.000000000000010.9999999999999881.00000000000001实验三、Newton下山法解非线性方程组:3x-cos(yz)-=0,-81+sinz+1.06=0,exp(-xy)+20z+=0;要求满足数值解=满足或.定义所求方程组的函数:Newtonfun.mfunction F = Newtonfun(X)F(1,1)=3*X(1)-cos(X(2)*X(3))-1/2;F(2,1)=X(1)^2-81*(X(2)+0.1)^2+sin(X(3))+1.06;F(3,1)=exp(-X(1)*X(2))+20*X(3)+(10*pi-3)/3;End向量求导:Xiangliangqiudao.mfunction J=xiangliangqiudao()syms x y zX=[x,y,z];F=[3*X(1)-cos(X(2)*X(3))-1/2;X(1)^2-81*(X(2)+0.1)^2+sin(X(3))+1.06;exp(-X(1)*X(2))+20*X(3)+(10*pi-3)/3];J=jacobian(F,[x y z]);End代值函数:Jacobi.mfunction F=Jacobi(x)F=[ 3,x(3)*sin(x(2)*x(3)), x(2)*sin(x(2)*x(3));2*x(1), -162*x(2)-81/5,cos(x(3));-x(2)/exp(x(1)*x(2)),-x(1)/exp(x(1)*x(2)),20];End方程组求解:format long; %数据表示为双精度型X1=[0,0,0]';eps=10^(-8);k=1;i=1;X2=X1-Jacobi(X1)^(-1)*Newtonfun(X1);while (norm(subs(X2-X1,pi,3.1415926),2)>=eps)&&(norm(Newtonfun(X1),2)>=eps) if norm(Newtonfun(X2),2)<="" p="">X1=X2;B=inv(Jacobi(X2));C=Newtonfun(X2);X2=X2-B*C;i=i+1;elsev=1/(2^k); %引入下山因子X1=X2;B=inv(Jacobi(X2));C=Newtonfun(X2);X2=X2-v*B*C;k=k+1;endendj=i+k-1 %迭代次数X=X2 %输出结果运行结果如下:j =5X =0.500000000000000 -0.000000000000000 -0.523598775598299</m<>。
数值分析2024上机实验报告
数值分析2024上机实验报告数值分析是计算数学的一个重要分支,它研究如何用数值方法来解决数学问题。
在数值分析的学习过程中,学生需要通过上机实验来巩固理论知识,并学会使用相应的数值方法来解决实际问题。
本篇报告将详细介绍2024年度数值分析上机实验的内容和结果。
一、实验内容2024年度数值分析上机实验分为四个部分,分别是:方程求根、插值与拟合、数值积分和常微分方程的数值解。
1.方程求根这部分实验要求使用数值方法求解给定的非线性方程的根。
常见的数值方法有二分法、牛顿法、割线法等。
在实验过程中,我们需要熟悉这些数值方法的原理和实现步骤,并对不同方法的收敛性进行分析和比较。
2.插值与拟合这部分实验要求使用插值和拟合方法对给定的一组数据进行拟合。
插值方法包括拉格朗日插值、牛顿插值等;拟合方法包括最小二乘拟合、多项式拟合等。
在实验中,我们需要熟悉插值和拟合方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。
3.数值积分这部分实验要求使用数值方法计算给定函数的积分。
常见的数值积分方法有梯形法则、辛普森法则、龙贝格积分等。
在实验过程中,我们需要熟悉这些数值积分方法的原理和实现步骤,并对不同方法的精度和效率进行比较。
4.常微分方程的数值解这部分实验要求使用数值方法求解给定的常微分方程初值问题。
常见的数值方法有欧拉法、改进的欧拉法、四阶龙格-库塔法等。
在实验中,我们需要熟悉这些数值解方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。
二、实验结果在完成2024年度数值分析上机实验后,我们得到了以下实验结果:1.方程求根我们实现了二分法、牛顿法和割线法,并对比了它们的收敛速度和稳定性。
结果表明,割线法的收敛速度最快,但在一些情况下可能会出现振荡;二分法和牛顿法的收敛速度相对较慢,但稳定性较好。
2.插值与拟合我们实现了拉格朗日插值和最小二乘拟合,并对比了它们的拟合效果和精度。
结果表明,拉格朗日插值在小区间上拟合效果较好,但在大区间上可能出现振荡;最小二乘拟合在整体上拟合效果较好,但可能出现过拟合。
数值计算方法上机实验报告
数值计算方法上机实验报告
一、实验目的
本次实验的主要目的是熟悉和掌握数值计算方法,学习梯度下降法的
原理和实际应用,熟悉Python语言的编程基础知识,掌握Python语言的
基本语法。
二、设计思路
本次实验主要使用的python语言,利用python下的numpy,matplotlib这两个工具,来实现数值计算和可视化的任务。
1. 首先了解numpy的基本使用方法,学习numpy的矩阵操作,以及numpy提供的常见算法,如矩阵分解、特征值分解等。
2. 在了解numpy的基本操作后,可以学习matplotlib库中的可视化
技术,掌握如何将生成的数据以图表的形式展示出来。
3. 接下来就是要学习梯度下降法,首先了解梯度下降法的主要原理,以及具体的实际应用,用python实现梯度下降法给出的算法框架,最终
可以达到所期望的优化结果。
三、实验步骤
1. 熟悉Python语言的基本语法。
首先是熟悉Python语言的基本语法,学习如何使用Python实现变量
定义,控制语句,函数定义,类使用,以及面向对象编程的基本概念。
2. 学习numpy库的使用方法。
其次是学习numpy库的使用方法,学习如何使用numpy库构建矩阵,学习numpy库的向量,矩阵操作,以及numpy库提供的常见算法,如矩阵分解,特征值分解等。
3. 学习matplotlib库的使用方法。
《数值分析》课程教案
《数值分析》课程教案数值分析课程教案一、课程介绍本课程旨在介绍数值分析的基本概念、方法和技巧,以及其在科学计算和工程应用中的实际应用。
通过本课程的研究,学生将了解和掌握数值分析的基本原理和技术,以及解决实际问题的实用方法。
二、教学目标- 了解数值分析的基本概念和发展历程- 掌握数值计算的基本方法和技巧- 理解数值算法的稳定性和收敛性- 能够利用数值分析方法解决实际问题三、教学内容1. 数值计算的基本概念和方法- 数值计算的历史和发展- 数值计算的误差与精度- 数值计算的舍入误差与截断误差- 数值计算的有效数字和有效位数2. 插值与逼近- 插值多项式和插值方法- 最小二乘逼近和曲线拟合3. 数值微积分- 数值积分的基本原理和方法- 数值求解常微分方程的方法4. 线性方程组的数值解法- 直接解法和迭代解法- 线性方程组的稳定性和收敛性5. 非线性方程的数值解法- 迭代法和牛顿法- 非线性方程的稳定性和收敛性6. 数值特征值问题- 特征值和特征向量的基本概念- 幂迭代法和QR方法7. 数值积分与数值微分- 数值积分的基本原理和方法- 数值微分的基本原理和方法四、教学方法1. 理论讲授:通过课堂授课,讲解数值分析的基本概念、原理和方法。
2. 上机实践:通过实际的数值计算和编程实践,巩固和应用所学的数值分析知识。
3. 课堂讨论:组织学生进行课堂讨论,加深对数值分析问题的理解和思考能力。
五、考核方式1. 平时表现:包括课堂参与和作业完成情况。
2. 期中考试:对学生对于数值分析概念、原理和方法的理解程度进行考查。
3. 期末项目:要求学生通过上机实验和编程实践,解决一个实际问题,并进行分析和报告。
六、参考教材1. 《数值分析》(第三版),贾岩. 高等教育出版社,2020年。
2. 《数值计算方法》,李刚. 清华大学出版社,2018年。
以上是《数值分析》课程教案的概要内容。
通过本课程的研究,学生将能够掌握数值分析的基本原理和技术,并应用于实际问题的解决中。
数值分析上机实验报告
数值分析上机实验报告摘要:本报告是对数值分析课程上机实验的总结和分析,涵盖了多种算法和数据处理方法,通过对实验结果的分析,探究了数值计算的一般过程和计算的稳定性。
1. 引言数值计算是数学的一个重要分支,广泛应用于物理、金融、工程等领域。
本次实验是对数值分析课程知识的实际应用,通过上机实现算法,探究数值计算的可靠性和误差分析。
2. 实验方法本次实验中,我们实现了多种算法,包括:(1)牛顿迭代法求方程的根;(2)高斯消元法求线性方程组的解;(3)最小二乘法拟合数据点;(4)拉格朗日插值法估计函数值;(5)梯形公式和辛普森公式求积分近似值。
对于每个算法,我们都进行了多组数值和不同参数的实验,并记录了相关数据和误差。
在实验过程中,我们着重考虑了算法的可靠性和计算的稳定性。
3. 实验结果与分析在实验中,我们得到了大量的实验数据和误差分析,通过对数据的展示和分析,我们得到了以下结论:(1)牛顿迭代法求解非线性方程的根能够对算法的初始值和迭代次数进行适当的调整,从而达到更高的稳定性和可靠性。
(2)高斯消元法求解线性方程组的解需要注意到矩阵的奇异性和精度的影响,从而保证计算的准确性。
(3)最小二乘法拟合数据点需要考虑到拟合的函数形式和数据的误差范围,采取适当的数据预处理和拟合函数的选择能够提高计算的准确性。
(4)拉格朗日插值法估计函数值需要考虑到插值点的选择和插值函数的阶数,防止出现龙格现象和插值误差过大的情况。
(5)梯形公式和辛普森公式求积分近似值需要考虑到采样密度和拟合函数的选择,从而保证计算的稳定性和收敛速度。
4. 结论通过本次实验的分析和总结,我们得到了深入的认识和理解数值计算的一般过程和算法的稳定性和可靠性,对于以后的数值计算应用也提供了一定的指导和参考。
《数值计算方法》上机实验报告
《数值计算方法》上机实验报告华北电力大学实验名称数值il•算方法》上机实验课程名称数值计算方法专业班级:电力实08学生姓名:李超然学号:200801001008 成绩: 指导教师:郝育黔老师实验日期:2010年04月华北电力大学实验报告数值计算方法上机实验报吿一.各算法的算法原理及计算机程序框图1、牛顿法求解非线性方程*对于非线性方程,若已知根的一个近似值,将在处展开成一阶xxfx ()0, fx ()xkk泰勒公式"f 0 / 2 八八,fxfxfxxxxx 0 0 0 0 0 kkkk2!忽略高次项,有,fxfxfxxx 0 ()()(),,, kkk右端是直线方程,用这个直线方程来近似非线性方程。
将非线性方程的**根代入,即fx ()0, X ,* fxfxxx 0 0 0 0, ,, kkkfx 0 fx 0 0,解出fX 0 *k XX,, k' fx 0 k水将右端取为,则是比更接近于的近似值,即xxxxk, Ik, Ikfx ()k 八XX, Ikk* fx()k这就是牛顿迭代公式。
,2,计算机程序框图:,见,,3,输入变量、输出变量说明:X输入变量:迭代初值,迭代精度,迭代最大次数,\0输出变量:当前迭代次数,当前迭代值xkl,4,具体算例及求解结果:2/16华北电力大学实验报吿开始读入l>k/fx()0?,0fx 0 Oxx,,01* fx ()0XX,,,?10kk, ,1,kN, ?xx, 10输出迭代输出X输出奇异标志1失败标志,3,输入变量、输出变量说明: 结束例:导出计算的牛顿迭代公式,并il •算。
(课本P39例2-16) 115cc (0), 求解结果:10. 75000010.72383710. 72380510. 7238052、列主元素消去法求解线性方程组,1,算法原理:高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘 -个 方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上 对上三角3/16华北电力大学实验报告方程组求解。
现代数值计算上机实验报告资料
太原科技大学现代数值计算方法上机报告院系:华科学院专业年级:计算机科学与技术学生姓名:张栩嘉学号:201522030129指导教师:2017年5月12日数值计算方法上机实习题1. 设⎰+=105dx xx I nn , (1) 由递推公式nI I n n 151+-=-,从0I 的几个近似值出发,计算20I ; (2) 粗糙估计20I ,用nI I n n 51511+-=-,计算0I ; (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。
%上机习题1 %(1) I=0.182; for n=1:20I=(-5)*I+1/n; endfprintf('I20 的值是 %e\n',I); %(2)I=0.0087; for n=1:20I=(-1/5)*I+1/(5*n); endfprintf('I0 的值是 %f\n',I);3) 现象产生的原因:假设S n 的真值为S n ∗,误差为εn ,即εn =S n ∗−S n 对于真值,我们也有关系式S n ∗+5S n−1∗=1n 综合两个递推公式有εn =−5εn−1 这就意味着哪怕开始只有一点点误差,只要n 足够大,按照这种每计算一步误差增长5倍的方式,所得结果总是不可信的。
因此整个算法是不稳定的。
对于第二种方法 εn =−15εn−1 误差会以每计算一步缩小到1/5的方式进行,所以以这种方法计算的结果是可靠的,整个算法是稳定的。
2. 求方程0210=-+x e x的近似根,要求41105-+⨯<-k k x x ,并比较计算量。
(1) 在[0,1]上用二分法; (2) 取初值00=x ,并用迭代1021x k e x -=+;(3) 加速迭代的结果;(4) 取初值00=x ,并用牛顿迭代法; (5) 分析绝对误差。
%(1)在[0,1]上用二分法;a=0;b=1.0;ci=0;while abs(b-a)>5*1e-4c=(b+a)/2;ci=ci+1;if exp(c)+10*c-2>0b=c;else a=c;endendfprintf('二分法求得 c 的值是 %f\t',c);fprintf('迭代次数是 %d\n',ci);%(2)不动点迭代法,x=0;a=1;ci=0;while abs(x-a)>5*1e-4a=x;x=(2-exp(x))/10;ci=ci+1;endfprintf('不动点迭代求得 x 的值是 %f\t',x); fprintf('迭代次数是 %d\n',ci);%(3)艾特肯加速迭代x=0;a=0;b=1;ci=0;while abs(b-a)>5*1e-4a=x;y=exp(x)+10*x-2;z=exp(y)+10*y-2;x=x-(y-x)^2/(z-2*y+x);b=x;ci=ci+1;endfprintf('艾特肯加速迭代求得 x 的值是 %f\t',x); fprintf('迭代次数是 %d\n',ci);%(4)用牛顿迭代法x=0;a=0;b=1;ci=0;while abs(b-a)>5*1e-4a=x;x=x-(exp(x)+10*x-2)/(exp(x)+10);b=x;ci=ci+1;endfprintf('牛顿迭代法求得 x 的值是 %f\t',x); fprintf('迭代次数是 %d\n',ci); %(5)分析绝对误差solve('exp(x)+10*x-2=0'); fprintf('x 的真值是%.8f',x);运行结果:二分法求得 c 的值是 0.090332 迭代次数是 11 绝对为误差为0.000193 不动点迭代求得 x 的值是 0.090513 迭代次数是 4 绝对为误差为0.000012 艾特肯加速迭代求得 x 的值是 0.099488 迭代次数是 3 绝对为误差为0.008963 牛顿迭代法求得 x 的值是 0.090525 迭代次数是 2 绝对为误差为0.000000 x 的真值是0.090525>>分析可知加速迭代绝对误差最大,二分法次之,牛顿法和不动点法迭代效果最好。
实验七 矩阵特征值问题计算报告
实验七 矩阵特征值问题计算一、问题提出利用冪法或反冪法,求方阵()ij n n A a ⨯=的按模最大或按模最小特征值及其对应的特征向量。
设矩阵A 的特征分布为:1231n n λλλλλ-≥≥≥≥≥且j j j Ax x λ=试求下列矩阵之一(1) 121241116A -⎡⎤⎢⎥=-⎢⎥⎢⎥-⎣⎦求1λ,及1x 取(0)5(1,1,1),10T υε-==结果116.42106,(0.046152,0.374908,1)Tx λ≈-≈--(2) 427318251147717235312651143532875124A --⎡⎤⎢⎥-⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦求16,λλ及1x取(0)5(1,0,1,0,0,1),10T υε-==结果:16121.30525, 1.62139,(0.8724,0.5401,0.9973,0.5644,0.4972,1.0)T x λλ≈≈≈(3) 2112112112112A -⎡⎤⎢⎥--⎢⎥⎢⎥=--⎢⎥--⎢⎥⎢⎥-⎣⎦求1λ及1x 取(0)4(1,1,1,1,1),10T υε-==结果 3.7321λ≈(4)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=1254261351314312A取()()T 1,1,1,10=υ 210-=ε这是一个收敛很慢的例子,迭代1200次才达到510-结果02857835.81-≈λ ()T x 564212.2,757730.0,501460.2,11--≈(5)⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=611142121A有一个近似特征值42.6-,试用幂法求对应的特征向量,并改进特征值(原点平移法)。
取()()T 1,1,10=υ 410-=ε结果42107.6-≈λ ()Tx 1,37918.0,0461465.0--≈二、要求1、掌握冪法或反冪法求矩阵部分特征值的算法与程序设计;2、会用原点平移法改进算法,加速收敛;对矩阵B=A-PI 取不同的P 值,试求其效果;3、试取不同的初始向量(0)υ,观察对结果的影响;4、对矩阵特征值的其它分布,如12λλ=且123λλλ=≥如何计算。
数值分析上机实验指导书
“数值计算方法”上机实验指导书实验一 误差分析实验1.1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=−=−−−=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。
现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。
这相当于是对(1.1)中19x 的系数作一个小的扰动。
我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个MATLAB 函数:“roots ”和“poly ”。
roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++−n n n n a x a x a x a的全部根;而函数 poly(v)b =的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数(从高到低排列)。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
