关于matlab高斯消去法,翻译下注释就可以了,在线等

关于matlab高斯消去法,翻译下注释就可以了,在线等,第1张

一楼翻译是什么东西啊?直接复制到google在线里翻译出来,还累?我看别人要想看懂才真是累!给楼主翻译了下,如果楼主对高斯消去法比较了解的话就很容易懂。

%用高斯消去法把矩阵A转换为上三角阵

[m,n]=size(A) %获得A的行和列分别存入m和n中

% 列主元素消去法

for k=1:n-1

[v,u]=max(abs(A(k:n,k))) %选出A的第k列中绝对值最大元素存入v, 而u是记录多少的行或列,并取最大值,比如有m行,n列,且n>m,则u=n

%计算矩阵A中这些元素 A(k:n,1:k)

u=u+k-1

%因为函数返回矩阵A(k:n,1:k)中最大元素,因此我们应该变换矩阵A的值,下面进行变换

p(k)=u%用p(k)来记录u的值

%交换第k行和第u行的数据

t1 = A(k,k:n) %为了实现交换,定义一个中间变量t1

A(k,k:n) = A(u,k:n)

A(u,k:n) = t1

t2 = b(k) %t2是一个临时变量

b(k) = b(u)

b(u) = t2

%前面主要是对A进行变换,即在进行消去之前,第一次先比较A中第一列绝对值最大的元素,然后再将第一列中有最大元素的那行交换到第1行,

然后用下面方法进行消去,锋郑将除第一行外的元素的第一列都消去为0;第二次然后比较A中第二列元素(此时第一行不用参与比较),将最大元素那行

交换到第二行,将3,4,5…行的第二列也变为0;依此类推,直到把A变为上三角阵,这也是为什么下面的A(k,k) ~= 0不为0的陆基让原因(有0就可省去一步)

% 高斯消去法

if A(k,k) ~= 0

%下面是高斯法消去的主要步骤,可参考有关书看看。

rows=k+1:n

A(rows,k)=A(rows,k)/A(k,k)

A(rows,rows)=A(rows,rows)-A(rows,k)*A(k,k)

L(rows,rows)=A(rows,rows)

end

end

% 计算矩阵 U

for k=2:n

A(k,1:k-1)=0

end

二、求解三角方程组的程序:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 用转换为三角矩阵法来求解Ax=b

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[m,n]=size(A) %获得A的行和列分别存入m和n中

%x(n)=b(n)/A(n,n) %计算x(n)

% 下面进行求解

for i = n : -1 : 1

t = 0

for j = n : -1 : i+1

t = t+A(i,j)*x(j)

end

x(i) = (b(i)-t)/A(i,i)

end

三、主程序:

function Examples_Eqn_Root

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 用高斯消去法求解线性方程 Ax=b

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

A = [ 1 3 6 8 9 2 %i输入矩早局阵 'A'

2 5 3 1 6 3

3 6 1 2 8 5

2 6 8 9 3 8

5 8 9 3 2 3

3 5 8 1 7 2]

b= [2 -3 2 55 16 -6] %i输入 'b'

b = b' %转换 'b'

[A,b]= Gauss(A,b) %把[A b]变换为A为上三角阵的形式

%同时将变换后的'b'返还给b

b = b'

x= Eqn_Root(A,b)%通过三角阵方法求解

end

高斯消去法解方程组步骤如下:

1、将线性方程组的系数矩阵和常数项向量组成增广矩阵。

2、对增广矩阵进行行初等变换,使得增广矩阵变为行阶梯矩阵,即主元所在列以下的元素全部为0,主元所在列以上的态册元素不全为0。这里的主元是指矩阵中第k行第k列的元素,其中k为行数和列数中的较小值。

3、从最后一行开始,依次代入求解各个未知数的值,即先求得最后一行的未知数,然后带入倒数第二行求解,以此类推,最终得到所有未知数的值。

需要注意的是,在进行高斯消去法时,如果系数矩阵中存在主元为0的情况,需要进行一些特殊处理,例如交换行或添加倍数等 *** 作,确保主元不为0。此外,如果系数矩阵为奇异矩阵,即行列式为0,那么方程组无解或有无穷多解。

高斯:

高斯(1777年4月30日-1855年2月23日)是德国著名的数学家、物理学家和天文学家,是现代数学手闭岩和现代物理学的奠基人之一。高斯在数学领域的贡献非常巨大,他创立了现代数学的基础,对数学、物理学、天文学等领域都做出了卓越毕御的贡献。他发明了高斯消元法,用于解决线性方程组和计算行列式,为线性代数和矩阵理论的发展奠定了基础。

他还创立了复数理论,提出了最小二乘法,发明了高斯分布和正态分布等概率分布,为统计学和概率论的发展做出了贡献。在天文学领域,高斯发现了小行星谷神星,并利用其轨道预测了其下一次出现的时间和位置,这项成就被誉为天文学历史上的重大突破。他还发明了用于测量地球磁场的高斯磁力仪,并开创了地球磁场研究的新时代。

function [x,XA]=GaussXQByOrder(A,b)

%高斯顺序消元法

N = size(A)

n = N(1)

for i=1:(n-1)

for j=(i+1):n

if(A(i,i)==0)

disp('对角元素为0!') %防止对角元素为改握0

return

end

l = A(j,i)

m = A(i,i)

A(j,1:n)=A(j,1:n)-l*A(i,1:n)/m %消元方程

b(j)=b(j)-l*b(i)/m

end

end

x=SolveUpTriangle(A,b) %通用的求上三角系数矩阵线性方程组的函数

XA = A %消元后的系数矩阵

function x=SolveUpTriangle(A,b)

N=size(A)

n=N(1)

for i=n:-1:1

if(i<n)

s=A(i,(i+1):n)*x((i+1):n,1)

else

s=0

end

x(i,1)=(b(i)-s)/A(i,i)

end

程序如上,自毁歼肆己纤轿算吧。这个东西应该尝试自己编程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12338112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存