没有合适的资源?快使用搜索试试~ 我知道了~
计算方法矩阵直接法与迭代法.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 146 浏览量
2023-04-01
19:45:51
上传
评论
收藏 322KB PDF 举报
温馨提示
试读
20页
。。。
资源推荐
资源详情
资源评论
需要两份东西
1﹑实验程序:输入﹑输出﹑注释
2﹑实验报告:问题描述﹑方法描述﹑方案设计﹑结
果分析﹑结论
谢谢,麻烦写的详细些
实验五 解线性方程组的直接方法
实验 5.1 (主元的选取与算法的稳定性)
问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的
数值运算是在一个有限的浮点数集合上进行的,如何才能确保 Gauss 消去法作为
数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选
择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组
Ax b, A R
nn
,b R
n
编制一个能自动选取主元,又能手动选取主元的求解线性方程组的 Gauss
消去过程。
实验要求:
6 1
7
8 6 1
15
(1)取矩阵
A
,
b
,则方程有解
x
*
(1,1,
,1)
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,自动(对角为主元) 1,选取最小模为主元,
% 2,选取模最大,(误差最小)3 ,次最小的模为主元
% 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
x(k)=(b(k)-sum( A(k,k+1:n).*x(k+1:n) ) )/(A(k,k));
end
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
i
x
0
0
2 n
i
1 x
0
x
0
x
0
n
i
x
2 n
1
1 x x
x
1 1 1
i0
2 n
A
1 x
2
x
2
x
2
,b
n
i
,
x
2
i0
1 x x
2
x
n
n n n
n
i
x
n
i0
其中,
x
k
1 0.1k,k 0,1,,n
,
(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直接复制
信息提交成功