matlab求解代数方程组解析

上传人:壹****1 文档编号:510973058 上传时间:2023-10-10 格式:DOCX 页数:17 大小:409.20KB
返回 下载 相关 举报
matlab求解代数方程组解析_第1页
第1页 / 共17页
matlab求解代数方程组解析_第2页
第2页 / 共17页
matlab求解代数方程组解析_第3页
第3页 / 共17页
matlab求解代数方程组解析_第4页
第4页 / 共17页
matlab求解代数方程组解析_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《matlab求解代数方程组解析》由会员分享,可在线阅读,更多相关《matlab求解代数方程组解析(17页珍藏版)》请在金锄头文库上搜索。

1、第三讲Matlab求解代数方程组理论介绍:直接法+迭代法,简单介绍相关知识和应用条件及注意事项软件求解:各种求解程序讨论如下表示含有n个未知数、由n个方程构成的线性方程组:aiiXi - ai2X2ainXn 二匕a21X1a22X2a2nxn = b2(D、直接法1.高斯消元法:aniXi . an2X2, annXn =bn高斯消元法的基本原理:在(1)中设an =0,将第一行乘以-a1,加到第k(k =2,3,,n),得: ana% +ai(?X2 +ai(?Xn =bia22)Xii 十a(1n)Xn=b22)(2)aS)X2- - an2) Xn = bn2)其中ag =源,“(1)

2、 =b再设a22) #0,将(2)式的第二行乘以号(k = 31,n)加 a22到第k行,如此进行下去最终得到:a(1)Xiai(2)X2露 Xn =b(1)a22)X,或 Xn=b22)(3)(n劣(n(nan,njXnan J,n Xn - bn 4c(n).(n)ann Xn - bnA,并如此进行从(3)式最后一个方程解出代入它上面的一个方程解出下去,即可依次将Xn,Xn4,,X2,x全部解出,这样在ak?0(k=1,2,,n)的假设下,由上而下的消元由下而上的回代,构成了方程组的高斯消元法 高斯消元法的矩阵表示: 若记 A = (q)n*,x=(Xi,Xn)T,b=(bi,,bn)T

3、 ,则(1)式可表为 Ax = b.于是高斯消元法的过程可用矩阵表示为:Mn1 M2M1Ax =MnM2M1b.其中:M1a a21 尹 alln1an高斯消元法的Matlab程序:%顺序 gauss消去法,gauss函数 functionA,u=gauss(a,n)for k=1:n-1%肖去过程for i=k+1:nfor 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消去失败); p

4、ause;exit;endendendend%回代过程x(n)=a(n,n+1)/a(n,n);for i=n-1:-1:1s=0;for j=i+1:ns=s+a(i,j)*x(j);endx(i)=(a(i,n+1)-s)/a(i,i);end%返回gauss消去后的增广矩阵A=triu(a);%返回方程组的解u=x;练习和分析与思考:用高斯消元法解方程组:x1 +2x2 +4x3 +x4 +7x5 =152x1 +3x2 +x4 +8x5 =144x1 x2 7x3 6x4 x5 = 19x1 +x2 +2x4 +x5 =5x1 3x2 x4 x5 = 62.列主元素消元法在高斯消元法中

5、进行到第k步时,不论aikk)是否为0,都按列选择| aikk) | (i =k,,n)中最大的一个,称为列主元,将列主元所在行与第k行交换再按高斯消元法进行下去称为列主元素消元法。列主元素消元法的matlab程序痛!J主元guass消去函数functionA,u=gauss(a,n)%肖去过程for k=1:n-1%选主元c=0;for q=k:nif abs(a(q,k)cc=a(q,k);l=q;endend呦口果主元为0,则矩阵A不可逆if abs(c)1e-10disp( error );pause;exitend冽果l不等于k,则交换第l行和第k行if l=kfor q=k:n+1

6、temp=a(k,q);a(k,q)=a(l,q);a(l,q)=temp;endend%计算第k步的元素值for i=k+1:nfor j=k+1:na(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j);endendend%回代过程x(n)=a(n,n+1)/a(n,n);s=0;for j=i+1:ns=a+a(i,j)*x(j);endx(i)=(a(i,n+1)-s)/a(i,i);end%返回列主元gauss消去后的增广矩阵A=triu(a);%返回方程组的解u=x;练习和分析与思考:用列主元消去法重新求解gauss消元法求解的上述问题。二、迭代法1 .迭代法的总体思

7、想(1)迭代公式的构造:对线性方程组Ax = b ,可以构造迭代公式X 刊=BX+ f ,给出X(0),由迭代公式的X(k),如果X(k)收敛于X*,则X*就是原方程组的解。(2)矩阵的分解:设线性方程组Ax=b,其中A非奇异,则可以把A矩阵分解:A=D-L-U ,D =diaga11,a22,,ann,Z0a210L = -a31%20999pman 2an30a1200;al3a1na23a2n .mm0an 口 ,n0 于是Ax = b化为x = D(L +U )x + D b,与之对应的迭代公式为:x(k 1) =d(L U)x(k) D-1b.2 .雅可比(Jacobia。迭代法公式

8、:B =D(L U), f =D,b用A矩阵的元素表示为:nbi -%aijXj)x(k 1),(i =1,2, ,n)_ j :,jiaJacobian迭代法的Matlab程序function y,n=jacobi(A,b,x0,eps)%K差if nargin=3eps=1.0e-6;elseif nargin=epsx0=y;y=B*x0+f;n=n+1;end练习和分析与思考:利用Jacobian迭代法求解方程组:x1 +3x3 =12x2 + x3 +2x4 = 63x1 x2 15x3 = 52x2 4x4 =83 .高斯-塞德尔(Gauss-Seide)迭代法公式:将 Jacob

9、i迭代公式 Dx(k*)=(L +U )x(k) +b 改进为 Dx(k也=Lx(k川 +Ux(k) +b ,于是得到 x(k 1) =(D-L)Ux(k) (D-L)b.B =(D -L),U, f =(D -L)b用A矩阵的元素表示为:i -1nbiaijxjk) %ajk),(i =12 ,n)_ j -j - iaHGauss-Seidel迭代法的Matlab程序function y,n=gauseidel(A,b,x0,eps)%I差if nargin=3 eps=1.0e-6;elseif nargin=epsx0=y;y=G*x0+f;n=n+1;end4 .超松弛(Succes

10、sive Over Relaxation method 迭代法(SOR)三、求解非线性方程的方法1 .根的隔离二分法利用函数的性质确定根的大致范围(a,b,取(a,b)的中点x0=g;辿,若2f (x0) = 0 ,则%即是根,否则如果f (a) - f (x0) 0,令a1 = a, h = %,如果f ( b) f (ox ) 金a=x0, b =b,则在(a, b)内至少有一根,且(a,b)二(a ,bi),再取区匕)的中点与=亘也,如此进行下去,包含根的区间(anh)(n=1,2,)的长 2度每次缩小一半,n足够大时即可获得满意精度。2 .切线法对于方程f(x)=0将f(x)在“作Ta

11、ylor展式保留线性项,即_ _ _ f (x) = f (xk) f (xk)(x -xk),设f(xk)0,然后用xk4代替右端的x就得到迭代公式:xr=xk-f这种 f (xk)方法称为牛顿(Newton)切线法。3 .割线法在牛顿切线法中用差商f(xk) f(x)代替f(xk),则xk - xk 4xkxk - f(xk)(xk -xk”)(割线法)f (xk) - f (xy)练习和分析与思考:求方程f (x) = x2+x 14的一个正根。四、求解非线性方程组的牛顿法方程组记作F(X)= 0,其中X =(为;凶T F X十f( X( f)2X),fn X (诩X(k) =(Xi(k

12、),Xnk)T,且方程组F(x)=0的第k步近似解,与牛顿切线法类似,在。作Taylor展式,线性化后用x(k41)代替x可得:2 ,n)开1 :Xn 寸2 :Xnfi(x(k 1)=产)(研 1)”的) ;X1,f fexCX2身2身2(F (x) =CX1CX2-则有 F(x(k*) =F(x(k) +F(x(k)(x(k.)-x(k),若 F(Xk )可逆,我们得到解非线性方程组的牛顿迭代公式:x(k1) =x(k) _F,(x(k)/F(x(k).注:实际上在计算过程的第k步,往往先计算F(x(k)和F(x(k),再解方程 组F(x(k)Vx(k) =-F(x(k)得到Vx后,令x(k+)=x(k) +Vx(k)即可.迭代过程需要分 析其收敛性、分支与混沌.练习和分析与思考:用牛顿迭代法解非线性方程组:X2 - 10x1 , X; x3 7=0 224x1 x2 + x3 - 2x3 = 02,2 人 ,2-x1 +x2 -3x2 +x3 = 0五、Matlab求解(非)线性方程组的内置工具箱1 .线性方程组求解(1)直接求解:线性方程组 Ax = b,解法x=A b,(注意:此处 不是/符号) 若A为方阵,x = inv(A)*b,若A不是方阵,x=pinv(A)*b.练习和分析与思考:求方程组的解.5x1 +6x2 = 1 x1 +5x2 +6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号