数值线性代数大作业报告
数值线性代数第二版徐树方高立张平文上机习题第一章实验报告(供参考)
上机习题1.先用你所熟悉的的计算机语言将不选主元和列主元Gauss 消去法编写成通用的子程序;然后用你编写的程序求解84阶方程组;最后将你的计算结果与方程的精确解进行比较,并就此谈谈你对Gauss 消去法的看法。
Sol :(1)先用matlab 将不选主元和列主元Gauss 消去法编写成通用的子程序,得到P U L ,,: 不选主元Gauss 消去法:[])(,A GaussLA U L =得到U L ,满足LU A =列主元Gauss 消去法:[])(,,A GaussCol P U L =得到P U L ,,满足LU PA =(2)用前代法解()Pb or b Ly =,得y用回代法解y Ux =,得x求解程序为()P U L b A Gauss x ,,,,=(P 可缺省,缺省时默认为单位矩阵)(3)计算脚本为ex1_1代码%算法(计算三角分解:Gauss 消去法)function [L,U]=GaussLA(A)n=length(A);for k=1:n-1A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);endU=triu(A);L=tril(A);L=L-diag(diag(L))+diag(ones(1,n));end%算法计算列主元三角分解:列主元Gauss消去法)function [L,U,P]=GaussCol(A)n=length(A);for k=1:n-1[s,t]=max(abs(A(k:n,k)));p=t+k-1;temp=A(k,1:n);A(k,1:n)=A(p,1:n);A(p,1:n)=temp;u(k)=p;if A(k,k)~=0A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); elsebreak;endendL=tril(A);U=triu(A);L=L-diag(diag(L))+diag(ones(1,n));P=eye(n);for i=1:n-1temp=P(i,:);P(i,:)=P(u(i),:);P(u(i),:)=temp;endend%高斯消去法解线性方程组function x=Gauss(A,b,L,U,P)if nargin<5P=eye(length(A));endn=length(A);b=P*b;for j=1:n-1b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); endb(n)=b(n)/L(n,n);y=b;for j=n:-1:2y(j)=y(j)/U(j,j);y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);endy(1)=y(1)/U(1,1);x=y;endex1_1clc;clear;%第一题A=6*eye(84)+diag(8*ones(1,83),-1)+diag(ones(1,83),1);b=[7;15*ones(82,1);14];%不选主元Gauss消去法[L,U]=GaussLA(A);x1_1=Gauss(A,b,L,U);%列主元Gauss消去法[L,U,P]=GaussCol(A);x1_2=Gauss(A,b,L,U,P);%解的比较subplot(1,3,1);plot(1:84,x1_1,'o-');title('Gauss');subplot(1,3,2);plot(1:84,x1_2,'.-');title('PGauss');subplot(1,3,3);plot(1:84,ones(1,84),'*-');title('精确解');结果为(其中Gauss表示不选主元的Gauss消去法,PGauss表示列主元Gauss 消去法,精确解为[]'⨯8411,,1 ):-6-4-202468Gauss050100PGauss 00.20.40.60.811.21.41.61.82精确解由图,显然列主元消去法与精确解更为接近,不选主元的Gauss 消去法误差比列主元消去法大,且不如列主元消去法稳定。
解线性方程组的迭代法数值计算上机实习报告
解线性方程组的迭代法数值计算上机实习报告一.综述:考虑用迭代法求解线性方程组,取真解为,初始向量取为零,以范数为度量工具,取误差指标为.其中。
分别完成下面各小题:第六题:编制程序实现Jacobi迭代方法和Gauss-Seidel 方法。
对应不同的停机标准(例如残量,相邻误差,后验误差停机标准),比较迭代次数以及算法停止时的真实误差。
其中残量准则:、相邻误差准则:后验误差停机准则:解:为了结果的可靠性,这里我分别对矩阵阶数为400、2500、10000进行试验,得到对应不同的方法、取不同的停机标准,迭代次数和真实误差的数据如下:分析上面数据可知,对应不同的停机标准,GS方法的迭代次数都近似为J方法的一半,这与理论分析一致。
而且从迭代次数可以看出,在这个例子中,作为停机标准,最强的依次为后验误差,再到残量,再到相邻误差。
第七题:编写程序实现SOR 迭代方法。
以真实误差作为停机标准,数值观测SOR 迭代方法中松弛因子对迭代次数的影响,找到最佳迭代因子的取值。
解:本题中考虑n=50,即对2500阶的矩阵A。
由于我们已经知道要使SOR方法收敛,松弛因子需要位于。
下面来求SOR方法中对应的最佳松弛因子。
应用筛选法的思想,第一次我们取松弛因子,间距为0.05,得到的对应的图像如下,从图中可以看出迭代次数随着的增大,先减小后变大,这与理论相符。
同时可以看出最佳松弛因子.第二次将区间细分为10份,即取,可得下面第二幅图像,从图像中可以看出最佳松弛因子第八题:对于J 方法,GS方法和(带有最佳松弛因子的)SOR 方法,分别绘制误差下降曲线以及残量的下降曲线(采用对数坐标系),绘制(按真实误差)迭代次数与矩阵阶数倒数的关系;解:对于J方法,考虑n=50时,采用相邻误差为迭代的终止条件,误差下降曲线及残量的下降曲线如下:对于GS方法,考虑n=50的时候,采用相邻误差作为迭代的终止条件,所得到的残量和误差的下降曲线如下图:从中可以看出,当相邻误差满足误差指标时,真实误差却并不小于误差指标,而为2.6281e-04。
线性代数实验报告[1].doc
线性代数实验报告
专业班级姓名学号
实验日期年月日星期
成绩评定教师签名批改日期
题目1:交通流量问题:
下图给出某城市部分街道的交通流量(单位:辆/小时):
假设:(1)全部流入网络的流量等于全部流出网络的流量;
(2)全部流入一个节点的流量等于全部流出此节点的流量. 试建立数学模型,以确定该交通网络未知部分的具体流量.
(要求:1. 模型建立(即:列出线性方程组),2. 求解,3. 输出结果,4. 结果综述.)
题目2:求一个正交变换,将二次型:434241312
1242322211262421993x x x x x x x x x x x x x x f --++-+++=
化为标准型 ,判断此二次型的正定性。
(完整word版)数值线性代数第二版徐树方高立张平文上机习题第四章实验报告
第四章上机习题1考虑两点边值问题⎪⎩⎪⎨⎧==<<=+.1)1(,0)0(10 ,22y y a a dx dy dx y d ε 容易知道它的精确解为ax e e ay x +---=--)1(111εε为了把微分方程离散化,把[0,1]区间n 等分,令h=1/n ,1,,1,-==n i ih x i得到差分方程,21211a hy y h y y y i i i i i =-++-++-ε简化为 ,)2()(211ah y y h y h i i i =++-+-+εεε从而离散化后得到的线性方程组的系数矩阵为⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-++-++-++-=)2()2()2()2(h h h h h h h A εεεεεεεεεε 对,100,2/1,1===n a ε分别用Jacobi 迭代法,G-S 迭代法和SOR 迭代法求线性方程组的解,要求有4位有效数字,然后比较与精确解得误差。
对,0001.0,01.0,1.0===εεε考虑同样的问题。
解 (1)给出算法:为解b Ax =,令U L D A --=,其中][ij a A =,),,,(2211nn a a a diag D = ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡------=-00001,21323121n n n n a a a a a a L,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡------=-0000,122311312 n n n n a a a a a a U 利用Jacobi 迭代法,G-S 迭代法,SOR 迭代法解线性方程组,均可以下步骤求解: step1给定初始向量x0=(0,0,...,0),最大迭代次数N ,精度要求c ,令k=1 step2令x=B*x0+gstep3若||x-x0||2<c ,算法停止,输出解和迭代次数k ,否则,转step4 step4若k>=N,算法停止,迭代失败,否则,令x0=x ,转step2在Jacobi 迭代法中,B=D -1*(L+U),g=D -1*b在G-S 迭代法中,B=D -1*(L+U),g=D -1*b在SOR 迭代法中,B=(D-w*L)-1*[(1-w)*D+w*U],g=w*(D-w*L)-1*b另外,在SOR 迭代法中,上面算法step1中要给定松弛因子w ,其中0<w<2 为计算结果,规定w=0.5。
线性代数报告
建造环境与能源应用工程 1 班陈嘉威 3013214105杜澎磊 3013214106宋子旭 3013214127近几十年来,随着科学技术的发展,特殊是计算机技术的发展,数学的应用领域已由传统的物理领域(包括力学、电子等学科以及土木、机电等工程技术) 迅速扩展到非物理领域(人口、经济、金融、生物、医学等)。
数学在发展高科技、提高生产力水平和实现现代化管理等方面的作用越来越明显。
这就要求我们如何将实际问题经过分析、简化,转化为一个数学问题,然后用一个适当的数学方法去解决。
线性代数是一个数学分支,是代数的一个重要学科它对于培养学生严谨的逻辑推理和抽象思维能力起着不可或者缺的作用。
线性代数研究最多的是矩阵。
矩阵是一个数表,而这个数表可以进行变换,以形成新的数表。
也就是说如果抽象出某种变化规律,就可以用代数的理论对研究的数表进行变换,并得出想要的一些结论。
所以,矩阵是一种方便的计算工具,可以以简单的形式表示复杂的公式,比如数字图象处理、计算机图形学、计算几何学、人工智能、网络通信以及普通的算法设计和分析等。
因此,矩阵的应用日益广泛,不少领域都要用到矩阵的知识。
本文将要探讨的,就是矩阵在实际生活中的一些应用形式。
经过分析和筛选,本文将从以下三个方面展开论述:可逆矩阵在保密通信中的应用,矩阵与成本利润的计算以及矩阵与数字图象。
随着计算机与网络技术的迅猛发展,通信技术中的保密工作显得尤其重要, 怎样确保通信过程中信息的安全变得至关重要, 因此大量各具特色的密码体系不 断涌现。
矩阵作为线性代数的重要组成部份, 其应用领域也从传统的物理领域迅 速扩展到非物理领域,特别是在保密通信中发挥着重要作用。
矩阵的定义: m 行n 列的矩形数表称为m 行n 列矩阵,简称m × n 矩阵,矩阵用大写黑体字母A ,B ,C ,…表示。
如: A=[a 1a 2…a a 1 1a 12……a22… ] 这m × n 个数称为矩阵m1 m2 mnA 的元素, a ij 称为矩阵A 的第i 行第j 列元素,一个m × n 矩阵A 也可简记为A = (a ij ) m×n 或者 A m×n 。
数值代数实验报告(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 迭代法来求解方程组,求解过程中了解两种迭代方法的基本思想与迭代过程,并分析两种迭代方法的收敛性和实用用以及他们的异同点。
线性代数学习报告doc
线性代数学习报告篇一:浅谈学习线性代数的心得体会沈阳药科大学选修课结课论文沈阳药科大学浅谈学习线性代数的心得体会学校:沈阳药科大学姓名:郑亚娟学号:10106331 专业:药物制剂年级:XX级班级:03班一、内容摘要线性代数是一门较抽象的数学课程,但是线性代数除了其抽象之外还具有另外一个重要的特点:“实用性”,由于计算机的飞速发展和广泛应用,线性代数已成为越来越多的科技工作者必不可少的数学工具。
掌握线性代数的基本概念、基本理论与基本方法,为解决工科各专业的实际问题,为进一步学习相关课程及扩大数学知识都将奠定必要的数学基础。
在初步学习了高等数学这门课程后,里面涉及了一些线性代数的求解方法,听老师说,某些题目用线性代数的方法求解更容易,但是由于我们还未系统的学习这门课程,老师也是一带而过,并未深讲。
致使我对线性代数这门学科有了浓厚的兴趣,在首先简单了解了这门学科的背景后,发现线性代数是一门丰富多彩充满未知的科学,在看到学校开设了这门课程的选修课后,我义无反顾的叫我们全寝室的人都选修了这门奇妙的课程。
学习线性代数的初步感受就是它的概念多,推理论证多,基本理论与结论多,线性代数在内容上,思想方法上及论证方法上都与“高等数学”有所区别。
它具有较强的逻辑性和抽象性,一开始就要高度重视。
它又与中学所学的代数有一定的联系,所以有些内容并不是完全陌生的。
我相信只要我每节每章地,一步一个脚印的弄懂、弄通,记住有关的概念和结论,并通过反复的应用(练习)来掌握它,循序渐进掌握这门课程是容易的。
关键词:数学线性代数背景应用计算方法感受二、绪论2.1 线性代数的发展史由于费马和笛卡儿的工作,线性代数基本上出现于十七世纪。
直到十八世纪末,线性代数的领域还只限于平面与空间。
十九世纪上半叶才完成了到n维向量空间的过渡,矩阵论始于凯莱,在十九世纪下半叶,因若当的工(本文来自: 小草范文网:线性代数学习报告)作而达到了它的顶点。
1888年,皮亚诺以公理的方式定义了有限维或无限维向量空间。
数值线性代数第二版徐树方高立张平文上机习题第一章实验报告
@上机习题1.先用你所熟悉的的计算机语言将不选主元和列主元Gauss 消去法编写成通用的子程序;然后用你编写的程序求解84阶方程组;最后将你的计算结果与方程的精确解进行比较,并就此谈谈你对Gauss 消去法的看法。
Sol :(1)先用matlab 将不选主元和列主元Gauss 消去法编写成通用的子程序,得到P U L ,,: 不选主元Gauss 消去法:[])(,A GaussLA U L =得到U L ,满足LU A = 列主元Gauss 消去法:[])(,,A GaussCol P U L =得到P U L ,,满足LU PA = (2)用前代法解()Pb or b Ly =,得y用回代法解y Ux =,得x]求解程序为()P U L b A Gauss x ,,,,=(P 可缺省,缺省时默认为单位矩阵)(3)计算脚本为ex1_1 代码%算法(计算三角分解:Gauss 消去法) function [L,U]=GaussLA(A) n=length(A);—for k=1:n-1A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); endU=triu(A);L=tril(A);L=L-diag(diag(L))+diag(ones(1,n));end!%算法计算列主元三角分解:列主元Gauss消去法)function [L,U,P]=GaussCol(A)n=length(A);for k=1:n-1[s,t]=max(abs(A(k:n,k)));p=t+k-1;temp=A(k,1:n);¥A(k,1:n)=A(p,1:n);A(p,1:n)=temp;u(k)=p;if A(k,k)~=0A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n); elsebreak;^endendL=tril(A);U=triu(A);L=L-diag(diag(L))+diag(ones(1,n)); P=eye(n);for i=1:n-1temp=P(i,:);P(i,:)=P(u(i),:);{P(u(i),:)=temp;endend%高斯消去法解线性方程组function x=Gauss(A,b,L,U,P)if nargin<5P=eye(length(A));¥endn=length(A);b=P*b;for j=1:n-1b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);endb(n)=b(n)/L(n,n);<y=b;for j=n:-1:2y(j)=y(j)/U(j,j);y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);endy(1)=y(1)/U(1,1);x=y;|endex1_1clc;clear;%第一题A=6*eye(84)+diag(8*ones(1,83),-1)+diag(ones(1,83),1); b=[7;15*ones(82,1);14];%不选主元Gauss消去法)[L,U]=GaussLA(A);x1_1=Gauss(A,b,L,U);%列主元Gauss消去法[L,U,P]=GaussCol(A);x1_2=Gauss(A,b,L,U,P);%解的比较subplot(1,3,1);plot(1:84,x1_1,'o-');title('Gauss'); subplot(1,3,2);plot(1:84,x1_2,'.-');title('PGauss');(subplot(1,3,3);plot(1:84,ones(1,84),'*-');title('精确解');结果为(其中Gauss 表示不选主元的Gauss 消去法,PGauss 表示列主元Gauss消去法,精确解为[]'⨯8411,,1 ):8Gauss50100PGauss精确解由图,显然列主元消去法与精确解更为接近,不选主元的Gauss 消去法误差比列主元消去法大,且不如列主元消去法稳定。
线性代数实验报告汇总-知识归纳整理
数学实验报告题目第一次实验题目一、 实验目的1.熟悉MATLAB 的矩阵初等运算;2.掌握求矩阵的秩、逆、化最简阶梯形的命令; 3.会用MABLAB 求解线性方程组二、 问题求解和程序设计流程1. 已知⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=351503224A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=112302431B ,在MATLAB 命令窗口中建立A 、B矩阵并对其举行以下操作:(1) 计算矩阵A 的行列式的值det()?A = (2) 分别计算下列各式:B A -2 、 B A *和B A *.、 1-AB 、 B A 1-、 2A 、 T A解:(1) 编写程序如下:A=[4 -2 2;-3 0 5;1 5 3];B=[1 3 4;-2 0 -3;2 -1 1]; a=det(A) 运行结果: a = -158(2)编写程序如下: C=2*A-BD=A*B E=A.*B F=A/BG=A\B H=A*A K=A'运行结果:C =7 -7 0 -4 0 13知识归纳整理求知若饥,虚心若愚。
线性代数实验报告0 11 5D =12 10 247 -14 -7-3 0 -8E =4 -6 86 0 -152 -5 3F =0 0 2.0000-2.7143 -8.0000 -8.14292.42863.0000 2.2857G =0.4873 0.4114 1.00000.3671 -0.4304 0-0.1076 0.2468 0H =24 2 4-7 31 9-8 13 36K =4 -3 1-2 0 52 5 32.在MATLAB中分别利用矩阵的初等变换及函数rank、函数inv求下列矩阵的秩:线性代数实验报告(1) ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----=4211104532361A 求 Rank(A)=? (2) 3501120010201202B ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦求?1=-B 解:(1)编写程如下:format ratA=[1 -6 3 2;3 -5 4 0;-1 -11 2 4]; rref(A) 运行结果: ans =1 0 0 -8/5 0 1 0 0 0 0 1 6/5 由A 经初等变换后得到的行最简型可知:A 的秩为3。
线性代数实验报告
线性代数实验报告一、实验目的线性代数是一门重要的数学基础课程,它在工程、科学、计算机等领域都有着广泛的应用。
本次实验的目的是通过实际操作和计算,加深对线性代数基本概念和方法的理解,提高运用线性代数知识解决实际问题的能力。
二、实验环境本次实验使用了软件名称软件进行计算和绘图。
三、实验内容(一)矩阵的运算1、矩阵的加法和减法给定两个矩阵 A 和 B,计算它们的和 A + B 以及差 A B。
观察运算结果,验证矩阵加法和减法的规则。
2、矩阵的乘法给定两个矩阵 C 和 D,其中 C 的列数等于 D 的行数,计算它们的乘积 CD。
分析乘法运算的结果,理解矩阵乘法的意义和性质。
(二)行列式的计算1、二阶和三阶行列式的计算手动计算二阶和三阶行列式的值,熟悉行列式的展开法则。
使用软件验证计算结果的正确性。
2、高阶行列式的计算选取一个四阶或更高阶的行列式,利用软件计算其值。
观察行列式的值与矩阵元素之间的关系。
(三)线性方程组的求解1、用高斯消元法求解线性方程组给定一个线性方程组,将其增广矩阵通过初等行变换化为行阶梯形矩阵。
求解方程组的解,并验证解的正确性。
2、用矩阵的逆求解线性方程组对于系数矩阵可逆的线性方程组,计算系数矩阵的逆矩阵。
通过逆矩阵求解方程组,并与高斯消元法的结果进行比较。
(四)向量组的线性相关性1、判断向量组的线性相关性给定一组向量,计算它们的线性组合是否为零向量。
根据计算结果判断向量组的线性相关性。
2、求向量组的极大线性无关组对于给定的向量组,通过初等行变换找出极大线性无关组。
(五)特征值和特征向量的计算1、计算矩阵的特征值和特征向量给定一个矩阵,计算其特征值和对应的特征向量。
验证特征值和特征向量的定义和性质。
2、利用特征值和特征向量进行矩阵对角化对于可对角化的矩阵,将其化为对角矩阵。
四、实验步骤(一)矩阵的运算1、首先在软件中输入矩阵 A 和 B 的元素值。
2、然后使用软件提供的矩阵加法和减法功能,计算 A + B 和 A B 的结果。
线性代数实验报告
线性代数实验报告2014年1月班级学号姓名分工信息31 2130502020 徐豪实验过程及设计信息31 2130502017 宋天源实验过程及设计信息31 2130502014 李兆轩实验报告及设计信息31 2130502018 凃缘实验过程及报告一.实验目的通过以下六道线性代数练习题,熟悉Matlab的基本应用与编程技巧,学会运用Matlab的一些主要功能。
命令,通过建立数学模型解决理论或实际问题。
提高学习数学的积极性,提高对数学的应用意识并能够用所学的数学知识结合计算机技术去认识和解决实际问题,从而使数学学习更有创造性。
进而更加深刻的理解线性代数中的基本概念和基本计算方法,在对行列式,矩阵的秩,矩阵的特征值等典型问题理解更加透彻,运用更加得心应手,真正做到理论与实践相结合。
二.实验过程1.实验题目已知矩阵A={{4,-2,2}{-3,0,5}{1,5,3}},B={1,3,4}{-2,0,-3}{2,-1,1}},在MATLAB命令窗口中建立A,B矩阵并对其进行以下操作:(1)计算矩阵A的行列式。
(2)分别计算下列各式:2A-B,A*B和A.*B,AB^-1,A^-1B,A^2,A^T实验过程:(1)按要求输入A,B矩阵,用det(A)求A的行列式。
(2)A*B计算矩阵A与B相乘所得的矩阵而A.*B用于计算矩阵A与B矩阵对应元素分别相乘,二者是有区别的。
在MATLAB中用A’标示A 的转置,用A\B计算在矩阵B可逆的情况下AB^-1而A.\B表示A可逆的情况下A^-1B,乘方表示与实数相同。
实验结果:2.实验题目在MATLAB中分别利用矩阵的初等变换及函数rank,函数inv求下列矩阵的秩:(1)A={{1,-6,3,2}{3,-5,4,0}{-1,-11,2,4}}求Rank(A)(2)B={{3,5,0,1}{1,2,0,0}{1,0,2,0}{1,2,0,2}},求B^-1实验过程:分别输入A,B矩阵后,用rank函数,即rank(A)来求A的秩,用inv 函数即int(B)来求B的逆矩阵。
数值代数(第05周)实验报告()
2.1算法描述
得分:
(写出列主元Gauss消去法的计算过程)
(1)找出矩阵A第i到m行主元绝对值最大的位置并将最大元素所在行与该列第一行互换
(2)单位矩阵做同样的行变换
(3)构成L的下三角矩阵非对角线元素做同样的行变换
2.2程序清单
2.2.1写出列主元Gauss消去法的函数代码
数值代数(第05周)实验报告
学号
201505
姓名
实验目的
学习列主元Gauss消去法
1、实验要求
1.1给定一个n x n级矩阵A,用列主元Gauss消去法将矩阵分解为PA=LU形式,其中P为一个n x n级置换矩阵,L为一个n x n级单位下三角形矩阵,U为一个n x n级上三角形矩阵.
1.2综合运用列主元Gauss消去法求解线性方程组Ax=b.
P=eye(n);
L=eye(n);
L1=zeros(n);
U=doubleபைடு நூலகம்A);
fork=1:n-1
forr=k+1:n
A(r,k)=A(r,k)/A(k,k);
A(r,k+1:n)= A(r,k+1:n)+A(r,k)*A(r,k+1:n);
end
end
U=triu(A);
L=tril(A,-1)+eye(n);
得分:
function [L,U,P] = GaussElimColPiv(A)
%列主元的Gauss消去法
%输入
% A: nxn级矩阵
%输出
% L: nxn级单位下三角矩阵形矩阵
% U: nxn级上三角形矩阵
% P:置换矩阵
数值线性代数第二版徐树方高立张平文上机习题第二章实验报告
(1)估计5到20阶Hilbert 矩阵的∞数条件数(2)设n n R A ⨯∈⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡------=111111111011001,先随机地选取n R x ∈,并计算出x A b n =;然后再用列主元Gauss 消去法求解该方程组,假定计算解为∧x 。
试对n 从5到30估计计算解∧x 的精度,并且与真实相对误差作比较。
解(1)分析:利用for 使n 从5循环到20,利用()hilb 函数得到Hilbert 矩阵A ;先将算法2.5.1编制成通用的子程序,利用算法2.5.1编成的子程序)(B opt v =,对TA B -=求解,得到∞-1A的一个估计值v v =~;再利用inf),(A norm 得到∞A ;则条件数inf),(1A norm v A A K *==∞∞-。
另,矩阵A 的∞数条件数可由inf),(A cond 直接算出,两者可进行比较。
程序为1 算法2.5.1编成的子程序)(B opt v =function v=opt(B)k=1;n=length(B);x=1./n*ones(n,1); while k==1 w=B*x;v=sign(w); z=B'*v;if norm(z,inf)<=z'*x v=norm(w,1); k=0; elsex=zeros(n,1);[s,t]=max(abs(z)); x(t)=1; k=1; end end end2 问题(1)求解 ex2_1for n=5:20A=hilb(n);B=inv(A.');v=opt(B);K1=v*norm(A,inf);K2=cond(A,inf);disp(['n=',num2str(n)])disp(['估计条件数为',num2str(K1)])disp(['实际条件数为',num2str(K2)])end计算结果为n=5估计条件数为943656实际条件数为943656n=6估计条件数为29070279.0028实际条件数为29070279.0028n=7估计条件数为985194887.5079实际条件数为985194887.5079n=8估计条件数为.7717实际条件数为.7717n=9估计条件数为86.422实际条件数为86.422n=10估计条件数为750.67实际条件数为750.67n=11估计条件数为49344实际条件数为49344Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.547634e-17.> In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.547634e-17.> In cond at 47In ex2_1 at 6n=12估计条件数为3.3713e+16实际条件数为3.3713e+16Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 7.847381e-19.Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 7.847381e-19.> In cond at 47In ex2_1 at 6n=13估计条件数为1.5327e+18实际条件数为1.5327e+18Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.246123e-18.> In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.246123e-18.> In cond at 47In ex2_1 at 6n=14估计条件数为4.8374e+17实际条件数为4.8374e+17Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 8.491876e-19.> In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 8.491876e-19.> In cond at 47In ex2_1 at 6n=15估计条件数为4.9674e+17实际条件数为5.3619e+17Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.137489e-19.> In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.137489e-19.> In cond at 47In ex2_1 at 6n=16估计条件数为8.3166e+17实际条件数为8.3167e+17Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 6.244518e-19.> In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 6.244518e-19.> In cond at 47n=17估计条件数为1.093e+18 实际条件数为1.093e+18Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.693737e-19. > In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.693737e-19. > In cond at 47 In ex2_1 at 6 n=18估计条件数为2.0651e+18 实际条件数为2.7893e+18Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.264685e-19. > In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.264685e-19. > In cond at 47 In ex2_1 at 6 n=19估计条件数为2.9357e+18 实际条件数为2.9357e+18Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.351364e-19. > In ex2_1 at 3Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.351364e-19. > In cond at 47 In ex2_1 at 6 n=20估计条件数为2.674e+18 实际条件数为6.473e+18结果分析随着矩阵阶数增加,估计值误差开始出现,20,17,16,15=n 时估计条件数与实际值存在误差;且条件数很大,Hilbert 矩阵为病态的。
数值线性代数大作业报告
数值线性代数实验大报告指导老师:赵国忠姓名:1108300001 刘帅1108300004 王敏1108300032 郭蒙一、实验名称:16题P75上机习题二、实验目的:编制通用的子程序,完成习题的计算任务三、实验内容与要求:P75上机习题先用熟悉的计算机语言将算法2.5.1编制成通用的子程序,然后再用所编制的子程序完成下面两个计算任务:(1) 估计5到20阶Hilbert 矩阵的无穷范数条件数。
(2) 设A n = 11...111................1-1 (01)-- 先随机地选取x ∈R n ,并计算出b=An x;然后再用列主元Gauss 消去法求解该方程组,假定计算解为∧x .试对n 从5到30估计计算解∧x 的精度,并且与真实的相对误差作比较。
四、 实验原理:(1)矩阵范数(martix norm )是数学上向量范数对矩阵的一个自然推广。
利用for循环和cond (a )Hilbert 求解Hilbert 矩阵的无穷范数,再利用norm(a,inf)求矩阵的无穷范数条件数。
(2)本题分为4步来求解。
先运用rand 随机选取x ∈R n,输入A n 矩阵,编制一个M 文件计算出b 。
第二步用列主元高斯消去法求解出方程的解X2。
第三步建立M 文件: soluerr.m 估计计算解∧x 的精度。
第四步, 建立M 文件: bijiao.m ,与真实相对误差作比较。
五、 实验过程:(1)程序:clearfor n=5:20for i=1:nfor j=1:na(i,j)=1/(i+j-1);endendc=cond(a);f=norm(c,inf);fprintf('n=%3.0f\nnorm(c,inf)%e\n',n,f) end运行结果:n= 5norm(c,inf)4.766073e+005n= 6norm(c,inf)1.495106e+007n= 7norm(c,inf)4.753674e+008n= 8norm(c,inf)1.525758e+010n= 9norm(c,inf)4.931542e+011n= 10norm(c,inf)1.602467e+013n= 11norm(c,inf)5.224376e+014n= 12norm(c,inf)1.698855e+016n= 13norm(c,inf)3.459404e+017n= 14norm(c,inf)4.696757e+017n= 15norm(c,inf)2.569881e+017n= 16norm(c,inf)7.356249e+017n= 17norm(c,inf)4.362844e+017n= 18norm(c,inf)1.229633e+018n= 19norm(c,inf)9.759023e+017n= 20norm(c,inf)1.644051e+018(2)程序:M文件:matrix1.mfunction [a,b,x1]=matrix1(n) format longA1=-1*ones(n,n)A2=tril(A1)for i=1:nA2(i,i)=1endA2(:,n)=1a=A2x1=rand(n,1)b=A2*x1end运行结果:>> A1 =-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1A2 =-1 0 0 0 0 -1 -1 0 0 0 -1 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 -1 0 0 0 -1 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0-1 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 1 0 0 0 -1 -1 1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 1 0 0 0 -1 -1 1 0 0 -1 -1 -1 1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 1 0 0 0 -1 -1 1 0 0 -1 -1 -1 1 0 -1 -1 -1 -1 1A2 =1 0 0 0 1 -1 1 0 0 1 -1 -1 1 0 1 -1 -1 -1 1 1 -1 -1 -1 -1 1a =-1 1 0 0 1 -1 -1 1 0 1 -1 -1 -1 1 1 -1 -1 -1 -1 1x1 =0.8147236863931790.9057919370756190.1269868162935060.9133758561390190.632359246225410b =1.4470829326185890.723427496907850-0.961169560949882-0.301767337397875-2.128519049675914a =1 0 0 0 1 -1 1 0 0 1 -1 -1 1 0 1 -1 -1 -1 1 1 -1 -1 -1 -1 1b =1.4470829326185890.723427496907850-0.961169560949882-0.301767337397875-2.128519049675914x1 =0.8147236863931790.9057919370756190.1269868162935060.9133758561390190.632359246225410M文件:LZYgauss.mfunction[x2]=LZYgauss(a,b)format longn=length(a);x2=zeros(n,1);a=[a b];for k=1:n-1max=k;for i=k+1:nif a(i,k)>a(max,k)max=i;endendtemp=a(k,k:n+1);a(k,k:n+1)=a(max,k:n+1);a(max,k:n+1)=temp;for i=k+1:na(i,k)=-a(i,k)/a(k,k);a(i,k+1:n+1)=a(i,k+1:n+1)+a(i,k)*a(k,k+1:n+1);endendx2(n,1)=a(n,n+1)/a(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum=sum+x2(j,1)*a(i,j);endx2(i,1)=(a(i,n+1)-sum)/a(i,i);end运行结果:>> LZYgauss(a,b)ans =0.8147236863931790.9057919370756190.1269868162935060.913375856139020 0.632359246225410估计计算解x的精度:M文件: soluerr.mfunction [x,error]=soluerr(a,b)format long%估计计算解的精度% 算法:列主元Gauss消去法,其中% A --- 系数矩阵% b-右端项% index --- index=0表示计算成败;index=1表示计算成功%输出结果:error--本算法给出的计算解的估计% normA--逆矩阵无穷范数估计% rnorm--计算解的残量[n,m]=size(a); nb=length(b);if n~=merror('The rows and columns of matrix a must be equal!');return;endif m~=nberror('The columns of a must be equal the dimension of b!'); return;endindex=1;%列主元矩阵三角分解[L,U,u,index_col]=Gauss_col(a);%解下三角方程组Ly=Pb[y,index_low]=Gauss_low(L,b(u));%解上三角方程组Ux=y[x,index_upp]=Gauss_upp(U,y);%输出数值解xpause(0.3)%估计矩阵逆的无穷大范数normA=normAinv(L,U,u);%估计计算解的残量rnorm=norm(b-a*x,inf);%计算右端项bnorm=norm(b,inf);%计算矩阵A的范数Anorm=norm(a,inf);%计算解的精度error=normA*Anorm*rnorm/bnorm;运行结果:>> [x,error]=soluerr(a,b)x =0.8147236863931790.9057919370756190.1269868162935060.9133758561390200.632359246225410x =0.8147236863931790.9057919370756190.1269868162935060.9133758561390200.632359246225410error =5.215941218821592e-016X1与真实相对误差做比较M文件:bijiao.mfunction [x,x1,error,error1]=bijiao(a,b,n) [a,x1]=matrix1(n)[x,error]=soluerr(a,b)error1=abs((x-x1)/x1)运行结果:>>x =0.8147236863931790.9057919370756190.1269868162935060.9133758561390200.632359246225410x1 =0.9578935505663481.6132601689718680.629241553693582-0.799716694069468-1.770467991515150error =5.215941218821592e-016error1 =Columns 1 through 40 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0Column 50.0808655478999350.3995939126190040.2836847318376260.9675930648949141.357170674226221六、结果分析:1、矩阵范数(martix norm)是数学上向量范数对矩阵的一个自然推广。
大学数学实验五_线性代数方程组的数值解法
【实验目的】 1、学会用 MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解
的稳定性作初步分析。 2、通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】
3 已知方程组 Ax=b,其中
,定义为
试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对 收敛速度的影响。实验要求: (1) 选取不同的初始向量 x(0)和不同的方程组的右端项向量 b,给定迭代误差要求,用雅
k=k+1; xj=Bj*xj+fj; 多输出了矩阵 P,矩阵 P 可视为一个行向量,其每个元素均为迭代 k 次后得到的 xk。这样以 k 为横轴,解向量为纵轴,可输出图形观察 xk 是否收敛。函数 GaussSeidel 也需作同样修改,修改后的函数在此不再赘述。
模型: 已知某年该植物的数量为 x0,记第 k 年的植物数量为 xk,那么有 xk + pxk-1 + qxk-2 = 0 (k = 2, 3, …… , n)
其中 p = -a1bc,q = -a2b(1-a1)bc。若要求 n 年后数量达到 xn,则 Ax = b
其中
,
,
7
① 用稀疏系数矩阵求解。
这个函数中,n 表示矩阵 A 的阶数,在本题中恒取 20,a 表示主对角线元素的值,b 在 本题中恒取-1/4,c 在本题中恒取-1/2。
编写用雅可比迭代法求方程解的函数 Jacobi。
function [xj,k]=Jacobi(A,X0,b,e) D=diag(diag(A)); n=length(A); L=-(tril(A)-D); U=-(triu(A)-D); fj=D\b; Bj=D\(L+U); xj=X0; k=0; while norm(A*xj-b)/norm(b)>e
数值代数实验报告1
暨南大学本科实验报告专用纸课程名称数值代数成绩评定实验项目名称(填写实验所属章节名称) 指导教师刘娟实验项目编号0701******* 实验项目类型验证实验地点机房学生姓名王伟文学号2010051727学院信息科学技术学院数学系信息与计算科学专业2010级实验时间2011年9月 1 日~12月30日温度24℃第一章1.实验选题:(写出你在该项目所选的实验题目)第一章上机练习12.谈谈你对该算法的理解:(简单谈一下你是如何理解该算法的?)对算法的理解:先将84阶的矩阵A分解为一个下三角矩阵L和上三角矩阵U,先考虑下三角形方程组Ly=b,利用前代法解出y,再考虑上三角形方程组Ux=y;利用回代法解出x。
列主元gauss消去法Ax b PA LU Ly Pb Ux y=⇔===,,;3.实验内容(将实验程序及其实验结果粘贴,最好对程序各部分注释清楚,比如设置了哪些函数,这些函数的输入输出是什么,具有什么功能?)实验程序对矩阵A进行LU分解的程序function [ L,U ] = LUfac( A )for k=1:n-1A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);endL=tril(A,0);for i=1:nL(i,i)=1;endU=triu(A,0);end利用前代法解出y值的程序function [ b ] = TSL( L,b )n=size(L,1);for j=1:n-1b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);endb(n)=b(n)/L(n,n);end利用回代法解出x值的程序function [ b ] = TSU( U,b )n=size(U,1);for j=n:-1:2b(j)=b(j)/U(j,j);b(1:j-1)=b(1:j-1)-b(j)*U(1:j-1,j);endb(1)=b(1)/U(1,1);end主函数程序(‘生成84阶的矩阵A’)A=eye(84);A=6*A;for i=2:84A(i,i-1)=8;A(i-1,i)=1;end(‘生成84乘1的矩阵b’)b=ones(84,1);b=b*15;b(1)=7;b(84)=14;[L,U]=LUfac(A);(‘调用函数LUfac对矩阵A进行分解’)y=TSL(L,b);(‘调用函数TSL求解Ly=b方程’)x=TSU(U,y);(‘调用函数TSU求解UX=b方程’)用MATLAB求解得到的结果x’ans =1.0e+008 *Columns 1 through 70.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 8 through 140.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 15 through 210.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 22 through 280.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 29 through 350.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 36 through 420.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 43 through 490.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 50 through 560.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 Columns 57 through 63-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 Columns 64 through 700.0000 -0.0000 0.0000 -0.0001 0.0002 -0.0003 0.0007 Columns 71 through 77-0.0013 0.0026 -0.0052 0.0105 -0.0209 0.0419 -0.0836 Columns 78 through 840.1665 -0.3303 0.6501 -1.2582 2.3487 -4.0263 5.3684列主元gauss消去法function [L,U,P]=Lufac(A)n=size(A,1);P=eye(n,n);for i=1:n-1[r,m]=max(abs(A(i:n,i)));m=m+i-1;A([i,m],:)=A([m,i],:);P([i,m])=P([m,i]);if A(i,i)~=0A(i+1:n,i)=A(i+1:n,i)/ A(i,i);A(i+1:n,i+1:n)= A(i+1:n,i+1:n)-A(i+1:n,i)*A(i,i+1:n); endendU=triu(A);L=tril(A,-1)+eye(n,n);endA=eye(84);A=6*A;for i=2:84A(i,i-1)=8; A(i-1,i)=1; endb=ones(84,1);b=b*15;b(1)=7;b(84)=14;[L,U,P]=Lufac(A); b=P*b;y=TSL(L,b);x=TSU(U,y);求解结果为x =1.0e+025 *0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00000.0000-0.00010.0002-0.00040.0007-0.00150.0030-0.00600.0119-0.02380.0475-0.09460.1878-0.36960.7154-1.33552.2894-3.05251.教师评语、评分:(请认真对待每次数值代数实验,期末交实验报告,将计算实验成绩)2.实验选题:第三章上机习题1(3)。
线性代数实验报告3
数学实验报告
学号: , 得分:
实验 2
实验内容:
研究三个平面的位置关系
用 MATLAB 研究下面的 3 个平面
1: x + y + z = 1 2: x + y = 2 3: 2x + t2z = t 当 t 取何值时交于一点? 当 t 取何值时交于一直线? 当 t 取何值时没有公共的 交点? 并在每一种情形下, 用 MATLAB 在同一个坐标系内绘制出这 3 个平面 的图形(其中, 没有公共的交点的情况, 只要给 t 取一个适当的值即可).
实验方案: 1.
在 MATLAB 命令窗口中输入如下命令:
>> y=-20:1:20;z=y; >> [Y,Z]=meshgrid(y,z); >> X1=ones(size(Y))-Y-Z; >> X2=-2*ones(size(Y))+Y; >> X3=(-ones(size(Y))-Z)/2; >> surf(X1,Y,Z),hold on, mesh(X2,Y,Z),mesh(X3,Y,Z) 2. 在 MATLAB 命令窗口中输入如下命令: >> y=-20:1:20;z=y; >> [Y,Z]=meshgrid(y,z); >> X1=ones(size(Y))-Y-Z; >> X2=-2*ones(size(Y))+Y; >> X3=(ones(size(Y))-Z)/2; >> surf(X1,Y,Z),hold on, mesh(X2,Y,Z),mesh(X3,Y,Z)
a b c d
数值分析实验报告_清华大学__线性代数方程组的数值解法
线性代数方程组的数值解法实验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)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。
重复上述实验,观察记录并分析实验结果。
1.1程序清单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);endx1.2运行结果(1)n=10,矩阵的条件数及自动选主元Cond(A,1) =2.5575×103Cond(A,2) = 1.7276×103Cond(A,inf) =2.5575×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=[1.000000000000000, 1.000000000000000, 1.000000000000000, 1.000000000000001, 0.999999999999998, 1.000000000000004, 0.999999999999993, 1.000000000000012, 0.999999999999979, 1.000000000000028]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=[1.000000000000000,1.000000000000000,1.000000000000000,1.000000000000001,0.999999999999998,1.000000000000004,0.999999999999993,1.000000000000014,0.999999999999972,1.000000000000057,0.999999999999886,1.000000000000227,0.999999999999547,1.000000000000902,0.999999999998209,1.000000000003524,0.999999999993179,1.000000000012732,0.999999999978173,1.000000000029102]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.3简要分析计算(1)表明:对于同一矩阵,不同范数定义的条件数是不同的;Gauss消去法在消去过程中选择模最大的主元能够得到比较精确的解。
(完整word版)数值线性代数第二版徐树方高立张平文上机习题第三章实验报告
- 1 -第三章上机习题用你所熟悉的的计算机语言编制利用QR 分解求解线性方程组和线性最小二乘问题的通用子程序,并用你编制的子程序完成下面的计算任务: (1)求解第一章上机习题中的三个线性方程组,并将所得的计算结果与前面的结果相比较,说明各方法的优劣;(2)求一个二次多项式+bt+c y=at 2,使得在残向量的2范数下最小的意义下拟合表3.2中的数据;(3)在房产估价的线性模型111122110x a x a x a x y ++++=中,1121,,,a a a 分别表示税、浴室数目、占地面积、车库数目、房屋数目、居室数目、房龄、建筑类型、户型及壁炉数目,y 代表房屋价格。
现根据表3.3和表3.4给出的28组数据,求出模型中参数的最小二乘结果。
(表3.3和表3.4见课本P99-100) 解 分析:(1)计算一个Householder 变换H :由于TTvv I ww I H β-=-=2,则计算一个Householder 变换H 等价于计算相应的v 、β。
其中)/(2,||||12v v e x x v T=-=β。
在实际计算中,为避免出现两个相近的数出现的情形,当01>x 时,令212221||||)(-x x x x v n +++= ;为便于储存,将v 规格化为1/v v v =,相应的,β变为)/(221v v v T=β 为防止溢出现象,用∞||||/x x 代替 (2)QR 分解:利用Householder 变换逐步将n m A n m ≥⨯,转化为上三角矩阵A H H H n n 11 -=Λ,则有⎥⎦⎤⎢⎣⎡=0R Q A ,其中n H H H Q 21=,:),:1(n R Λ=。
在实际计算中,从n j :1=,若m j <,依次计算)),:((j m j A x =对应的)1()1()~(+-⨯+-k m k m j H即对应的j v ,j β,将)1:2(+-j m v j 储存到),:1(j m j A +,j β储存到)(j d ,迭代结束后再次计算Q ,有⎥⎥⎦⎤⎢⎢⎣⎡=-~001j j j H I H ,n H H H Q 21=(m n =时1-21n H H H Q =) (3)求解线性方程组b Ax =或最小二乘问题的步骤为i 计算A 的QR 分解;ii 计算b Q c T11=,其中):1(:,1n Q Q = iii 利用回代法求解上三角方程组1c Rx =(4)对第一章第一个线性方程组,由于R 的结果最后一行为零,故使用前代法时不计最后一行,而用运行结果计算84x 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值线性代数实验大报告指导老师:赵国忠姓名:1108300001 刘帅1108300004 王敏1108300032 郭蒙一、实验名称:16题P75上机习题二、实验目的:编制通用的子程序,完成习题的计算任务三、实验内容与要求:P75上机习题先用熟悉的计算机语言将算法2.5.1编制成通用的子程序,然后再用所编制的子程序完成下面两个计算任务:(1) 估计5到20阶Hilbert 矩阵的无穷范数条件数。
(2) 设A n = 11...111................1-1 (01)-- 先随机地选取x ∈R n ,并计算出b=An x;然后再用列主元Gauss 消去法求解该方程组,假定计算解为∧x .试对n 从5到30估计计算解∧x 的精度,并且与真实的相对误差作比较。
四、 实验原理:(1)矩阵范数(martix norm )是数学上向量范数对矩阵的一个自然推广。
利用for循环和cond (a )Hilbert 求解Hilbert 矩阵的无穷范数,再利用norm(a,inf)求矩阵的无穷范数条件数。
(2)本题分为4步来求解。
先运用rand 随机选取x ∈R n,输入A n 矩阵,编制一个M 文件计算出b 。
第二步用列主元高斯消去法求解出方程的解X2。
第三步建立M 文件: soluerr.m 估计计算解∧x 的精度。
第四步, 建立M 文件: bijiao.m ,与真实相对误差作比较。
五、 实验过程:(1)程序:clearfor n=5:20for i=1:nfor j=1:na(i,j)=1/(i+j-1);endendc=cond(a);f=norm(c,inf);fprintf('n=%3.0f\nnorm(c,inf)%e\n',n,f) end运行结果:n= 5norm(c,inf)4.766073e+005n= 6norm(c,inf)1.495106e+007n= 7norm(c,inf)4.753674e+008n= 8norm(c,inf)1.525758e+010n= 9norm(c,inf)4.931542e+011n= 10norm(c,inf)1.602467e+013n= 11norm(c,inf)5.224376e+014n= 12norm(c,inf)1.698855e+016n= 13norm(c,inf)3.459404e+017n= 14norm(c,inf)4.696757e+017n= 15norm(c,inf)2.569881e+017n= 16norm(c,inf)7.356249e+017n= 17norm(c,inf)4.362844e+017n= 18norm(c,inf)1.229633e+018n= 19norm(c,inf)9.759023e+017n= 20norm(c,inf)1.644051e+018(2)程序:M文件:matrix1.mfunction [a,b,x1]=matrix1(n) format longA1=-1*ones(n,n)A2=tril(A1)for i=1:nA2(i,i)=1endA2(:,n)=1a=A2x1=rand(n,1)b=A2*x1end运行结果:>> A1 =-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1A2 =-1 0 0 0 0 -1 -1 0 0 0 -1 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 -1 0 0 0 -1 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0-1 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 1 0 0 0 -1 -1 1 0 0 -1 -1 -1 -1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 1 0 0 0 -1 -1 1 0 0 -1 -1 -1 1 0 -1 -1 -1 -1 -1A2 =1 0 0 0 0 -1 1 0 0 0 -1 -1 1 0 0 -1 -1 -1 1 0 -1 -1 -1 -1 1A2 =1 0 0 0 1 -1 1 0 0 1 -1 -1 1 0 1 -1 -1 -1 1 1 -1 -1 -1 -1 1a =-1 1 0 0 1 -1 -1 1 0 1 -1 -1 -1 1 1 -1 -1 -1 -1 1x1 =0.8147236863931790.9057919370756190.1269868162935060.9133758561390190.632359246225410b =1.4470829326185890.723427496907850-0.961169560949882-0.301767337397875-2.128519049675914a =1 0 0 0 1 -1 1 0 0 1 -1 -1 1 0 1 -1 -1 -1 1 1 -1 -1 -1 -1 1b =1.4470829326185890.723427496907850-0.961169560949882-0.301767337397875-2.128519049675914x1 =0.8147236863931790.9057919370756190.1269868162935060.9133758561390190.632359246225410M文件:LZYgauss.mfunction[x2]=LZYgauss(a,b)format longn=length(a);x2=zeros(n,1);a=[a b];for k=1:n-1max=k;for i=k+1:nif a(i,k)>a(max,k)max=i;endendtemp=a(k,k:n+1);a(k,k:n+1)=a(max,k:n+1);a(max,k:n+1)=temp;for i=k+1:na(i,k)=-a(i,k)/a(k,k);a(i,k+1:n+1)=a(i,k+1:n+1)+a(i,k)*a(k,k+1:n+1);endendx2(n,1)=a(n,n+1)/a(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum=sum+x2(j,1)*a(i,j);endx2(i,1)=(a(i,n+1)-sum)/a(i,i);end运行结果:>> LZYgauss(a,b)ans =0.8147236863931790.9057919370756190.1269868162935060.913375856139020 0.632359246225410估计计算解x的精度:M文件: soluerr.mfunction [x,error]=soluerr(a,b)format long%估计计算解的精度% 算法:列主元Gauss消去法,其中% A --- 系数矩阵% b-右端项% index --- index=0表示计算成败;index=1表示计算成功%输出结果:error--本算法给出的计算解的估计% normA--逆矩阵无穷范数估计% rnorm--计算解的残量[n,m]=size(a); nb=length(b);if n~=merror('The rows and columns of matrix a must be equal!');return;endif m~=nberror('The columns of a must be equal the dimension of b!'); return;endindex=1;%列主元矩阵三角分解[L,U,u,index_col]=Gauss_col(a);%解下三角方程组Ly=Pb[y,index_low]=Gauss_low(L,b(u));%解上三角方程组Ux=y[x,index_upp]=Gauss_upp(U,y);%输出数值解xpause(0.3)%估计矩阵逆的无穷大范数normA=normAinv(L,U,u);%估计计算解的残量rnorm=norm(b-a*x,inf);%计算右端项bnorm=norm(b,inf);%计算矩阵A的范数Anorm=norm(a,inf);%计算解的精度error=normA*Anorm*rnorm/bnorm;运行结果:>> [x,error]=soluerr(a,b)x =0.8147236863931790.9057919370756190.1269868162935060.9133758561390200.632359246225410x =0.8147236863931790.9057919370756190.1269868162935060.9133758561390200.632359246225410error =5.215941218821592e-016X1与真实相对误差做比较M文件:bijiao.mfunction [x,x1,error,error1]=bijiao(a,b,n) [a,x1]=matrix1(n)[x,error]=soluerr(a,b)error1=abs((x-x1)/x1)运行结果:>>x =0.8147236863931790.9057919370756190.1269868162935060.9133758561390200.632359246225410x1 =0.9578935505663481.6132601689718680.629241553693582-0.799716694069468-1.770467991515150error =5.215941218821592e-016error1 =Columns 1 through 40 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0Column 50.0808655478999350.3995939126190040.2836847318376260.9675930648949141.357170674226221六、结果分析:1、矩阵范数(martix norm)是数学上向量范数对矩阵的一个自然推广。
而条件数在一定程度上刻画了扰动对方方程组解的影响程度。