数值线性代数实验

合集下载

数值分析课程实验设计——数值线性代数实习题

数值分析课程实验设计——数值线性代数实习题

数值分析课程实验设计——数值线性代数
实习题
1. 实验目的
本实验的主要目的是进一步加深对数值线性代数的理解,熟悉
常见矩阵分解方法,并在此基础上解决实际问题。

2. 实验内容
本次实验将任务分为两个部分,分别是矩阵分解与求解线性方
程组。

2.1 矩阵分解
首先,我们需要熟悉三种常见的矩阵分解:QR分解、LU分解
和奇异值分解。

我们需要通过Python语言实现这三种分解方法,
并利用这些方法解决实际问题。

2.2 求解线性方程组
其次,我们需要学会用矩阵分解的方法来求解线性方程组。


们将通过两个例子来进行说明,并利用Python语言实现这些方法。

3. 实验要求
本次实验要求熟悉矩阵分解的基本方法,在此基础上解决实际问题;能够运用多种方法来求解线性方程组,并分析比较它们的优缺点。

4. 实验总结
本次实验通过矩阵分解和求解线性方程组两个部分的学习,巩固了我们对于数值线性代数的知识,并在实际问题的解决中得到了应用。

感谢老师的指导,我们会在今后的学习中持续探索数值分析方面的知识。

数值代数实验报告

数值代数实验报告

数值代数实验报告数值代数实验报告引言:数值代数是一门研究数值计算方法和算法的学科,它在科学计算和工程应用中起着重要的作用。

本实验报告旨在通过实际的数值计算问题,探讨数值代数的应用和效果。

实验一:线性方程组求解线性方程组求解是数值代数中的一个重要问题。

在实验中,我们使用了高斯消元法和LU分解法两种求解线性方程组的方法,并对比了它们的效果。

首先,我们考虑一个3×3的线性方程组:2x + 3y - z = 54x - 2y + 2z = 1x + y + z = 3通过高斯消元法,我们将该方程组转化为上三角形式,并得到解x=1, y=2, z=0。

而通过LU分解法,我们将该方程组分解为LU两个矩阵的乘积,并得到相同的解。

接下来,我们考虑一个更大的线性方程组,例如10×10的方程组。

通过比较高斯消元法和LU分解法的运行时间,我们可以发现LU分解法在处理大规模方程组时更加高效。

实验二:特征值与特征向量计算特征值与特征向量计算是数值代数中的另一个重要问题。

在实验中,我们使用了幂法和QR方法两种求解特征值与特征向量的方法,并对比了它们的效果。

首先,我们考虑一个3×3的矩阵:1 2 34 5 67 8 9通过幂法,我们可以得到该矩阵的最大特征值为15.372,对应的特征向量为[0.384, 0.707, 0.577]。

而通过QR方法,我们也可以得到相同的结果。

接下来,我们考虑一个更大的矩阵,例如10×10的矩阵。

通过比较幂法和QR 方法的运行时间,我们可以发现QR方法在处理大规模矩阵时更加高效。

实验三:奇异值分解奇异值分解是数值代数中的一种重要技术,它可以将一个矩阵分解为三个矩阵的乘积,从而实现数据降维和信息提取的目的。

在实验中,我们使用了奇异值分解方法,并通过实际的数据集进行了验证。

我们选取了一个包含1000个样本和20个特征的数据集,通过奇异值分解,我们将该数据集分解为三个矩阵U、S和V的乘积。

数值代数(第13周)实验报告()

数值代数(第13周)实验报告()
[x,k]=fastest(A,b,eps);
运行结果:
x =
-4.0000
3.0000
2.0000
k =
17
(2)第二题的第一个方程组
A=[1 0.4 0.4;0.4 1 0.8;0.4 0.8 1];
b=[1 2 3]';
eps=0.00001;
[x,k]=fastest(A,b,eps);
运行结果:
(本次实验进行总结,包括但不限于对算法的理解、编程实验中遇到的问题、实验中所取得的经验等;如程序未能通过,应分析错误原因.)
通过不断试验最速下降法和范数norm(x-x0)取值范围有关.前两个方程组当eps取得越小误差越小。上面的运算结果则是最接近值的迭代次数
x =
-0.1351
-1.0811
3.9189
k =
51
(3)第二题的第二个方程组
A=[1 2 -2;1 1 1;2 2 1];
b=[1 1 1]';
eps=0.1;
[x,k]=fastest(A,b,eps);
运行结果:x =
-3.0000
3.0000
1.0000
k =
5
4实验总结【必填栏目】
得分:
x0=x;
ifk>=m
disp('迭代次数太多,可能 Nhomakorabea收敛!');
return;
end
end
x
k
3.2实验(或测试)代码和结果
得分:
用最速下降法求解课本209页习题1、2中的三个方程组.
(1)第一题的方程组
A=[5 2 1;-1 4 2;2 -3 10];

【清华】7.0_实验5-线性代数方程组的数值解法

【清华】7.0_实验5-线性代数方程组的数值解法

0
0.5000
0.7500
0.9926
0.99979 0.99999 0.99999
0
0.5000
0.7500
0.9930
0.99981 0.99999 0.99999
0
0.5000
0.7500
0.9935
0.99983 0.99999
1
0
0.5000
0.7569
0.9943
0.99985 0.99999
B1=D\(L+U);
f1=D\b; x(:,1)=x0; x(:,2)=B1*x(:,1)+f1; k=1; while norm((x(:,k+1)-x(:,k)),inf)>m
x(:,k+2)=B1*x(:,k+1)+f1; k=k+1; end
%赋初值 %以差值向量的行范数作为误差判断标准
0.22222
0 0.083333 0.095238
0.21996
0 0.083333 0.095016
0 0.33333
0.6521
0 0.16667
0.22152
0 0.083333 0.095181
0 0.33333
0.66094
0 0.16667
0.22207
0 0.083333 0.095231
0 0.33333
0.6643
0 0.16667
0
0.7083
0.9069
0.9967
0.99999
1
1
0
0.6806
0.8960
0.9962
0.99998 0.99999

数值线性代数_MathCAD实验

数值线性代数_MathCAD实验

算法
MathCAD代码
下 三 角 方
方程组
⎛ ⎜ ⎜⎜⎝
ll1211 ... ln1
l22 ... ln 2
... ...
lnn
⎞ ⎟ ⎟⎟⎠
⎛ ⎜ ⎜⎜⎝
yy12 ... yn
⎞ ⎟ ⎟⎟⎠
=
⎛ ⎜ ⎜⎜⎝
bb12 ... bn
⎞ ⎟ ⎟⎟⎠
解法:
程 (1) y1 = b1 / l11
∑ (前
代)
u x n
k=n+1 nk k
表示零。但MathCAD认为变量 k
=
n
+ 1, n
,由于U
是n
阶矩
阵, un,n+1 没有定义,计算出错。因此用MathCAD编写程序时,应特别注意循环变量的初值和终值。参
看以下代码:
Ub(U, b) := "求解上三角线性系统,下标1开始 n ← rows(U) ⊕ "正确程序"
n ← rows( A)
"先定义n-1个矩阵,存放Gauss变换 "
for i∈ 1 .. n − 1
Li ← identity(n) ⊕ "定义了n-1个单位矩阵"
for k ∈ 1 .. n − 1
for i∈ k + 1 .. n
( )Lk
i,k ←
−Ai , k Ak , k

"第k个Gauss变换阵"
⎛ a11 " a1,i-1 a1,i a1,i+1 " a1,n b1 ⎞

⎜ ⎜
0 0
%# " ai-1,i-1

数值分析实验报告-清华大学--线性代数方程组的数值解法

数值分析实验报告-清华大学--线性代数方程组的数值解法

数值分析实验报告-清华大学--线性代数方程组的数值解法(总15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--线性代数方程组的数值解法实验1. 主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

实验内容:考虑线性方程组 n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。

实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。

取n=10计算矩阵的条件数。

让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。

每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。

若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。

(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。

重复上述实验,观察记录并分析实验结果。

程序清单n=input('矩阵A 的阶数:n=');A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1); b=A*ones(n,1);p=input('计算条件数使用p-范数,p='); cond_A=cond(A,p) [m,n]=size(A);Ab=[A b];r=input('选主元方式(0:自动;1:手动),r=');Abfor i=1:n-1switch rcase(0)[aii,ip]=max(abs(Ab(i:n,i)));ip=ip+i-1;case (1)ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);end;Ab([i ip],:)=Ab([ip i],:);aii=Ab(i,i);for k=i+1:nAb(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);end;if r==1Abendend;x=zeros(n,1);x(n)=Ab(n,n+1)/Ab(n,n);for i=n-1:-1:1x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);endx运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1) =×103Cond(A,2) = ×103Cond(A,inf) =×103程序自动选择主元(列主元)a.输入数据矩阵A的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=0b.计算结果x=[1,1,1,1,1,1,1,1,1,1]T(2)n=10,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[, , , , , , , , , ]Tb. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=10计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k 步选择主元处于第k+1行) 最终计算得x=[1,1,1,1,1,1,1,1,1,1]T(3)n=20,手动选主元a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:1(2)(2) 6.0000 1.00007.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.00001.000015.00006.0000 1.00008.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:2…(实际选择时,第k 步选择主元处于第k 行) 最终计算得x=[,,,,,,,,,,,,,,,,,,,]T b. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=20计算条件数使用p-范数,p=1选主元方式(0:自动;1:手动),r=1(1)(1)61786115[]861158614A b ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦第1步消元,请输入第1列所选元素所处的行数:2(2)(2)8.0000 6.0000 1.000015.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.000015.00008.0000 1.00006.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦第2步消元,请输入第2列所选元素所处的行数:3…(实际选择时,第k步选择主元处于第k+1行)最终计算得x=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]T(4)A分别为幻方矩阵,Hilbert矩阵,pascal矩阵和随机矩阵简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。

数值代数实验报告(1)绝对经典

数值代数实验报告(1)绝对经典

数值代数实验报告Numerical Linear Algebra And ItsApplications学生所在学院:理学院学生所在班级:计算数学10-1学生姓名:戈东潮指导教师:于春肖教务处2012年12月实验一实验名称: Poisson 方程边值问题的五点差分格式 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:通过上机利用Matlab 数学软件实现Poisson 方程的边值问题的五点差分格式的线性代数方程组来认真解读Poisson 方程边值问题的具体思想与方法,使我们掌握得更加深刻,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。

二、实验内容:利用Poisson 方程来解下列问题:⎪⎩⎪⎨⎧∂∈=∈=∂∂+∂∂-ΩΩ),(,),(),(,sin sin )(y x y x u y x y x y u x u 0222222πππ 其中}{的边界是ΩΩ∂<<∈Ω,1,0),(y x y x 。

边值问题的解释是y x y x u ππsin sin ),(=(1)用例题中模型问题的方法取N=5,10(也可以取N=20)列出五点差分格式的线性代数方程组三、实验过程:系数矩阵A 的Matlab 实现函数如下:%文件名:poisson.m function T=poisson(N) for i=1:N a(i)=4; end b=diag(a); for j=1:N-1b(j,j+1)=-1;endfor j=2:Nb(j,j-1)=-1;endfor i=1:NI(i)=-1;endI=diag(I);for i=1:N:N*Nfor j=1:NT(i+j-1,i:i+N-1)=b(j,:);endendfor i=1:N:N*N-Nfor j=1:NT(i+j-1,i+N:i+N-1+N)=I(j,:);endendfor i=1+N:N:N*Nfor j=1:NT(i+j-1,i-N:i-1)=I(j,:);endend求解常数项b的Matlab实现函数如下:%函数名:constant.mfunction b=constant(N)n=N+1;h=1/n;i=1;for y=1/n:1/n:N/nfor x=1/n:1/n:N/nf(i)=2*pi*pi*sin(pi*x)*sin(pi*y);i=i+1;endendb=h*h*f;b=b';四、实验结果(总结/方案)在Matlab运行窗口输入>>A=poisson(5) Enter输出结果A =Columns 1 through 114 -1 0 0 0 -1 0 0 0 0 0-1 4 -1 0 0 0 -1 0 0 0 00 -1 4 -1 0 0 0 -1 0 0 00 0 -1 4 -1 0 0 0 -1 0 00 0 0 -1 4 0 0 0 0 -1 0-1 0 0 0 0 4 -1 0 0 0 -10 -1 0 0 0 -1 4 -1 0 0 00 0 -1 0 0 0 -1 4 -1 0 00 0 0 -1 0 0 0 -1 4 -1 00 0 0 0 -1 0 0 0 -1 4 00 0 0 0 0 -1 0 0 0 0 40 0 0 0 0 0 -1 0 0 0 -10 0 0 0 0 0 0 -1 0 0 00 0 0 0 0 0 0 0 -1 0 00 0 0 0 0 0 0 0 0 -1 00 0 0 0 0 0 0 0 0 0 -10 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 Columns 12 through 220 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 00 -1 0 0 0 0 0 0 0 0 00 0 -1 0 0 0 0 0 0 0 00 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0 04 -1 0 0 0 -1 0 0 0 0 0 -1 4 -1 0 0 0 -1 0 0 0 00 -1 4 -1 0 0 0 -1 0 0 00 0 -1 4 0 0 0 0 -1 0 00 0 0 0 4 -1 0 0 0 -1 0 -1 0 0 0 -1 4 -1 0 0 0 -10 -1 0 0 0 -1 4 -1 0 0 00 0 -1 0 0 0 -1 4 -1 0 00 0 0 -1 0 0 0 -1 4 0 00 0 0 0 -1 0 0 0 0 4 -10 0 0 0 0 -1 0 0 0 -1 40 0 0 0 0 0 -1 0 0 0 -10 0 0 0 0 0 0 -1 0 0 00 0 0 0 0 0 0 0 -1 0 0 Columns 23 through 250 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 4 -1 0 -1 4 -10 -1 4 在运行窗口输入 >>b=constant(5) Enter 常数项的输出结果b =[ 0.1371 0.2374 0.2742 0.2374 0.1371 0.2374 0.4112 0.4749 0.4112 0.2374 0.2742 0.4749 0.5483 0.4749 0.2742 0.2374 0.4112 0.4749 0.4112 0.2374 0.1371 0.2374 0.2742 0.2374 0.1371]T所以A*u=b 的五点差分格式为j i j i j i j i j i j i f h u u u u u ,,,,,,211114=-----+-+ (i,j=1,2……)实验二实验名称: 用Jacobi 迭代法和SOR 迭代法求解方程组 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:通过上机利用Matlab 数学软件采用Jacobi 迭代法和SOR 迭代法来求解方程组,求解过程中了解两种迭代方法的基本思想与迭代过程,并分析两种迭代方法的收敛性和实用用以及他们的异同点。

数值实验 线性代数方程组的性态与条件数的估计

数值实验 线性代数方程组的性态与条件数的估计
#34; " ( )中的结果给出 1 x x 的理论估计,并将它与1) (
给出的计算结果进行比 较,分析所得结果。注 意, 如果给出了cond( A)和 A 的估计,马上就可以给 出 A1 的估计
数值实验二
邹昌文
线性代数方程组的性态与条件 数的估计
• 问题的提出:
理论上,线性代数方程 Ax b的摄动满足 组 x A b cond( A) ( ) 1 x b 1 A A A
实验内容
Matlab中提供有函数 condest 可以用来估计 " " 矩阵的条件数,它给出 的是按1 范数的条件 数。首先构造非奇异矩 A和右端,使得方 阵 程是可以精确求解的。 再人为地引进系数矩 阵和右端的摄动 A和b,使得 A 和 b 充分 小
实验要求
ˆ 1 )假设方程Ax b的解为x,求解方程( A A) x b b 以1 范数,给出 x x ˆ xx x 的计算结果
2)选择一系列维数递增 的矩阵(可以是随机生 成的), 比较函数" condest 所需机器时间的差别。 " 考虑若干逆 是已知矩阵,借助函数 eig" 很容易给出cond2 ( A)的数值, " 将它与函数 cond( A,2)"所得到的结果比较 "
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教学科研实验项目表
课程名称:数值线性代数实验层次:(√本科、研究生、科研)专业方向:信息与计算科学 2005年4月 7日
,编制不选主元、列主元、全主元Gauss
通用子程序。

比较三种算法的计算结果。

求解正定方程的Chol esky 分解算法
掌握Chol esky 三角分解的编程技巧。

与第一个实验结果比较,认识求解正定方程不必要选取主元。

(1) b 随机选取,(2)系数矩阵为100阶矩阵
(3)系数矩阵为40阶Hilbert 矩阵;b 的第i 个分量
编写算法子程序。

用列主元Gauss 算本实验方程组。

比较两种算法的实验结果,评论各个算法的优劣。

(1)求前两个实验中的三个线性方程组,并根据计算结果,评价各种算法的优劣。

(2)求
使在残向量的2范数最
小的意义下拟合下面的数据
-1.00 -0.75 -0.50 0.00
0.25 0.50
0.75
1.00
0.8125
0.75
1.00
1.3125
1.75
2.3125
编制通用子程序。

分析计算结果。

考虑两点边值问题
的数值解。

将 [0,1] 区间n等分,令
,,得到差分方程用Jacobi、G-S、
超松驰迭代法编
程计算数值解,
并与精确解
+
进行比较,给出
精度分析。

4
考虑如下的Dirichlet问题
其中为正方形区域的边界。

其差分方程编制算法程序,分析计算结果。

计算50阶到100阶三对角矩阵的特征值和特征向量编制
法、二分法通用子程序。

用Jacobi
阵的全部特征值和特征向量。

用二分法求其最大和最小特征值,再利用反幂法求对应特征向量。

相关文档
最新文档