计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt

上传人:b****2 文档编号:2573054 上传时间:2022-11-02 格式:PPT 页数:75 大小:765.50KB
下载 相关 举报
计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt_第1页
第1页 / 共75页
计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt_第2页
第2页 / 共75页
计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt_第3页
第3页 / 共75页
计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt_第4页
第4页 / 共75页
计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt

《计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt》由会员分享,可在线阅读,更多相关《计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt(75页珍藏版)》请在冰豆网上搜索。

计算机应用基础-3-线性与非线性方程组求解_精品文档.ppt

第三章代数方程(组)的Matlab求解,3.1线性方程(组)求解一方程组解个数的判定二高斯消元法求解三LU矩阵分解求解四Jacobi迭代求解五调用内部函数求解3.2非线性方程(组)求解,3.1线性方程(组)求解,一、方程组解个数及求解,Ax=B,对于矩阵,3.1线性方程(组)求解,解的判定矩阵,又叫增广矩阵,线性方程组解的判定定理:

(1)当m=n且rank(A)=rank(C)=n时方程组有唯一解x=A-1Bx=inv(A)*B

(2)当rank(A)=rank(C)=rn时,方程组有无穷多解:

Z=null(A)%求解A矩阵的化零矩阵Z=null(A,r)%求解A矩阵的化零矩阵的规范形式,若rank(A)=rank(C),只能用Moore-penrose广义逆求解方程的最小二乘解为:

x=pinv(A)*B只能使误差范数测度取最小值。

3.1线性方程(组)求解,【例3-1】求解,X=-1.80002.40001.8667-1.26673.8667-3.2667-2.13332.7333,3.1线性方程(组)求解,检验:

norm(A*x-B)=7.47e-015,1234514321X=42132433413224,A=1234;4321;1324;4132;B=51;42;33;24;X=inv(A)*B,X1=-9/5,12/528/15,-19/1558/15,-49/15-32/15,41/15,3.1线性方程(组)求解,精确解:

x1=inv(sym(A)*B,检验:

norm(double(A*x1-B)=0,【例3-2】,A=1234;2211;2468;4422B=1;3;2;6;C=AB;rank(A),rank(C),rank(A)=rank(C)=24,3.1线性方程(组)求解,123412211X=32468244226,判定可解性:

Z=null(A,r),Z=2.00003.0000-2.5000-3.50001.0000001.0000,X0=0.9542;0.7328;-0.0763;-0.2977,X0=pinv(A)*B,3.1线性方程(组)求解,解出规范化零空间:

得出一个特解:

3.1线性方程(组)求解,解出全部解:

230.9542X=a1-2.5+a2-3.5+0.732810-0.076301-0.2977,验证得出的解:

a1=randn

(1);a2=rand

(1);x=a1*Z(:

1)+a2*Z(:

2)+x0norm(A*x-B),【例3-3】,3.1线性方程(组)求解,123412211X=22468344224,B=1:

4;C=AB;rank(A),rank(C),最小二乘解:

x=pinv(A)*B,检验:

norm(A*x-B)=7.47e-015,二高斯消去法求解线性方程组高斯消去法它不需要方程组解的初值,也不需要重复迭代计算,它通过消去和回代两个过程就可以直接求出方程组的解。

和前面的迭代法一样,在计算过程中,也有可能发散而得不到方程组的解,但可以通过一些其它方法解决。

设一个n元方程组,以矩阵形式表示为:

3.1线性方程(组)求解,1消元过程,

(1)令,进行矩阵的代数运算,可消去第一列的元素(2n),

(2)同理,可消去第二列的元素(3n),(3)可得任意步消元公式,假设第k步,有:

3.1线性方程(组)求解,(4)经过n-1步消元后,系数矩阵称为上三角矩阵,3.1线性方程(组)求解,回归过程:

(1)首先解最后一个方程

(2)依次回代,可得到任意公式:

3.1线性方程(组)求解,高斯消元法通用程序,functionx=UpTriangleFun(A,b)%求上三角系数矩阵的线性方程组Ax=b的解%A为线性方程组的系数矩阵%b为线性方程组中的常数向量%x为线性方程组中的解n=size(A);N=n

(1);fork=N:

-1:

1if(kN)s=A(k,(k+1):

N)*x(k+1):

N,1);elses=0;endx(k,1)=(b(k)-s)/A(k,k);end,3.1线性方程(组)求解,functionx=DownTriangleFun(A,b)%求下三角系数矩阵的线性方程组Ax=b的解%A为线性方程组的系数矩阵%b为线性方程组中的常数向量%x为线性方程组中的解n=size(A);N=n

(1);fork=1:

Nif(k1)s=A(k,1:

(k-1)*x(1:

(k-1),1);elses=0;endx(k,1)=(b(k)-s)/A(k,k);end,3.1线性方程(组)求解,高斯全主元消去法,对于求解精度较高,或方程数量较多,易采用全主元法,其增广矩阵为(A

(1)|b

(1),寻找A

(1)中绝对值最大为主元素,将此元素进行行列交换,换为第一个元素,再进行消元过程,3.1线性方程(组)求解,对于任意的第k-1次,其最大的主元素为:

进过n-1次主元消去之后,对后得到上三角矩阵。

通用算法,3.1线性方程(组)求解,functionx,xA=AllGaussFun(A,b)%AllGaussFun.m为用高斯全主元消去法求解线性方程组的解%A为线性方程组的系数矩阵%b为线性方程组的常数向量%x为线性方程组的解%xA为消元后的系数矩阵N=size(A);n=N

(1);indexl=0;indexr=0;order=1:

n;%记录未知数顺序的向量fori=1:

(n-1)me=max(max(abs(A(i:

n,i:

n);%选取全主元fork=i:

nforr=i:

nif(abs(A(k,r)=me)indexl=k;indexr=r;k=n;break;endendend,temp=A(i,1:

n);A(i,1:

n)=A(indexl,1:

n);A(indexl,1:

n)=temp;bb=b(indexl);b(indexl)=b(i);b(i)=bb;%交换主行temp=A(1:

n,i);A(1:

n,i)=A(1:

n,indexr);A(1:

n,indexr)=temp;%交换主列pos=order(i);order(i)=order(indexr);order(indexr)=pos;%主列的交换会造成未知数顺序的变化forj=(i+1):

nif(A(i,i)=0)disp(对角元素为0!

);return;endl=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;endend,x=UpTriangleFun(A,b);y=zeros(n,1);fori=1:

nforj=1:

nif(order(j)=i)y(i)=x(j);endendendx=y;xA=A;,例【3-4】求多元线性方程组的解,求解程序“li3_4.m”,x=(2.40,-19.20,-1.00,4.00),3.1线性方程(组)求解,三LU矩阵分解求解,线性方程组变为:

LUx=b,令:

Y=Ux,则:

LY=b,3.1线性方程(组)求解,解两个三角行方程组,可得解。

A=LU,其中,functionx=LUfun(A,b)%实现LU分解求线性方程组Ax=b的解%A为线性方程组的系数矩阵%b为线性方程组中的常数向量%x为线性方程组中的解r=rank(A);%flag=isexist(A,b)%判断方程组解的情况ifflag=0disp(该方程组无解!

);x=;return;elsem,n=size(A);L,U,P=lu(A);%lu函数为MATLAB提供的函数实现矩阵LU分解b=P*b;%解Ly=by

(1)=b

(1);ifm1fork=2:

my(k)=b(k)-L(k,1:

k-1)*y(1:

k-1);endendy=y;,%解Ux=y得原方程组的一个特解x0(r)=y(r)/U(r,r);ifr1fork=r-1:

-1:

1;x0(k)=(y(k)-U(k,k+1:

r)*x0(k+1:

r)/U(k,k);endendx0=x0;%如果方程组有唯一解ifflag=1x=x0;return;else%如果方程组有无穷多解formatrat;z=null(A,r);%求出对应齐次方程组的基础解系mz,nz=size(z);x0(r+1:

n)=0;fork=1:

nzt=sym(char(10748+k);K(k)=t;%取K=k1,k2,.;endx=x0;fork=1:

nzx=x+K(k)*z(:

k);%将方程组的通解表示为特解加对应齐次通解形式endendend,例利用LU分解求解如下线性方程组的解,3.1线性方程(组)求解,四Jacobi迭代法求解,迭代法是对任意给定的初始向量,按照某种方法逐步生成近似解序列,是解序列的极限为方程组的解。

设线性方程组:

Ax=b,若A非奇异,b不等于0,有唯一解x*,上式变换为:

x=Tx+C,取一初始向量x(0)为上述方程的近似解,x(k+1)=Tx(k)+C,满足条件:

3.1线性方程(组)求解,此迭代法收敛,x*为原方程组的解。

Jacobi迭代法工程常用此方法解决稀疏矩阵的迭代问题。

系数矩阵为,3.1线性方程(组)求解,若A非奇异,方程组Ax=b有唯一解x=A-1b.方程组通过变换为:

令,3.1线性方程(组)求解,令,有:

3.1线性方程(组)求解,算法:

(1)设定一个初始向量x(0),将初始值带入矩阵方程,得到新向量x

(1)。

(2)将新向量x

(1)带入矩阵方程,得到另一个向量x

(2)。

(3)对于任意k步迭代,迭代格式为:

如果序列x(k)收敛于x*,则说明x*为方程组的解,Jacobi迭代程序:

3.1线性方程(组)求解,functionx,n=Jacobifun(A,b,x0,eps,var)%Jacobifun为编写的雅可比迭代函数%A为线性方程组的系数矩阵%b为线性方程组的常数向量%x0为迭代初始向量%eps为解的精度%var为迭代步数控制%x为线性方程组的解%n为求出所需精度的解实际的迭代步数ifnargin=3eps=1.0e-6;M=200;elseifnargin3errorreturnelseifnargin=5M=var1;end,3.1线性方程(组)求解,D=diag(diag(A);L=-tril(A,-1);U=-triu(A,1);B=D(L+U);f=Db;x=B*x0+f;n=1;%统计迭代次数whilenorm(x-x0)=epsx0=x;x=B*x0+f;n=n+1;if(n=M)disp(Warning:

迭代次数太多,不收敛!

);return;endend,3.1线性方程(组)求解,例【3-5】用Jacobi迭代法计算方程组,设初始值为x0=0,0,0计算程序“li3_5.m”X=2.39,2.18,-0.25,3.1线性方程(组)求解,五调用Matlab内部函数,5.1共轭梯度法,通过最优化求解,适用于系数矩阵为方阵m,调用格式如下:

x,flag,relres,iter=bicg(A,b,tol),方程组的解,方程组成功的标志,解的相对误差,迭代的次数,求解器,系数矩阵,误差限,常数向量,3.1线性方程(组)求解,A=4,1,-1;2,-3,1;1,2,-5;b=12,-2,8;tol=1e-7;x,flag,relres,iter=bicg(A,b,tol),x=2.3929,2.1786-0.2500flag=0relres=1.1384e-014iter=3,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1