matlab求解代数方程组解析

发布时间 : 星期三 文章matlab求解代数方程组解析更新完毕开始阅读

第三讲 Matlab求解代数方程组

理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项 软件求解:各种求解程序

讨论如下表示含有n个未知数、由n个方程构成的线性方程组:

?a11x1?a12x2???a1nxn?b1?ax?ax???ax?b?2112222nn2 ? (1)

?????an1x1?an2x2???annxn?bn一、直接法 1.高斯消元法:

高斯消元法的基本原理: 在(1)中设a11?0,将第一行乘以?ak1,加到第k(k?2,3,?,n),得: a11(1)(1)(1)?a11x1?a12x2???a1(1)nxn?b1?(2)(2)a22x1???a1(1)?nxn?b2 ? (2)

???(2)(2)(2)?an2x2???annxn?bn?其中a(1)1k?a1k,b?b1.再设a(1)1(2)22(2)ak2,(k?3,?,n)加?0,将(2)式的第二行乘以?(2)a22到第k行,如此进行下去最终得到:

(1)(1)(1)?a11x1?a12x2???a1(1)nxn?b1?(2)(1)(2)ax???ax?b2211nn2?? ? (3) ???(n?1)(n?1)(n?1)anxn?1?anxn?bn?1,n?1?1,n?1?(n)(n)?annxn?bn?从(3)式最后一个方程解出xn,代入它上面的一个方程解出xn?1,并如此进行

(k)下去,即可依次将xn,xn?1,?,x2,x1全部解出,这样在akk?0(k?1,2,?,n)的假设

下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法. 高斯消元法的矩阵表示:

若记A?(aij)n?n,x?(x1,?,xn)T,b?(b1,?,bn)T,则(1)式可表为Ax?b.于是高斯

1

消元法的过程可用矩阵表示为:

Mn?1?M2M1Ax?Mn?1?M2M1b.

其中:

?1???1??(1)???a21(1)1????M?a111????????M?2??????a(1)n1a(1)1????11?????高斯消元法的Matlab程序: %顺序gauss消去法,gauss函数 function[A,u]=gauss(a,n) for k=1:n-1

%消去过程 for i=k+1:n for j=k+1:n+1

%如果a(k,k)=0,则不能削去 if abs(a(k,k))>1e-6 %计算第k步的增广矩阵 a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j); else

%a(k,k)=0,顺序gauss消去失败 disp(‘顺序gauss消去失败‘); pause; exit; end end end end

2

1?a(2)32a(2)122??a(2)n2a(2)22???????1??? ?%回代过程 x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1 s=0; for j=i+1:n s=s+a(i,j)*x(j); end

x(i)=(a(i,n+1)-s)/a(i,i); end

%返回gauss消去后的增广矩阵 A=triu(a); %返回方程组的解 u=x;

练习和分析与思考: 用高斯消元法解方程组:

?x1?2x2?4x3?x4?7x5?15?2x?3x?x?8x?141245???4x1?x2?7x3?6x4?x5?19 ?x1?x2?2x4?x5?5?x1?3x2?x4?x5?6??2.列主元素消元法

(k) 在高斯消元法中进行到第k步时,不论aik是否为0,都按列选择(k)|aik|(i?k,?,n)中最大的一个,称为列主元,将列主元所在行与第k行交换再

按高斯消元法进行下去称为列主元素消元法。

列主元素消元法的matlab程序 %列主元guass消去函数 function[A,u]=gauss(a,n) %消去过程 for k=1:n-1 %选主元

3

c=0; for q=k:n if abs(a(q,k))>c c=a(q,k); l=q; end end

%如果主元为0,则矩阵A不可逆 if abs(c)<1e-10 disp(‘error’); pause; exit end

%如果l不等于k,则交换第l行和第k行 if l~=k for q=k:n+1 temp=a(k,q); a(k,q)=a(l,q); a(l,q)=temp; end end

%计算第k步的元素值 for i=k+1:n for j=k+1:n

a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j); end end end %回代过程

x(n)=a(n,n+1)/a(n,n);

4

联系合同范文客服:xxxxx#qq.com(#替换为@)