计算方法矩阵直接法与迭代法.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
需要两份东西 1﹑实验程序:输入﹑输出﹑注释 2﹑实验报告:问题描述﹑方法描述﹑方案设计﹑结果分析﹑结论 谢谢,麻烦写的详细些 实验五 解线性方程组的直接方法 实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。 实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss消去过程。 实验要求: (1)取矩阵,则方程有解。取n=10计算矩阵的条件数。让程序自动选取主元,结果如何? (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。 (3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。 (4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。 首先编写gauss消元法代码;输入为矩阵A,向量b,精度ptol,输出为方程组的解 x。程序如下 function [ out ] = gausle( A,b,flag,ptol ) %UNTITLED 高斯消元法 可选择的主元消去法 % A n x n 矩阵 % b n x 1 % flag 标志主元为自动选取还是手动选取, % 0,自动(对角为主元) 1,选取最小模为主元, % 2,选取模最大,(误差最小)3 ,次最小的模为主元 % ptol 精度 % out 输出值,为nx1的解 Ax=b的解 %% if nargin4,ptol=50*eps;end [m,n]=size(A); if m~=n,error(A不是方阵);end out=zeros(n,1);% 预先设定解的维数 nb=n+1; Ab=[A,b]; %扩维矩阵 % disp(开始用扩维阵计算); % disp(Ab); RA=rank(A); RB=rank(Ab);zhica=RB-RA; if zhica0, disp(请注意:因为RA~=RB,所以此方程组无解.) return end % 消元过程 for i=1:n-1 ; i; if flag==0; pivot=Ab(i,i); ri=i; elseif flag==1;% 按照每列模最小的选取 [pivot,min_index]=min(abs(A(i:n,i))); ri=i+min_index-1; elseif flag==2;% 按照模最大的选取 [pivot,max_index]=max(abs(A(i:n,i))); ri=i+max_index-1; elseif flag==3 %方程最小非0数 tA=A; [pivot,min_index]=min(abs(tA(i:n,i))); while pivot==0; tA(min_index+i-1,i)=inf; [pivot,min_index]=min(abs(tA(i:n,i))); end ri=i+min_index-1; end if (pivot==0)||(pivotptol) ; warning(系数矩阵奇异!!); return; end if ri~=i; % 交换行 tmp=A(i,:);A(i,:)=A(ri,:);A(ri,:)=tmp; t=b(i);b(i)=b(ri);b(ri)=t; end for kk=i+1:n L(kk,i)=A(kk,i)/A(i,i); A(kk,i+1:n)=A(kk,i+1:n)-L(kk,i)*A(i,i+1:n); b(kk)=b(kk)-L(kk,i)*b(i);

文档评论(0)

enxyuio + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档