在学数值的时候看到一本好书http://math.fullerton.edu/mathews/numerical.html,这是书的资源,有兴趣的可以看一下,是英文版本的。一块练一下英语
大家对高斯消去法应该比较了解了,高代和线性代数中做的已经不少了,但是计算机实现的时候还是要注意一些东西,
%列选主元的高斯消去法
function X=lufact_my(A,B)
%Inpiut A 是系数矩阵,B是右端项
%Output x是解
[N,N]=size(A);
X=zeros(N,1);
Y=zeros(N,1);
C=zeros(1,N);
R=1:N;
k=1;
while k<=N-1
%求列中最大的值赋给max
[max1,j]=max(abs(A(k:N,k)));
%交换行
C=A(k,:);%C为A的第k列的值
A(k,:)=A(j+k-1,:); %将A的第K列赋为最大
A(j+k-1,:)=C;
d=R(k);
R(k)=R(j+k-1);
R(j+k-1)=d;
%主元为0的情况
if A(k,k)==0
'A is singular. no unique solution'
break
end
%化为上三角
for m=k+1:N
mult=A(m,k)/A(k,k);
A(m,k)=mult;
A(m,k+1:N)=A(m,k+1:N)-mult*A(k,k+1:N);
m=m+1;
end
k=k+1;
end
%对右端项做处理,但要保证行的交换相同,要注意R(k)的作用
Y(1)=B(R(1));
for k=2:N
Y(k)=B(R(k))-A(k,1:k-1)*Y(1:k-1);
end
X(N)=Y(N)/A(N,N);
for k=N-1:-1:1
X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k);
end
演示---
>> A=[2,-1,3;4,2,5;2,1,2];
>> B=[1,4,5];
>> lufact_my(A,B)
ans =
9
-1
-6
>>
此算法不能求主元为零的,局限比较大。下一篇写一个改进的。。。
分享到:
相关推荐
求解线性方程组 Ax=b,其中 A 为 nxn 维的已知矩阵,b 为 n 维的已 知向量,x 为 ...(1)高斯消去法。 (2)列主元消去法。 A 与 b 中的元素服从独立同分布的正态分布。令 n=10、50、100、200,测试计算时间并 绘制 曲线。
分别取n=20,60,100,200,采用高斯消去法、列主元高斯消去法计算下列n阶线性方程组Ax=b的解:
对比高斯消去法、列主元高斯消去法、全主元高斯消去法、平衡加权高斯消去法。
选主元的Gauss消去法和不选主元的Gauss消去法 数值分析计算方法实验报告含源码
2. 理解主元高斯消去法在求解精度上的优点; 3. 完成列主元消去法的程序; 4. 会用系统内置命令求解有唯一解的线性方程组; 【试验方法与步骤】 一 、 回答下面的问题 1. 什么是线性方程组直接解法和迭代解法,各自...
Gauss完全主元消去法 matlab代码
列主元高斯消去法解线性方程组的MATLAB程序,参考教材《数值分析》李乃成
C语言 全选主元求解线性方程组 数值分析作业 原创
MATLAB guess 高斯消元法代码程序,课堂作业
实验一 误差分析 一、实验目的及要求 1.了解误差分析对数值计算的重要性。 2.掌握避免或减小误差的基本方法。 二、实验设备 安装有C、C++或MATLAB的计算机。...2. 利用列选主元高斯消去法求解线性方程组
利用Gauss消元法解线性方程程序,包括找主元,设定主元,回代
本实验报告主要解决了Gauss列主演消去法的几个简单问题的MATLAB实现,仅供参考,如有不足,烦请指正。
列主元消去法。在matlab中对高斯消去法进行选主元的方法。解线性方程组。
高斯消去法的源程序,不选主元消去法,明细简练,可以直接运行
求解线性⽅方程组 Ax=b,其中 A 为 ...比较 Jacobi 迭代法、Gauss-Seidel 迭代法、逐次超松弛迭代法、 共轭梯度法与高斯消去法、列主元消去法的计算时间。改变逐次超松弛迭代法的松弛因⼦, 分析其对收敛速度的影响。
1.版本:matlab2019a,内含运行结果,不会运行可私信 2.领域:基础教程 3.内容:Matlab 实现高斯消元LU分解.zip 4.适合人群:本科,硕士等教研学习使用