2016级矩阵与数值分析上机作业(共72页).docx
《2016级矩阵与数值分析上机作业(共72页).docx》由会员分享,可在线阅读,更多相关《2016级矩阵与数值分析上机作业(共72页).docx(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 2016级矩阵与数值分析上机作业 学生班级: 学生姓名: 任课教师: 所在学院:电子信息与电气学部 学生学号: 使用软件:MATLAB2016年12月10号1. 考虑计算给定向量的范数:输入向量,输出,请编制一个通用程序,并用你编制的程序计算如下向量的范数: , 对n = 10,100,1000甚至更大的n计算其范数,你会发现什么结果?你能否修改你的程序使得计算结果相对精确呢?(1)计算范数的程序function Nor1,Nor2,Nor3=Nor(a) b=length(a);format long Nor11=0; format longNor21=0;i=1
2、;while it t=abs(a(i);end i=i+1; endNor1=Nor11; %计算1范数Nor2=sqrt(Nor21); %计算2范数Nor3=t; %计算无穷范数end(2)x与y向量的程序function a= afun(n)a=zeros(n);a(1)=1;for i=1:1:n; a(i)=1/i;endendfunction b= bfun(n)b=zeros(n);b(1)=1;for i=1:1:n; b(i)=i;endend运行: n=10; a=afun(n); b=bfun(n); f1,f2,f3=Nor(a); h1,h2,h3=Nor(b);f
3、1 =2.8254 f2 =1.5769 f3 = 1h1 =55 h2 =19.8583 h3 = 10 n=100;a=afun(n);b=bfun(n);f1,f2,f3=Nor(a); h1,h2,h3=Nor(b);f1 = 5.9621 f2 =1.3052 f3 = 1h1 = 5050 h2 = 5.1153e+02 h3 =100 n=1000;a=afun(n);b=bfun(n);f1,f2,f3=Nor(a); h1,h2,h3=Nor(b);f1 = 7.0343 f2 =1.1847 f3 = 1h1 = h2 = 1.2642e+04 h3 = 1000 上述结果
4、由于MATLAB的高精度运算较为准确,但是由于当n非常大时可能会出现了大数吃小数的现象使误差增大,而y向量的范数结果较为准确是由于y向量是按从小到大排列。改进范数计算程序使输入序列按从小到大排列再计算其范数:function Nor1,Nor2,Nor3=Nor(c) a=sort(c);b=length(a);format long Nor11=0; format longNor21=0;i=1;while it t=abs(a(i);end i=i+1; endNor1=Nor11; %计算1范数Nor2=sqrt(Nor21); %计算2范数Nor3=t; %计算无穷范数end2.考虑,
5、其中定义,此时是连续函数。用此公式计算当时的函数值,画出图像。另一方面,考虑下面算法: 用此算法计算x1015,1015时的函数值,画出图像。比较一下发生了什么?函数:function F=Piecewise1_x(x)F= log(x+1)/x*(x=0&x0);endfunction F=Piecewise2_x(x)F= log(x)/(x-1)*(x=1&x1);end运行:clcclearx=linspace(-10(-15),10(-15); d=x+1;%原来图像(红色曲线)F=Piecewise1_x(x);%计算相应函数值 plot(x,F,r);%绘制曲线 hold on;
6、 %改变算法后的图像(蓝色曲线)F1=Piecewise2_x(d);%计算相应函数值 plot(x,F1,b);%绘制曲线 hold on; plot(0*ones(1,2),ylim,g:);%画区间间隔线plot(xlim,1*ones(1,2),g:);%画区间间隔线 xlabel(变量 X)ylabel(变量 Y1 & Y2)由上图可知改变后的算法画出的曲线(蓝色)比直接画出的曲线(红色)更贴近实际值误差更小,且由于ln(x+1)j A(i,j)=-1; elseif (ij)&(jj A(i,j)=-1; elseif (ij)&(jj A(i,j)=-1; elseif (ij)
7、&(jn) A(i,j)=0; else A(i,j)=1; end endende=ones(n,n);for k=1:n b(k)=e(:,k);P,L,U=PLU(A);b1=b(k);b=P*b1;y=zeros(n,1);y(1)=b(1); for i=2:n y(i)=b(i)-sum(L(i,1:i-1).*y(1:i-1) ; end% yx(n)=y(n)/U(n,n);for i=n-1:-1:1 x(i)=(y(i)-sum(U(i,i+1:n).*x(i+1:n)/U(i,i);endB(:,k)=x;endP=A*B %验证是否正确% x%d=norm(x1-x);
8、 %计算算法误差endclearfor n=5:30Bn-4=zeros(n);Bn-4= PLU2(n)end求出的n从5到30的逆矩阵存储在B中: B = Columns 1 through 5 5x5 double 6x6 double 7x7 double 8x8 double 9x9 double Columns 6 through 9 10x10 double 11x11 double 12x12 double 13x13 double Columns 10 through 13 14x14 double 15x15 double 16x16 double 17x17 double
9、 Columns 14 through 17 18x18 double 19x19 double 20x20 double 21x21 double Columns 18 through 21 22x22 double 23x23 double 24x24 double 25x25 double Columns 22 through 25 26x26 double 27x27 double 28x28 double 29x29 double Column 26 30x30 double5. 编制计算对称正定阵的Cholesky分解的通用程序,并用你编制的程序计算Ax=b,其中。b可以由你自己取
10、定,对n从10到20验证程序的可靠性。% Cholesky分解的通用程序function L = Cholesk(A)%如果是正定矩阵,可以进行下面分解操作L(1,1)=sqrt(A(1,1);%确定第一列元素n=length(A);for i=2:n L(i,1)=A(i,1)/L(1,1);endsum1=0;for j=2:n-1 %确定第j列元素 for k=1:j-1 sum1=sum1+L(j,k)2; end L(j,j)=sqrt(A(j,j)-sum1); sum1=0; for i=j+1:n for k=1:j-1 sum1=sum1+L(i,k)*L(j,k); end
11、 L(i,j)=(A(i,j)-sum1)/L(j,j); end sum1=0;endfor k=1:n-1 %确定第n列元素 sum1=sum1+L(n,k)2;endL(n,n)=sqrt(A(n,n)-sum1);P=L*L ; %验证分解是否正确end%Cholesky分解的通用程序用于生成A,b矩阵的函数程序function x1,b,A = Ch(n) x1=zeros(n,1);for k=1:n x1(k)=1;endA=zeros(n,n);for i=1:n for j=1:n A(i,j)=1/(i+j-1); endendb=A*x1;end% 计算Cholesky分
12、解的通用程序的误差程序function e = Cho(n) x1,b,A = Ch( n );m,n=size(A);if m=n %判断输入的矩阵是不是方阵 e=inf; return;endd=eig(A);%根据方阵的特征值判定是不是正定矩阵for i=1:n if d(i) cleard=zeros(19,1);for n=2:20 d(n-1)= Cho(n);enddd = 1.0e+17 * 0.0000 0.0000 0.0000 0.0042 0.0000 0.6285 0.0000 0.1891 0.7943 1.0288 0.4207 Inf 0.2969 Inf In
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2016 矩阵 数值 分析 上机 作业 72
限制150内