数值分析上机作业2

上传人:xmg****18 文档编号:120404083 上传时间:2020-02-06 格式:DOC 页数:33 大小:100.28KB
返回 下载 相关 举报
数值分析上机作业2_第1页
第1页 / 共33页
数值分析上机作业2_第2页
第2页 / 共33页
数值分析上机作业2_第3页
第3页 / 共33页
数值分析上机作业2_第4页
第4页 / 共33页
数值分析上机作业2_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《数值分析上机作业2》由会员分享,可在线阅读,更多相关《数值分析上机作业2(33页珍藏版)》请在金锄头文库上搜索。

1、下载可编辑数值实验数值实验综述:线性代数方程组的解法是一切科学计算的基础与核心问题。求解方法大致可分为直接法和迭代法两大类。直接法指在没有舍入误差的情况下经过有限次运算可求得方程组的精确解的方法,因此也称为精确法。当系数矩阵是方的、稠密的、无任何特殊结构的中小规模线性方程组时,Gauss消去法是目前最基本和常用的方法。如若系数矩阵具有某种特殊形式,则为了尽可能地减少计算量与存储量,需采用其他专门的方法来求解。Gauss消去等同于矩阵的三角分解,但它存在潜在的不稳定性,故需要选主元素。对正定对称矩阵,采用平方根方法无需选主元。方程组的性态与方程组的条件数有关,对于病态的方程组必须采用特殊的方法进

2、行求解。实验一一、 实验名称:矩阵的LU分解.二、 实验目的:用不选主元的LU分解和列主元LU分解求解线性方程组 Ax=b, 并比较这两种方法.三、 实验内容与要求(1)用所熟悉的计算机语言将不选主元和列主元LU分解编成通用的子程序,然后用编写的程序求解下面的84阶方程组将计算结果与方程组的精确解进行比较,并就此谈谈你对Gauss消去法的看法。(2)写出追赶法求解三对角方程组的过程,并编写程序求该实验中的方程组(1)不选主元高斯消去法求解方程组function L,U=gauss1(A,b)n=length(A);for k=1:n-1 A(k+1:n,k)=A(k+1:n,k)/A(k,k)

3、; 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(:,1:n),-1)+eye(n);U=triu(A);主程序为:Clear;clc; a=ones(84,1)*6; b=ones(83,1); c=ones(83,1)*8;A=diag(a)+diag(b,1)+diag(c,-1); d=ones(82,1)*15;b=7;d;14;L U=gauss1(A,b);n=length(A);y=ones(n,1);y=Lb;x=ones(n,1);x=Uy解为:x=11.000000000000001.000

4、000000000001.000000000000000.9999999999999981.000000000000000.9999999999999931.000000000000010.9999999999999721.000000000000060.9999999999998861.000000000000230.9999999999995451.000000000000910.9999999999981811.000000000003640.9999999999927251.000000000014550.9999999999708981.000000000058200.9999999

5、998835921.000000000232820.9999999995343671.000000000931270.9999999981374691.000000003725060.9999999925498741.000000014900250.9999999701994971.000000059601010.9999998807979861.000000238404030.9999995231919461.000000953616110.9999980927677831.000003814464440.9999923710711301.000015257857740.9999694842

6、845201.000061031430960.9998779371380811.000244125723840.9995117485523231.000976502895350.9980469942092911.003906011581410.9921879768371871.015624046325570.9687519073490881.062496185300920.8750076294018071.249984741181830.5000305176945351.99993896437811-0.9998779278249614.99975585192486-6.99951168894

7、94716.9990233182979-30.998046398191864.9960918427676-126.992179871071256.984344484284-510.9686279371361024.93701174855-2046.873046994204096.74218797682-8190.4687519073216383.8750076293-32764.500030517565531.0001220701-131055.000488281262097.001953124-524127.0078124981048001.03125000-2094975.12499999

8、4185857.49999999-8355328.9999999716645128.9999999-33028126.999999965007744.9999998-125821439.000000234866688.999999-402628606.999999536838144.999998可见,这是一个病态方程,从56个跟开始发散。可见|A|=7.48288838313422e+50不等于零,所以是非奇异矩阵,这主要是一个小主元问题引起的,需要更高精度的计算机来计算。选主元的高斯消去法function L,U,P=gauss2(A,b)n,l=size(A);P=eye(n);for k

9、=1:n-1 m,p=max(abs(A(:,k); A(k,p,:)=A(p,k,:); P(k,p,:)=P(p,k,:); if A(k,k)=0 A(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); endendL=tril(A(:,1:n),-1)+eye(n);U=triu(A);P;主程序为:clearclc a=ones(84,1)*6; b=ones(83,1); c=ones(83,1)*8;A=diag(a)+diag(b,1)+diag(c,-1); d=on

10、es(82,1)*15;b=7;d;14;L U P=gauss2(A,b);n=length(A);y=ones(n,1);y=L(P*b);x=ones(n,1);x=Uy解为:1.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001

11、.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.00000000000

12、0001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.000000000000001.0000000

13、00000000.9999999999999991.000000000000000.9999999999999951.000000000000010.9999999999999791.000000000000040.9999999999999171.000000000000170.9999999999996671.000000000000670.9999999999986661.000000000002670.9999999999946641.000000000010670.9999999999786571.000000000042690.9999999999146291.0000000001

14、70740.9999999996585261.000000000682930.9999999986342271.000000002731210.9999999945389091.000000010916850.9999999781876491.000000043539330.9999999132628241.000000172108410.9999996612469361.000000655651090.9999987761179611.000002098083500.999997202555339这个病态方程的解没有发散,用选主元的方法可以有效的提高解的精度。(2)追赶法clearclc a=ones(84,1)*6; e=ones(84,1); c=ones(84,1)*8; d=ones(82,1)*15;b=7;d;14;n,l=size(b);tic;U(1)=a(1);for i=2:n L(i)=c(i)/U(i-1); U(i)=a(i)-L(i)*e(i-1);endfor i=2:n y(1)=b(1);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号