没有合适的资源?快使用搜索试试~ 我知道了~
计算方法矩阵直接法与迭代法.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 40 浏览量
2023-04-01
19:46:15
上传
评论
收藏 104KB DOCX 举报
温馨提示
试读
20页
。。。
资源推荐
资源详情
资源评论
需要两份东西
1﹑实验程序:输入﹑输出﹑注释
2﹑实验报告:问题描述﹑方法描述﹑方案设计﹑结
果分析﹑结论
谢谢,麻烦写的详细些
实验五 解线性方程组的直接方法
实验 5.1 (主元的选取与算法的稳定性)
问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的
数值运算是在一个有限的浮点数集合上进行的,如何才能确保 Gauss 消去法作为
数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选
择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组
Ax b, A R ,b R
n
nn
编制一个能自动选取主元,又能手动选取主元的求解线性方程组的 Gauss
消去过程。
实验要求:
6 1
7
8 6 1
15
(1)取矩阵
, ,则方程有解 x (1,1, ,1) 。
� � �
�
�
A
b
*
T
8 6 1
15
8 6
14
取 n=10 计算矩阵的条件数。让程序自动选取主元,结果如何?
(2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或
按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按
模最大的元素作为主元,结果又如何?分析实验的结果。
(3)取矩阵阶数 n=20 或者更大,重复上述实验过程,观察记录并分析不
同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在
消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上
述实验,观察记录并分析实验结果。
1) 首先编写 gauss 消元法代码;输入为矩阵 A,向量 b,精度 ptol,输出为方程
组的解 x。程序如下
function [ out ] = gausle( A,b,flag,ptol )
%UNTITLED 高斯消元法 可选择的主元消去法
% A n x n 矩阵
% b n x 1
% flag 标志主元为自动选取还是手动选取,
%
%
0,自动(对角为主元)
2,选取模最大,(误差最小)3 ,次最小的模为主元
1,选取最小模为主元,
% ptol 精度
% out 输出值,为 nx1 的解 Ax=b 的解
%%
if nargin<4,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 zhica>0,
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)||(pivot<ptol) ;
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);
end
end
if A(n,n)==0
warning('系数矩阵奇异!!');
return;
end
% % 回代求解
x=zeros(n,1)';
for k=n:-1:1
%
%
%
k
A(k,k+1:n)
x(k+1:n)
if k==n
x(n)=b(n)/A(n,n);
else
end
x(k)=(b(k)-sum( A(k,k+1:n).*x(k+1:n) ) )/(A(k,k));
end
out=x';
end
主程序为
N=10 时,方程解为
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
A 的条件数如下:
1-条件数 2.5575e+003
2-条件数 1.7276e+003
无穷 条件数 2.5575e+003
代码在 里,运行计算即可。Flag=0;,时为自动选取
2) Flag=1,为选取最小模的值为主元,flag=2,为选取最大模为主元,代码是
一样的,修改 flag 值和维数 n 即可。
3) N=20 ,只需要更改 n,重复上述步骤即可。
4)
思考题一:(Vadermonde矩阵)设
n
x
i
0
1
x x
0
2
0
� x
�
i0
n
0
x
n
1
n
x
i
1 x x
2
1
1
1
,b
i0
,
A
1
x x � x
x
i
2
n
n
2
2
2
� � � �
�
1 x x
2
2
i0
�
�
x
n
n
n
n
n
x
i
n
i0
其中, x 1 0.1k,k 0,1,�,n,
k
(1)对 n=2,5,8,计算 A 的条件数;随 n 增大,矩阵性态如何变化?
(2)对 n=20,解方程组 Ax=b;设 A 的最后一个元素有扰动 10- 4,再求解 Ax=b
剩余19页未读,继续阅读
资源评论
คิดถึง643
- 粉丝: 3931
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功