关于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

 高斯消去法,又称高斯消元法,实际上就是我们俗称的加减消元法。 数学上,高斯消去法或称高斯-约当消去法,由高斯和约当得名(很多人将高斯消去作为完整的高斯-约当消去的前半哪桥乱部分),它是线性代数中的一个算法,用于决定线性方程组的解,决定矩阵的秩,以及决定可逆方矩阵的逆。当用于一个矩阵时,高斯消去产生“行消去梯形形式”。 一个二元一次方程组,设法对每个等式进行变形,使两个等式中的同一个未知数的系数相等,这两个等式相减,得到一个新的等式,在这个新的等式中,系数相等的未知数就被除去了(系数为0)。 同样的也适合多元多次方程组。高斯消元是求解线性方程组的李档重要方法,在OI中有广泛的应用。本文就来讨论这个方法。 什么是线性方程组?含m个方程和n个未知量的方程组定义为 a(11)x(1)+a(12)x(2)+...+a(1n)x(n)=b(1) a(21)x(1)+a(22)x(2)+...+a(2n)x(n)=b(2) ... a(m1)x(1)+a(m2)x(2)+...+a(mn)x(n)=b(m) 这个方程组称为m*n线性方程组,其中a(ij)和b(i)为实数,括号中为下标。 这个方程组有多种消颂表示方法。例如,我们知道m*n矩阵(用大写字母表示)是一个m行n列的数阵,n维向量(用加粗的小写字母表示)是n个数的数组,也就是一个n*1矩阵(列向量。我们不考虑行向量)。另外,大家也都知道矩阵乘法。因此一个m*n线性方程组可以表示为 Ax=b,其中A是由系数aij组成的m*n矩阵即系数矩阵,x是n维的未知数向量,b是m维的结果向量。如果把向量b写到A的右边得到m*(n+1)的矩阵,得到的新矩阵称为这个方程组的增广矩阵。每一个方程组均对应于一个增广矩阵。

高斯-约旦法(全选主元)宏物求逆的步骤如下:

首先,对于 k 从 0 到 n - 1 作如下几步:

从第 k 行蔽做液、第 k 列开始的右下角子阵中选取绝对值最大的元素,并记住次元素所在的行号和列号,在通过行交换和列交换将它交换到主元素位置上。这一步称胡培为全选主元。

m(k, k) = 1 / m(k, k)

m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k

m(i, j) = m(i, j) - m(i, k) * m(


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存