资源描述:
《数值分析作业-matlab上机作业》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析———Matlab上机作业学院:班级:老师:姓名:学号:26第二章解线性方程组的直接解法第14题【解】1、编写一个追赶法的函数输入a,b,c,d输出结果x,均为数组形式functionx=Zhuiganfa(a,b,c,d)%首先说明:追赶法是适用于三对角矩阵的线性方程组求解的方法,并不适用于其他类型矩阵。%定义三对角矩阵A的各组成单元。方程为Ax=d%b为A的对角线元素(1~n),a为-1对角线元素(2~n),c为+1对角线元素(1~n-1)。%A=[2-100%-13-20%0-24-3%00-35]%a=[-1-2-
2、3];c=[-1-2-3];b=[2345];d=[61-21];n=length(b);u(1)=b(1);y(1)=d(1);fori=2:nl(i)=a(i-1)/u(i-1);%先求l(i)u(i)=b(i)-c(i-1)*l(i);%再求u(i)%A=LU,Ax=LUx=d,y=Ux,%Ly=d,由于L是下三角矩阵,对角线均为1,所以可求y(i)y(i)=d(i)-l(i)*y(i-1);endx(n)=y(n)/u(n);fori=(n-1):-1:1%Ux=y,由于U是上三角矩阵,所以可求x(i)x(i)=(y(i)
3、-c(i)*x(i+1))/u(i);end2、输入已知参数>>a=[2222222];>>b=[25555555];>>c=[2222222];>>d=[220/270000000];263、按定义格式调用函数>>x=zhuiganfa(a,b,c,d)4、输出结果x=[8.147775166909105-4.0737010928350302.036477565178471-1.0174928201111480.507254485099400-0.2506433926373500.119353996493976-0.047741
4、598597591]第15题【解】1、编写一个程序生成题目条件生成线性方程组Ax=b的系数矩阵A和右端项量b,分别定义矩阵A、B、a、b分别表示系数矩阵,其中或分别构成A、B对应右端项量分别a、b。程序如下:clear,clc;n=5;%定义A矩阵A=zeros(n,n);fori=1:nx=1+0.1*i;forj=1:nA(i,j)=x^(j-1);endend%定义B矩阵B=zeros(n,n);fori=1:nforj=1:nB(i,j)=1/(i+j-1);endend%定义a向量,其中Ax=afori=1:nx=1+0
5、.1*i;a(i)=0;forj=1:na(i)=x^(j-1)+a(i);26endend%定义b向量,其中Bx=bfori=1:nb(i)=0;forj=1:nb(i)=1/(i+j-1)+b(i);endend修改n分别为5、10、20,运行程序能得到相应A、B、a、b。2、分别求系数矩阵A,B的2-条件数利用自带函数求解n=5时cond(A,2)=5.361484750384177e+005cond(B,2)=4.766072502417230e+005n=10时cond(A,2)=8.682266932586666e+0
6、11cond(B,2)=1.602467527403655e+013n=2=时cond(A,2)=3.420511387496488e+022cond(B,2)=1.845813098127243e+018典型病态方程3、利用LU分解法解方程组首先,编辑一个LU分解函数如下function[L,U]=Lu(A)%求解线性方程组的三角分解法%A为方程组的系数矩阵%L和U为分解后的下三角和上三角矩阵[n,m]=size(A);ifn~=merror('TherowsandcolumnsofmatrixAmustbeequal!');r
7、eturn;end%判断矩阵能否LU分解forii=1:nfori=1:iiforj=1:iiAA(i,j)=A(i,j);endendif(det(AA)==0)26error('ThematrixcannotbedividedbyLU!')return;endend%开始计算,先赋初值L=eye(n);U=zeros(n,n);%计算U的第一行,L的第一列fori=1:nU(1,i)=A(1,i);L(i,1)=A(i,1)/U(1,1);end%计算U的第r行,L的第r列fori=2:nforj=i:nfork=1:i-1M
8、(k)=L(i,k)*U(k,j);endU(i,j)=A(i,j)-sum(M);endforj=i+1:nfork=1:i-1M(k)=L(j,k)*U(k,i);endL(j,i)=(A(j,i)-sum(M))/U(i,i);endend然