预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共65页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

2016级矩阵与数值分析上机作业 学生班级: 学生姓名: 任课教师: 所在学院:电子信息与电气学部 学生学号: 使用软件:MATLAB 2016年12月10号 考虑计算给定向量的范数:输入向量,输出,,请编制一个通用程序,并用你编制的程序计算如下向量的范数: , 对n=10,100,1000甚至更大的n计算其范数,你会发现什么结果?你能否修改你的程序使得计算结果相对精确呢? (1)计算范数的程序 function[Nor1,Nor2,Nor3]=Nor(a) b=length(a); formatlong Nor11=0; formatlong Nor21=0;i=1; whilei<=b Nor11=Nor11+abs(a(i)); Nor21=Nor21+a(i)^2; t=a(1); ifabs(a(i))>t t=abs(a(i)); end i=i+1; end Nor1=Nor11;%计算1范数 Nor2=sqrt(Nor21);%计算2范数 Nor3=t;%计算无穷范数 end (2)x与y向量的程序 functiona=afun(n) a=zeros(n); a(1)=1; fori=1:1:n; a(i)=1/i; end end functionb=bfun(n) b=zeros(n); b(1)=1; fori=1:1:n; b(i)=i; end end 运行: >>n=10; >>a=afun(n); >>b=bfun(n); >>[f1,f2,f3]=Nor(a); >>[h1,h2,h3]=Nor(b); f1=2.928968253968254f2=1.244896674895769f3=1 h1=55h2=19.621416870348583h3=10 >>n=100; a=afun(n); b=bfun(n); [f1,f2,f3]=Nor(a); >>[h1,h2,h3]=Nor(b); f1=5.187377517639621f2=1.278664889713052f3=1 h1=5050h2=5.816786054171153e+02h3=100 >>n=1000; a=afun(n); b=bfun(n); [f1,f2,f3]=Nor(a); >>[h1,h2,h3]=Nor(b); f1=7.485470860550343f2=1.282160117411847f3=1 h1=500500h2=1.827111107732642e+04h3=1000 上述结果由于MATLAB的高精度运算较为准确,但是由于当n非常大时可能会出现了大数吃小数的现象使误差增大,而y向量的范数结果较为准确是由于y向量是按从小到大排列。 改进范数计算程序使输入序列按从小到大排列再计算其范数: function[Nor1,Nor2,Nor3]=Nor(c) a=sort(c);b=length(a); formatlong Nor11=0; formatlong Nor21=0;i=1; whilei<=b Nor11=Nor11+abs(a(i));Nor21=Nor21+a(i)^2;t=a(1); ifabs(a(i))>t t=abs(a(i)); end i=i+1; end Nor1=Nor11;%计算1范数 Nor2=sqrt(Nor21);%计算2范数 Nor3=t;%计算无穷范数 end 2.考虑,其中定义,此时是连续函数。用此公式计算当时的函数值,画出图像。另一方面,考虑下面算法: 用此算法计算x∈[−10−15,10−15]时的函数值,画出图像。比较一下发生了什么? 函数: functionF=Piecewise1_x(x) F=log(x+1)/x*(x<0)+1*(x>=0&x<=0)+log(x+1)/x*(x>0); end functionF=Piecewise2_x(x) F=log(x)/(x-1)*(x<1)+1*(x>=1&x<=1)+log(x)/(x-1)*(x>1); end 运行: clc clear x=linspace(-10^(-15),10^(-15)); d=x+1; %原来图像(红色曲线) F=Piecewise1_x(x);%计算相应函数值 plot(x,F,'r');%绘制曲线 holdon; %改变算法后的图像(蓝色曲线) F1=Piecewise2_x(d);%计算相应函数值 plot(x,F1,'b');%绘制曲线 holdon; plot(0*ones(1,2),ylim,'g:');%画区间间隔线 plot(xlim,1*ones(1,2),'g:');%画区间间隔线 xlabe