MATLAB编程(第二版) 第七章

合集下载

MATLAB 程序设计教程第二版实验答案包括第七章

MATLAB 程序设计教程第二版实验答案包括第七章

第二章:1.(1) w=sqrt(2)*(1+0.34245*10^(-6))w =1.4142(2) a=3.5;b=5;c=-9.8;x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a)x =0.9829(3) a=3.32;b=-7.9;y=2*pi*a^2*((1-pi/4)*b-(0.8333-pi/4)*a)y =-128.4271(4) t=[2,1-3i;5,-0.65];>> z=0.5*exp(2*t)*log(t+sqrt(1+t*t))z =1.0e+004 *0.0057 - 0.0007i 0.0049 - 0.0027i1.9884 - 0.3696i 1.7706 - 1.0539i2A=[-1,5,-4;0,7,8;3,61,7];B=[8,3,-1;2,5,3;-3,2,0]; >>(1) A+6*Bans =47 23 -1012 37 26-15 73 7>> A^2-B+eye-18 -216 1823 533 11022 868 526>>(2) A*Bans =14 14 16-10 51 21125 328 180>> A.*Bans =-8 15 40 35 24-9 122 0>> B*Aans =-11 0 -157 228 533 -1 28(3) A/Bans =1.2234 -0.92552.9787 -0.9468 2.3511 -0.9574 4.61703.8723 13.8936>> B\Aans =-0.5106 -8.6170 -1.1277 0.7340 17.5745 1.8085 -0.8830 -21.2128 0.4043>>(4) [A,B]ans =-1 5 -4 8 3 -10 7 8 2 5 33 61 7 -3 2 0>> [A([1,3],:);B^2]ans =-1 5 -43 61 773 37 117 37 13-20 1 9>>3A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14];(1) b=find(A>=10&A<=25);>> A(b)ans =2310(2) B=A(1:3,:)B =23.0000 10.0000 -0.7780 041.0000 -45.0000 65.0000 5.000032.0000 5.0000 0 32.0000C=A(:,1:2)C =23.0000 10.000041.0000 -45.000032.0000 5.00006.0000 -9.5400>> D=A(2:4,3:4)D =65.0000 5.0000 0 32.0000 54.0000 3.1400>> E=B*CE =1.0e+003 *0.9141 -0.22391.20802.71231.1330 -0.2103(3) E<Dans =0 10 00 1>> E&Dans =1 10 11 1>> E|Dans =1 11 11 1~E|~Dans =0 01 00 0第三章:2.(1)c=input('请输入成绩');if(c>=90&c<=100)disp 'A' ;elseif(c>=80)disp 'B';elseif(c>=70)disp 'C';elseif(c>60)disp 'D';elsedisp 'E';end请输入成绩55Ec=input('please enter:'); switch fix(c/10)case {9,10}disp('A');case {8}disp('B');case {7}disp('C');case {6}disp('D');case {0,1,2,3,4,5} disp('E');end>> asplease enter:55E>> asplease enter:67D(2)while(1)c=input('请输入成绩');if(c>=90&c<=100)disp 'A' ;elseif(c<90&c>=80)disp 'B';elseif(c<80&c>=70)disp 'C';elseif(c<70&c>=60)disp 'D';elseif(c<60&c>=0)disp 'E';elsedisp 'wrong'endend>> third请输入成绩113wrong请输入成绩-47wrong请输入成绩45E请输入成绩89B请输入成绩78C3.a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] b=max(a)c=min(a)b=0c=0for i=1:20if a(i)>bb=a(i);endif a(i)<cc=a(i);endendbc6.A=rand(5,6)n=input('请输入矩阵:');if n>5n=5A(n,n)elseA(n)End6. a=rand(5,6);n=input('请输入n');if n==1disp(a(1,:))endif n==2disp(a(2,:))endif n==3disp(a(3,:))endif n==4disp(a(4,:))endif n==5disp(a(5,:))endif n>5disp(a(5,:))end第四章:1.(1)x=-12:0.001:12;y=x-x.^3/6;plot(x,y);xlabel('x轴');ylabel('y轴');title('Y=X-X^3/3!');(2)ezplot('x^2+2*y^2-64',[-8,8,-8,8])xlabel('x轴');ylabel('y轴');axis equaltitle('x^2+2y^2=64');4.(1)t=0:pi/100:2*pi;x=exp(-t/20).*cos(t);y=exp(-t/20).*sin(t);z=t;plot3(x,y,z)(2)[x,y]=meshgrid(-5:5);z=ones(11);surf(x,y,z);shading interp;第五章1.(1)A=randn(10,5);a=mean(A)a =0.0013 0.2310 0.0253 0.3588 -0.4197b=std(A)b =0.9034 0.8829 1.1898 0.7832 1.0821(2)max(max(A))ans =2.1832>> min(min(A))ans =-2.1707(3).sum(sum(A))ans =1.9666sum(A,1)ans =0.0128 2.3095 0.2528 3.5884 -4.1969(4).sort(A)ans =-1.6656 -0.8323 -1.5937 -1.2025 -2.1707-1.1465 -0.5883 -1.4410 -0.3999 -1.6041-0.4326 -0.1867 -1.3362 -0.1567 -1.0565-0.0376 -0.1364 -0.6918 -0.0198 -0.92190.1253 -0.0956 0.2944 0.6686 -0.80510.1746 0.0593 0.5711 0.6900 -0.05920.2877 0.1139 0.7143 0.7119 0.21930.3273 0.7258 0.8580 0.8156 0.25731.1892 1.0668 1.2540 1.1908 0.52871.19092.1832 1.6236 1.2902 1.4151>> sort(ans,2,'descend')ans =-0.8323 -1.2025 -1.5937 -1.6656 -2.1707-0.3999 -0.5883 -1.1465 -1.4410 -1.6041-0.1567 -0.1867 -0.4326 -1.0565 -1.3362-0.0198 -0.0376 -0.1364 -0.6918 -0.92190.6686 0.2944 0.1253 -0.0956 -0.80510.6900 0.5711 0.1746 0.0593 -0.05920.7143 0.7119 0.2877 0.2193 0.11390.8580 0.8156 0.7258 0.3273 0.25731.2540 1.1908 1.1892 1.0668 0.52872.1832 1.6236 1.4151 1.2902 1.19092.(2)n=1:10;a=n.*n;interp1(n,a,2.2,'cubic')ans =4.8133第七章(1)g=inline('sin(x)./x');>> [s,n]=quad(g,0,2)s =1.6054n =18(2)g=inline('1./((x-0.3).*(x-0.3)+0.01)-1./((x-0.9).*(x-0.9)+0.04)-6'); >> [s,n]=quad(g,0,1)s =11.7006n =145。

电子书-MATLAB程序设计与应用(第二版)

电子书-MATLAB程序设计与应用(第二版)

阅阅读读时时::请请选选择择““视视图图 || 文文档档结结构构图图””,,弹弹出出文文档档中中的的标标题题链链接接。

数学软件MATLAB程序设计与应用第1章MATLAB系统环境1.1 MATLAB概貌1.2 MATLAB环境的准备1.3 MATLAB操作界面1.4 MATLAB帮助系统自上世纪80年代以来,出现了科学计算语言,亦称数学软件。

MATLABMathematicaMathcadMapleLINDOLINGO1.1MATLAB概貌 p3MATLAB 是 MATrix LABoratory(矩阵实验室)的缩写。

1984年由 Math Works 公司推出,现已成为国际公认的优秀的工程应用开发环境,是影响最大,流行最广的科学计算语言。

1.1.1M ATLAB的发展2.例如MATLAB7.6的建造编号是R2008a。

说明MATLAB7.6与MATLAB2008a是等同的;3.对于建造编号,正规化以后,每年出两个版本。

一般来说。

a是测试版,b是正式版。

a是前半年出,b是后半年出。

教材采用MATLAB7.0(R14,2004)实验室采用MATLAB 7.8(R2009a,2009.3,汉化)1.1.2M ATLAB的主要功能 p4◆数值计算和符号计算功能◆绘图功能◆语言体系◆MATLAB工具箱(1) 数值计算和符号计算功能MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。

MATLAB先后和著名的符号计算语言Maple与MuPAD(从MATLAB 2008b开始使用MuPAD)相结合,使得MATLAB具有符号计算功能。

(2) 绘图功能可以绘制二维和三维图形。

MATLAB提供了两个层次的绘图操作:●对图形句柄进行的低层绘图操作;●建立在低层绘图操作之上的高层绘图操作。

(3) 语言体系MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。

matlab第七章课后题答案

matlab第七章课后题答案

matlab第七章课后题答案第一题分解因式syms x y z>> A=x^9-1;>> factor(A)ans =(x-1)*(x^2+x+1)*(x^6+x^3+1) 解(1)>> B=x^4+x^3+2*x^2+x+1;>> factor(B)ans =(x^2+1)*(x^2+x+1) 解(2)> C=125*x^6+75*x^4+15*x^2+1;>> factor(C)ans =(5*x^2+1)^3 解(3)> D=x^2+y^2+z^2+z*(x*y+y*z+z*x);>> factor(D)ans =x^2+y^2+z^2+z*x*y+y*z^2+z^2*x 解(4)第二题化简表达式syms x y a b>> s=y/x+x/y;>> simplify(s)ans =(x^2+y^2)/x/y 解(1)s=sqrt(a+sqrt(a^2-b))/2+sqrt(a-sqrt(a^2-b))/2;ans =1/2*(a+(a^2-b)^(1/2))^(1/2)+1/2*(a-(a^2-b)^(1/2))^(1/2) 解(2)s=2*cos(x)^2*x-sin(x)^2*x;>> simplify(s)ans =x*(3*cos(x)^2-1) 解(3)s=sqrt(3+2*(sqrt2)) 第三题求函数的极限> syms x>> f=(x^2-6*x+8)/(x^2-5*x+4);> limit(f,x,4)ans =2/3 解(1)>> f=abs(x)/x;>> limit(f,x,0)ans =NaN 解(2)f=(sqrt(1+x^2)-1)/x;>> limit(f,x,0)ans =0 解(3)f=(x+1/x)^x;>> limit(f,x,inf,'left')ans =Inf 解(4)第四题求函数的符号导数f=3*(x^2)-5*x+1;>> diff(f)ans =6*x-5 解(1)y’>> diff(f,x,2)ans =6 解(1)> y=sqrt(x+sqrt(x+sqrt(x)));>> diff(y)ans =1/2/(x+(x+x^(1/2))^(1/2))^(1/2)*(1+1/2/(x+x^(1/2))^(1/2)* (1+1/2/x^(1/2))) 解(2)diff(y,x,2)ans =-1/4/(x+(x+x^(1/2))^(1/2))^(3/2)*(1+1/2/(x+x^(1/2))^(1/2)*(1+1 /2/x^(1/2)))^2+1/2/(x+(x+x^(1/2) )^(1/2))^(1/2)*(-1/4/(x+x^(1/2))^(3/2)*(1+1/2/x^(1/2))^2-1/8/(x+x^(1/2))^(1/2)/x^(3/2)) 解(2)y=sin(x)-x^2/2;> diff(y)ans =cos(x)-x 解(3)>> diff(y,x,2)ans =-sin(x)-1 解(3)syms x y z>> z=x+y-sqrt(x^2+y^2);>> diff(z,x,y)ans =1-1/(x^2+y^2)^(1/2)*y 解(4)>> diff(y,x)ans =0 解(4)第五题求不定积分x=sym('x');>> f=1/(x+a);>> int(f)ans =log(x+a) 解(1)>> f=(1-3*x)^3;>> int(f)ans =-1/12*(1-3*x)^4 解(2)>> f=(1/(sin(x)^2*cos(x)^2));>> int(f)ans =1/sin(x)/cos(x)-2/sin(x)*cos(x) 解(3)>> f=x^2/(sqrt(a^2+x^2));>> int(f)ans =1/2*x*(a^2+x^2)^(1/2)-1/2*a^2*log(x+(a^2+x^2)^(1/2)) 解(4)第六题求定积分> x=sym('x');> int((x*(2-sin(x)^2))^12,0,1)ans =-13072167041243000966100527033032931/1439431206610157 332070400000000000*sin(1)^19 *cos(1)-6398861758307370972493847449067915934618360845299932 3027852007/820274272 498737105178830959457441284892917760000000000*cos(1)*s in(1)+417844027386435896683 78350956709518241555640967463723429593/1230411408748 105657768246439186161927339376640000000000*sin(1)^3*cos(1)-6287598784304532394386769772554886862775718358540 017487607/179434997109098741757869272381315281070325 7600000000000*sin(1)^7*cos(1)-117903417317/3522410053632*sin(1)^23*cos(1)+93129118771 020938708526771772323524014639/1529945519744217245425650892800000000000*sin(1)^1 7*cos(1)-2677966496932891906 2789407028617562008014032541099/65676988573810175970 43504106365255680000000000* sin(1)^10-9093666156737053001410403050886921533204877134531540 1/53375584364747317 6140678428961747763200000000*cos(1)^2+2541573211/1467 67085568*sin(1)^24+940325057 70279736611460220749/16522396770089041920000000000*si n(1)^20+2704734082846637530 0822998906838403821858600396601/46703636319153902912 30936253415292928000000000*sin(1)^8+5542192477209543230894137867604219553503/255 75581466676109936796106752000000000*sin(1)^16+6290548805350754451916704658025155 325352197570086424587493/20 1864371747736084477602931428979691204116480000000000 0*sin(1)^9*cos(1)-74888453896 484988301898479573506809/175613581237857810540134400 0000000*sin(1)^18-66275838868 9551809679364987359346538465101954279/84285468669723 0591620583026983541145600000000*sin(1)^14+47417160064207694184289443781709965432 75038000761225969993/153801 4260935132072210308048982702409174220800000000000*sin(1)^5*cos(1)-273698005143037 11474211657412466731397670944577/1002665095819570213 96215456910540800000000000*sin(1)^15*cos(1)+18044178399358284974551495/22109663333 532016**********sin(1)^21*cos(1)+159018588498544047612814017616772807534595903672 788230889/18504234076875807 7437802687143231383603773440000000000*sin(1)^13*cos(1)-42990929319556261053136947 04999192498272936575705473777243/2220508089225096929 253632245718776603245281280000000000*sin(1)^11*cos(1)+7264479585721640057236136324 9893595045872001672201/160 1267530942419528422035286885243289600000000*sin(1)^4-179168559345113148705406926 00563709435304263998599/3002376620517036615791316162 909831168000000000*sin(1)^6-3 228431702614231399553/6979060395685611307008*sin(1)^22 +1809464903223467961506769 2014871302547716716561173/86693624917429432280974254 20402137497600000000*sin(1)^12+90821203400667453448262867129549773153665801090519 0650989336891/1066356554248 3582367324802472946736703607930880000000000 解(1)int(x/(x^2+x+1),-1,1)ans =1/2*log(3)-1/6*3^(1/2)*pi 解(2)> int((x*sin(x))^2,0,pi)ans =1/6*pi^3-1/4*pi 解(3)第七题求级数之和n=sym('n');>> s1=symsum((-1)*(2*n+1)/2^n,n,0,inf)s1 =-6 解(1)>> s2=symsum(x^(2*n-1)/2^n-1,n,1,inf)s2 =sum(x^(2*n-1)/(2^n)-1,n = 1 .. Inf) 解(2)s3=symsum(1/(2*n+1)^2,n,0,inf)s3 =1/8*pi^2 解(3)s4=symsum(1/n*(n+1)*(n+1),n,1,inf)s4 =Inf 解(4)第八题求泰勒展开式>> x=sym('x');f1=x^4-5*x^3+x^2-3*x+4;f2=(exp(x)+exp(-x))/2;f3=tan(x);f4=sin(x)^2;f5=sqrt(x^3+x^2+5*x+3);taylor(f1,4,4)ans =-140+21*x+37*(x-4)^2+11*(x-4)^3 解(1)taylor(f2,5,0)ans =1+1/2*x^2+1/24*x^4 解(2)taylor(f3,3,2)ans =tan(2)+(1+tan(2)^2)*(x-2)+tan(2)*(1+tan(2)^2)*(x-2)^2 解(3)taylor(f4,8,0)x^2-1/3*x^4+2/45*x^6 解(4)taylor(f5,5,0)ans =3^(1/2)+5/6*3^(1/2)*x-13/72*3^(1/2)*x^2+137/432*3^(1/2)*x^3-2909/10368*3^(1/2)* x^4 解(5)第九题求非线性方程的解x=solve(‘a*x^2+b*x+c=0’,’x’)x =1/2/a*(-b+(b^2-4*a*c)^(1/2))1/2/a*(-b-(b^2-4*a*c)^(1/2)) 解(1)x=solve(‘2*sin(3*x-pi/4)=1’,’x’)x =5/36*pi 解(2)x=solve(‘sin(x)-sqrt(3)*cos(x)=sqrt(2)’,’x’)x =-atan(2*(1/4*2^(1/2)+1/4*3^(1/2)*2^(1/2))*2^(1/2)/(3^(1/2)-1))+pi-atan(2*(1/4*2^(1/2)-1/4*3^(1/2)*2^(1/2))*2^(1/2)/(1+3^(1/2)))-pi 解(3)x=solve(‘x^2+10*(x-1)*sqrt(x)+14*x+1=0’,’x’)x =(2^(1/2)-1)^2(-4+17^(1/2))^2 解(4)第十题求方程组的解[x,y]=solve(‘ln(x/y)=9’,’exp(x+y)=3’,’x,y’)x =exp(9)*log(3)/(exp(9)+1)log(3)/(exp(9)+1) 解(1)[x,y,z]=solve(‘(4*x^2)/(4*x^2+1)=y’,’(4*y^2)/(4*y^2+1) =z’,’(4*z^2)/(4*z^2+ 1)=x’,’x,y,z’)x =y =0 解(2)z =第十一题求初值y=dsolve('x*(D2y)+(1-n)*(Dy)+y=0','y(0)=Dy(0)=0','x')第十二题,求特解[x,y]=dsolve(‘Dx=3*x+4*y’,’Dy=5*x-7*y’,’x(0)=0’,’y(0)=0’,’t’)x =y =解(1)。

MATLAB程序设计与应用(刘卫国)》(第二版)-课后实验答案

MATLAB程序设计与应用(刘卫国)》(第二版)-课后实验答案

MATLAB程序设计与应⽤(刘卫国)》(第⼆版)-课后实验答案《MATLAB程序设计与应⽤(刘卫国)》(第⼆版)实验⼀MATLAB运算基础1.(1) z1=2*sin(pi*85/180)/(1+exp(2))(2)x=[2,1+2i;-0.45,5];z2=log(x+sqrt(1+x.^2))/2(3)a=-3.0:0.1:3.0;z3=0.5*(exp(0.3*a)-exp(-0.3*a)).*sin(a+0.3)+log((0.3+a)/2)(4)t=0:0.5:2.5;z4=(t>=0&t<1).*t.^2+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^2-2*t+1)2. A=[12,34,-4;34,7,87;3,65,7];B=[1,3,-1;2,0,3;3,-2,7];(1)a=A+6*Bb=A-B+eye(size(A)) %I=eye(size(A))(2)c=A*Bd=A.*B(3)e=A^3f=A.^3(4)g=A/Bh=B\A(5)m=[A,B]n=[A([1,3],:);B^2]3. A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20;21,22,23,24,25];B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11];(1)C=A*B(2)D=C(3:end,2:end)4.(1) a=100:999;b=rem(a,21)==0;c=find(b);d=length(c)(2)ch='Just as Bianhaiman said,Xiehong is ...';e=find(ch>='A'&ch<='Z');ch(e)=[]实验⼆ MATLAB矩阵分析与处理R=rand(3,2);O=zeros(2,3);S=diag([1,2]);A=[E,R+R*S;O,S^2];a=A^22. H=hilb(5);P=pascal(5);Hh=det(H)Hp=det(P)Th=cond(H)Tp=cond(P)3. A=rand(5,5);a=det(A) %⾏列式的值b=trace(A) %⾏列式的迹c=rank(A) %⾏列式的秩d=norm(A) %⾏列式的范数4. A=[-29,6,18;20,5,12;-8,8,5];[V,D]=eig(A)5. A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]; b=[0.95,0.67,0.52]';(1)x=inv(A)*b(2)b1=[0.95,0.67,0.53]';x=inv(A)*b1(3)c=cond(A)6. A=rand(3,3);B=sqrtm(A)C=sqrt(A)实验三选择结构程序设计1. x=input('请输⼊x的值:');if x<0&x~=-3y=x*x+x-6;elseif x>=0&x<5&x~=2&x~=3y=x*x-5*x+6;elseendy2.(if语句)score=input('请输⼊成绩:');if score>=0&score<60disp('E');elseif score>=60&score<70disp('D');elseif score>=70&score<80disp('C');elseif score>=80&score<90disp('B');elseif score>=90&score<=100disp('A');elsedisp('您输⼊的成绩有误,请重新输⼊!'); end(switch语句)score=input('请输⼊成绩:');switch fix(score/10)case num2cell(0:5)disp('E');case {6}disp('D');case {7}disp('C');case {8}disp('B');case {9}disp('A');otherwisedisp('您输⼊的成绩有误,请重新输⼊!'); end 3. a=input('请输⼊⼯号:','s');b=input('请输⼊该员⼯的⼯时数:');y=120*84+(b-120)*(1+15/100)*84; elseif b<60y=b*84-700;elsey=b*84;endy4.a=10+fix(89*rand());b=10+fix(89*rand());c=input('请输⼊⼀个运算符:','s'); if c=='+' disp(a+b);elseif c=='-'disp(a-b);elseif c=='*'disp(a*b);elsedisp(a/b);end5. A=rand(5,6);n=1:5;n=input('请输⼊n的值:');tryB=A(n,:);catchB=A(end,:);endBlasterr实验四循环结构程序设计1.(循环结构)n=input('请输⼊n的值:');y=0;for i=1:ny=y+1/i/i;pi=sqrt(6*y);endpi(向量运算)n=input('请输⼊n的值:');i=1:n;y=1./i.^2;f=sum(y);pi=sqrt(f*6)2. y=0;n=0;while 1n=n+1;y=y+1/(2*n-1);if y>=3breakendendny=y-1/(2*n-1)3. a=input('输⼊a的值:');b=input('输⼊b的值:');x0=1.0;n=1;x1=a/(b+x0);while abs(x1-x0)>=10^(-5)|n<=500 x1=a/(b+x0); x0=x1;n=n+1;endx14. f(1)=1;f(2)=0;f(3)=1;for n=4:100f(n)=f(n-1)-2*f(n-2)+f(n-3); enda=max(f) %最⼤值b=min(f) %最⼩值c=sum(f) %各数之和d=length(find(f>0)) %正数的个数e=length(find(f==0)) %零的个数f=length(find(f<0)) %负数的个数5. n=0;s=0;for k=2:49sn=k*(k+1)-1;m=fix(sqrt(sn));for i=2:mif rem(sn,i)==0breakelseendendif i==mn=n+1;s=s+sn;endendns实验五函数⽂件1.(函数⽂件)function [e,l,s,c]=f1(x)e=exp(x);l=log10(x);s=sin(x);c=cos(x);(命令⽂件)x=input('请输⼊⼀个复数:'); [e,l,s,c]=f1(x);elsc2.(函数⽂件)function [x]=f2(A,B)C=B';x=C*inv(A);(命令⽂件)m1=input('Enter m1:');m2=input('Enter m2:');theta=input('Enter theta:'); g=9.8;A=[m1*cos(theta),-m1,-sin(theta),0;m1*sin(theta),0,cos(theta),0;0,m2,-sin(theta),0;0,0,-cos(theta),1]; B=[0,m1*g,0,m2*g]';[x]=f2(A,B);x3.(函数⽂件)function f=f3(x)f=1;for i=2:sqrt(x)if rem(x,i)==0f=0;breakendend(命令⽂件)for i=10:99j=10*rem(i,10)+fix(i/10);if f3(i)&f3(j)disp(i);endend4.(函数⽂件)function f=f4(x)f=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);(命令⽂件)x=[1,2,3;4,5,6];y=f4(x)5.(1)(函数⽂件)function f=f5(n)f=n+10*log(n^2+5);(命令⽂件)y=f5(40)/(f5(30)+f5(20))(2)(函数⽂件)function f=f6(i)g=0;for i=1:nf=g+i.*(i+1);end(命令⽂件)y=f6(40)/(f6(30)+f6(20))实验六⾼层绘图操作1. x=linspace(0,2*pi,101);y=(0.5+3*sin(x)./(1+x.*x));plot(x,y);title('实验六第⼀题');xlabel('X');ylabel('Y');text(3,0.6,'y=0.5+3sin(x)/(1+x^2)');2.(1)x=linspace(0,pi,100);y1=x.^2;y2=cos(2*x);y3=y1.*y2;plot(x,y1,'b',x,y2,'g',x,y3,'r'); title('同⼀坐标系下得三条曲线'); text(2,4,'y1=x^2');text(2,-0,8,'y2=cos(2x)');text(2,-2.2,'y=x^2*cos(2x)');xlabel('X');ylabel('Y');(2)x=linspace(0,pi,100); y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(1,3,1);plot(x,y1);title('y1=x^2');xlabel('X');ylabel('Y'); subplot(1,3,2);plot(x,y2);title('y2=cos(x)');xlabel('X');ylabel('Y') subplot(1,3,3);plot(x,y3);title('y3=x^2*cos(x)'); xlabel('X');ylabel('Y');(3)x=linspace(0,2*pi,20); y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(4,3,1);bar(x,y1);subplot(4,3,2);bar(x,y2);subplot(4,3,3);bar(x,y3);subplot(4,3,4);stairs(x,y1);subplot(4,3,5);stairs(x,y2);subplot(4,3,6);stairs(x,y3);subplot(4,3,7);stem(x,y1);subplot(4,3,8);stem(x,y2);subplot(4,3,9);stem(x,y3);subplot(4,3,10);fill(x,y1,'b');subplot(4,3,11);fill(x,y2,'r');subplot(4,3,12);fill(x,y3,'g');3. x=linspace(-5,5,100);y=[];for x0=xif x0>=-5&x<=0y=[y,(x0+sqrt(pi))/exp(2)];elsey=[y,log(x0+sqrt(1+x0.^2))/2];endendplot(x,y);title('实验六第三题');xlabel('X');ylabel('Y');4. a=input('请输⼊a:');b=input('请输⼊b:');n=input('请输⼊n:');theta=0:0.01:2*pi;rho=a.*sin(b+n.*theta);polar(theta,rho,'r');title('极坐标曲线');(如:当输⼊a=3,b=4,n=6时,图形为:)5. x=linspace(-5,5,21);y=linspace(0,10,31);[x,y]=meshgrid(x,y);z=cos(x).*cos(y).*exp(-sqrt(x.*x+y.*y)/4); subplot(2,1,1); surf(x,y,z);title('曲⾯图');xlabel('X');ylabel('Y');zlabel('Z'); subplot(2,1,2);surfc(x,y,z);title('等⾼线图');xlabel('X');ylabel('Y');zlabel('Z');6.(⽅法⼀)s=0:pi/100:pi/2;t=0:pi/100:3*pi/2;[s,t]=meshgrid(s,t);x=cos(s).*cos(t);y=cos(s).*sin(t);z=sin(s);surf(x,y,z);shading interp;title('实验六第六题');xlabel('X');ylabel('Y');zlabel('Z');(⽅法⼆)ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,0.5*pi,0,1.5*pi]); shading interp;实验七低层绘图操作1. hf=figure('MenuBar','figure','NumberTitle','off','Color','r',...'Name','图形窗⼝⽰例',...'WindowButtonDownFcn','disp(''Left Button Pressed.'')');2. x=-1:0.1:1;y=x.^2.*exp(2*x);h=line('XData',x,'YData',y);text(0.6,0.36*exp(1.2),'\leftarrow y=x^2*exp(2*x)');set(h,'Color','r','LineStyle','--','LineWidth',2);grid on;title('函数y=x^2*exp(2*x)');3. x=0:0.00001:0.001;[x,t]=meshgrid(x);v=10*exp(-0.01*x).*sin(2000*pi*t-0.2*x+pi);axes('view',[-37.5,30]);hf=surface(x,t,v);grid on;xlabel('X');ylabel('Y');zlabel('Z');title('曲⾯v=10*exp(-0.01*x)*sin(2000*pi*t-0.2*x+pi)');set(hf,'EdgeColor','interp','FaceColor','r','LineStyle',':','LineWidth',2);4. x=linspace(0,2*pi,20);y1=sin(x);y3=sin(x)./(cos(x)+eps);y4=cos(x)./(sin(x)+eps);axes('Position',[0.15,0.1,0.2,0.4]);plot(x,y1);title('y1=sin(x)');axes('Position',[0.05,0.6,0.2,0.3]);plot(x,y2);title('y2=cos(x)');axes('Position',[0.45,0.6,0.3,0.3]);plot(x,y3);title('y3=tan(x)');axes('Position',[0.5,0.2,0.3,0.2]);plot(x,y4);title('y4=cot(x)');5. cylinder(3);light('Position',[1,2,4]); shading interp;lighting gouraud;material shiny实验⼋数据处理与多项式计算1.A=rand(1,30000);a=mean(A) %均值b=std(A,0,2) %标准⽅差c=max(A) %最⼤元素d=min(A) %最⼩元素n=0;for i=1:30000if A(i)>0.5n=n+1; %⼤于0.5的随机数的个数endendm=n/30000 %百分⽐2. P=45+fix(50*rand(100,5));[zgf,xh]=max(P) %每门课的最⾼分及相应的学号[zdf,xh]=min(P) %每门课的最低分及相应的学号pjf=mean(P) %每门课的平均分fc=std(P) %标准⽅差A=sum(P,2); %总分[zfzg,xh]=max(A) %总分最⾼分及学号[zfzd,xh]=min(A) %总分最低分及学号[zcj,xsxh]=sort(A,1,'descend')x=6.5:2:17.5;t1=[18.0 20.0 22.0 25.0 30.0 28.0 24.0]; t2=[15.0 19.0 24.0 28.0 34.0 32.0 30.0]; a=interp1(h,t1,x,'spline')b=interp1(h,t2,x,'spline')4. x=linspace(1,101,10);y=log10(x);p=polyfit(x,y,5);y1=polyval(p,x);plot(x,y,'r:o',x,y1,'-*')。

MATLAB编程与工程应用——第7章 MATLAB解方程与函数极值

MATLAB编程与工程应用——第7章 MATLAB解方程与函数极值
一般调用格式( ode45为例) 一般调用格式(以ode45为例) 为例 [t,y]=ode45('fname',tspan,y0) 其中fname是定义f(t,y)的函数文件名,该函数文件必 须返回一个列向量。 tspan形式为[t0,tf],表示求解区间。要获得问题在时 间点t0,t1,…tf上的解,则令tspan=[t0,t1,…,tf] (要求是单调的) y0是初始状态列向量。 t和y分别给出时间向量和相应的状态向量。 求ቤተ መጻሕፍቲ ባይዱ描述振荡器的经典的Ver Pol微分方程 例7.9 求解描述振荡器的经典的Ver der Pol微分方程 d2y verderpol.m exp7_9.m 2 dy (1 y ) + 1 = 0
MATLAB解方程与函数极值
7.1 线性方程组求解
二、迭代解法
迭代解法非常适合求解大型系数矩阵的方程组。在数值 分析中,迭代解法主要包括 Jacobi迭代法、GaussSerdel迭代法、超松弛迭代法和两步迭代法。 Jacobi迭代法 1.Jacobi迭代法 对于线性方程组Ax=b,如果A为非奇异方阵,即aii≠0, 则A可分解为A=D-L-U,其中D为对角阵,其元素为A的对 角元素,L与U为A的下三角阵和上三角阵,于是Ax=b化为: x=D-1(L+U)x+D-1b 与之对应的迭代公式为: x(k+1)=D-1(L+U)x(k)+D-1b 利用jacobi jacobi迭代法求方程的解 例7.4 利用jacobi迭代法求方程的解 exp7_4.m jacobi.m
如s=2时
j =1 j =1
i 1
i 1
1 ym +1 = ym + h[ f ( xm , ym ) + f ( xm + h, ym + h)] 2

第七章 MATLAB程序设计

第七章 MATLAB程序设计

1、输入程序: %对两个矩阵相 加 clc clear a=[1,2,3]; b=[4,5,6]; c=a+b
3、在命令窗口输入 myadd,回车 或打开文件,点击运 行按钮 给出结果: c=
5
7
9
18
打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单 中选择Open命令,则屏幕出现Open对话框, 在Open对话框中选中所需打开的M文件。在 文档窗口可以对打开的M文件进行编辑修改, 编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令: edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具 栏上的Open File命令按钮,再从弹出的对话 框中选择所需打开的M文件。
直接访问work space 通过函数形参传递数据 中所有变量 直接选取MATLAB中 精心设计完成指定功能 执行的语句 重复操作 MATLAB功能扩展
7
1.3 M文件的创建

m文件的类型是普通的文本文件,我们可以使用 系统认可的文本文件编辑器来建立m文件。如 MATLAB下的m文件编辑器、windows的记事 本和word等。
s=pi*r*r; p=2*pi*r;
24
特定规则:
1.函数m文件第一行必须以单词function作为引导词,表示该M文件是一 个函数文件,必须遵循如下形式: function <因变量>=<函数名>(<自变量>)
2.函数名的命名规则与变量名相同,m文件的文件名必须是 <函数名> .m。 3.输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形 参多于一个时,则应该用方括号括起来。 4.程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数 运行期间有效。

MATLAB程序设计及应用第2版课件全全书教学教程完整版电子教案最全幻灯片

MATLAB程序设计及应用第2版课件全全书教学教程完整版电子教案最全幻灯片

第1章 MATLAB入门与基本操作
1.3 MATLAB的安装启动 与操作桌面简介
1.3.1 MATLAB的安装和启动
MATLAB 可以在Windows环境下直接安装。在
MATLAB安装完成后,会在Windows桌面上自动生成
MATLAB的快捷方式图标

1.3.1 MATLAB的安装和启动
双击图标
1.3.2 MATLAB默认窗口简介
• 指令窗(Command Window) 该窗口是进行各种MATLAB操作的最主要窗口。它位于 MATLAB默认窗口的正中间。用户可以在该窗口中提示符 “fx>>”后直接键入指令,按“Enter”键后,即可运行并 显示除窗口外的所有运行结果。当指令窗口提示符为 “fx>>”时,表示系统已经准备好,用户可以输入指令、函 数、表达式,按“Enter”键后便可执行。
1.4 MATLAB指令窗操作入门
,就打开了如图1.1所示的MATLAB默认窗口
(Desktop)。
图1.1
1.3 MATLAB的安装启动 与默认窗口简介
1.3.2 MATLAB默认窗口简介
图1.1所示的MATLAB默认窗口分为5个区域:指令窗、 当前目录窗、历史指令窗、工作空间窗和Details窗。 另外,在MATLAB默认窗口的上方,还嵌入了菜单栏 和工具栏,如图1.1所示。它们的使用及选择方式与 Windows环境中的相同。
图1.2
第1章 MATLAB入门与基本操作
1.4 MATLAB指令窗操作入门
1.4.1 MATLAB指令窗简介
MATLAB指令窗位于MATLAB默认窗口的正中间,如图 1.1所示。如果用户希望得到脱离默认窗口的几何独立的指 令窗,只要单击图1.2中的图标 ,并在下拉菜单中选择

Matlab 课后习题集

Matlab 课后习题集

Matlab程序设计课程实验目录Matlab操作实验(第1章)实验指导思考练习矩阵运算实验(第2章)实验指导思考练习程序设计实验(第3章)实验指导思考练习高级绘图实验(第4章)实验指导思考练习数据分析与多项式计算实验(第5章)实验指导思考练习解方程与最优化问题求解实验(第6章)实验指导思考练习数值运算实验(第7章)实验指导思考练习符号实验(第8章)实验指导思考练习图形句柄实验(第9章)实验指导思考练习图形用户界面设计实验(第10章)实验指导思考练习Simulink动态仿真实验(第11章)实验指导思考练习外部接口技术实验(第12章)实验指导思考练习1、Matlab操作实验一、实验内容1. 第一章实验内容1:path(path,’系统盘名:\matlab文件名\要添加的文件名’)如:path(path,’c:\matlab701\my work’)实验内容-2例1-1:x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));例1-2p=[3,7,9,0,-23];x=roots(p)例1-3quad(‘x.*log(1+x)’,0,1)例1-4:实验内容3Help 函数名如:help inv help plot等实验内容4(1)x=0:pi/10:2*pi;y=sin(x);二、思考练习思考题1启动:有三种常见方法,(1)、在Windows桌面,单机任务栏上的‚开始‛按钮,选择‚所有程序‛菜单项,然后选择MATLAB程序组中的MATLAB (版本号)程序选项,即可启动。

(2)、在MATLAB的安装路径中找到MATLAB系统启动程序matlab.exe,然后运行它。

(3)、利用建立快捷方式功能,将MATLAB系统启动程序以快捷方式的形式放在Windows桌面上,以后只要在桌面上双击该图标即可启动MATLAB。

关闭:常见的也有3种方法,(1)、在MATLAB主窗口file菜单中选择exit MATLAB命令。

matlab第二版课程设计

matlab第二版课程设计

matlab第二版课程设计一、课程目标知识目标:1. 掌握MATLAB第二版的基本操作和功能,包括数据类型、矩阵运算、控制结构等;2. 学习使用MATLAB进行数据可视化、图像处理和信号处理等操作;3. 理解MATLAB编程的基本原则和技巧,培养良好的编程习惯。

技能目标:1. 能够运用MATLAB解决实际问题,进行数据分析和处理;2. 培养运用MATLAB进行算法设计和实现的能力;3. 提高运用MATLAB进行科学计算和工程应用的能力。

情感态度价值观目标:1. 培养学生对MATLAB编程的兴趣,激发学习热情;2. 培养学生主动探索、积极思考的学习态度,增强解决问题的自信心;3. 引导学生认识到数学和计算机技术在解决实际问题中的重要性,培养团队协作和交流沟通的能力。

分析课程性质、学生特点和教学要求,本课程目标注重理论与实践相结合,充分考虑学生的年级知识深度。

通过本课程的学习,使学生能够熟练运用MATLAB软件,解决实际问题和开展科学研究,为后续相关课程打下坚实基础。

同时,注重培养学生的学习兴趣和综合素质,提高其运用现代科技手段解决实际问题的能力。

课程目标具体、可衡量,以便教师进行教学设计和评估。

二、教学内容1. MATLAB基础操作与编程环境:介绍MATLAB软件的安装与界面,基本命令与操作,编写和运行脚本,管理工作空间;对应教材章节:第一章 MATLAB概述。

2. 数据类型与矩阵运算:讲解MATLAB中的基本数据类型,矩阵和向量的创建与操作,矩阵运算规则;对应教材章节:第二章 数据类型与矩阵运算。

3. 控制结构:学习MATLAB中的条件语句和循环结构,实现逻辑判断和循环计算;对应教材章节:第三章 控制结构。

4. 函数与脚本:介绍MATLAB中函数的编写和调用,掌握脚本文件的创建与运行;对应教材章节:第四章 函数与脚本。

5. 数据可视化与图像处理:学习利用MATLAB绘制图表、图像处理和动画制作;对应教材章节:第五章 数据可视化与图像处理。

MATLAB7简明教程

MATLAB7简明教程

返回
27
MATLAB 7 简明教程
清华大学出版社
第三章 基本使用方法
• • • 教学目标 教学重点 教学过程
2013-7-12
第一章 MATLAB 7 简介
返回
28
MATLAB 7 简明教程
清华大学出版社
教学目标
• MATLAB 7的优点不仅在于强大的功能,还 在于其简单易学。 • 本章主要是介绍MATLAB 7的基本使用方法。 • 用户在学习完本章的内容后,可以进行基 本的数值运算,从而能够容易地解决许多 在学习和科研中遇到的计算问题 。
第一章 MATLAB 7 简介
返回
32
MATLAB 7 简明教程
清华大学出版社
(1)最简单的计算器使用法
• 直接输入法
– >> 3*30+3*35+4*30+4*32 – ans = – 443 – >>
• 存储变量法
– – – – – – – >> grade1=3*30 grade1 = 90 >> grade2=3*35 grade2 = 105 >> total=grade1+grade2total = – 195 – >>
2013-7-12
第一章 MATLAB 7 简介
返回
23
MATLAB 7 简明教程
清华大学出版社
MATLAB 7的路径搜索
– MATLAB 7有一个专门用于寻找“.m‖文件的路 径搜索器。“.m‖文件是以目录和文件夹的方式 分布于文件系统中的,一部分“.m‖文件的目录 是MATLAB 7的子目录,由于MATLAB 7的一 切操作都是在它的搜索路径(包括当前路径中进 行的,所以如果调用的函数在搜索路径之外, MATLAB 7就会认为此函数并不存在。

Matlab程序设计教程(第二版)课后参考答案

Matlab程序设计教程(第二版)课后参考答案

Matlab程序设计教程(第二版)课后参考答案第一章实验1.实验一第1题2.自己验证总结Matlab的主要优点3.实验一第2题4.实验一第3题5.网站思考练习1.启动见书P5 退出见书P62.Matlab主要功能见书P2 4种功能3.分行输入行末尾加续行符,即三个点“…”4.见书P115.直接在命令窗口输入fac第二章实验1.(1) w=sqrt(2)*(1+0.34245*10^(-6))w = 1.4142(2) a=3.5;b=5;c=-9.8;x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a)x =0.9829(3) a=3.32;b=-7.9;y=2*pi*a^2*((1-pi/4)*b-(0.8333-pi/4)*a)y = -128.4271(4) t=[2,1-3i;5,-0.65];z=0.5*exp(2*t)*log(t+sqrt(1+t.*t))z =1.0e+004 *0.0048 + 0.0002i 0.0048 - 0.0034i1.58992.0090 - 1.3580i2.实验二第1题3.实验二第2题4. H=hilb(5);P=pascal(5);Hh=det(H)Hh = 3.7493e-012Hp=det(P)Hp = 1Th=cond(H)Th = 4.7661e+005Tp=cond(P)Tp = 8.5175e+003条件数越趋近于1,矩阵的性能越好,所以帕斯卡矩阵性能更好。

5. A=[-29,6,18;20,5,12;-8,8,5]A =-29 6 1820 5 12-8 8 5[V,D]=eig(A)V =0.7130 0.2803 0.2733-0.6084 -0.7867 0.87250.3487 0.5501 0.4050D =-25.3169 0 00 -10.5182 00 0 16.8351V为A的特征向量,D为A的特征值。

楼顺天 第二版 matlab7.x 程序设计语言答案

楼顺天  第二版  matlab7.x 程序设计语言答案

P83No.3>> A=5-round(100*rand(50,2))/10A =0.8000 -4.20004.10005.0000-1.0000 0.40000.3000 0.8000-2.0000 0.4000-2.0000 -2.7000-1.4000 1.80004.7000 -2.80004.3000 0.30001.8000 4.6000-0.3000 3.2000-1.5000 -2.20000.9000 0.3000-3.2000 3.5000-2.2000 1.6000-4.7000 -1.1000-0.3000 3.10001.7000 -2.40003.9000 2.6000-1.1000 -4.2000-2.8000 2.30000.8000 -2.70004.1000 3.10002.3000 2.10003.50004.10002.2000 -0.80000.6000 -1.8000-0.3000 -0.50000.4000 0.7000-3.8000 -1.4000-0.2000 -1.5000-4.4000 -1.8000-1.4000 -1.4000-4.6000 -4.50002.6000 2.9000-1.8000 -2.10002.1000 2.6000-1.7000 3.8000-2.0000 -1.10004.3000 0.50002.5000 0.40002.8000 -1.6000-1.7000 -2.7000-3.4000 1.50001.6000 -1.6000-2.8000 0.8000-1.8000 -3.40004.9000 -3.3000-1.0000 2.40001.1000 -1.1000No.6>> A=randn(10,10)A =-0.4326 -0.1867 0.2944 -0.3999 -1.6041 -1.0106 0.0000 0.5689 0.6232 0.3899-1.6656 0.7258 -1.3362 0.6900 0.2573 0.6145 -0.3179 -0.2556 0.7990 0.08800.1253 -0.5883 0.7143 0.8156 -1.0565 0.5077 1.0950 -0.3775 0.9409 -0.63550.2877 2.1832 1.6236 0.7119 1.4151 1.6924 -1.8740 -0.2959 -0.9921 -0.5596-1.1465 -0.1364 -0.6918 1.2902 -0.8051 0.5913 0.4282 -1.47510.2120 0.44371.1909 0.1139 0.8580 0.6686 0.5287 -0.6436 0.8956 -0.23400.2379 -0.94991.1892 1.0668 1.2540 1.1908 0.2193 0.3803 0.7310 0.1184 -1.0078 0.7812-0.0376 0.0593 -1.5937 -1.2025 -0.9219 -1.0091 0.5779 0.3148 -0.7420 0.56900.3273 -0.0956 -1.4410 -0.0198 -2.1707 -0.0195 0.0403 1.44351.0823 -0.82170.1746 -0.8323 0.5711 -0.1567 -0.0592 -0.0482 0.6771 -0.3510 -0.1315 -0.2656>> [i,j]=find(-0.5<A<0.5)i =25310259813589168454783469 j =11223333455555666789991010 10 >> length(j) ans = 26P146 No.5clear; x=-3:0.1:3; figure(1) y1=2*x+5; y2=x.^2-3*x+1;subplot(1,2,1),plot(x,y1),title('函数1') axis([-3 3 -5 5])subplot(1,2,2),plot(x,y2),title('函数2') axis([-3 3 -5 5])-22-5-4-3-2-1012345函数1-22-5-4-3-2-1012345函数2No.7 clear;x=[190 33 45 42 45];h=pie(x,{'生活费','资料费','电话费','购买衣服','其他费用'}) explode=[0 1 0 0 0]; figure(1)pie(x,{'生活费','资料费','电话费','购买衣服','其他费用'}) title('每月消费比例')-22-5-4-3-2-1012345函数1生活费衣服每月消费比例h =175.0033 176.0023 177.0022 178.0022 179.0022 180.0022 181.0022 182.0022 183.0022 184.0022 No.9[x,y]=meshgrid([-2:0.25:2]); >> z=x.^2+y.^2+sin(x*y); >> contour3(x,y,z,30)surface(x,y,z,'EdgeColor',[.8 .8 .8],'FaceColor','none') >> grid off>> view(-15,25)-22P184 No.1 clear;function [t]=sushu(n) n=input(‘输入的数是’) A=sqrt(n); k=floor(A); for i=2:kif mod(n,i)==0 t=0; break; elset=1; end end No.3zeros_num_all = 0; for i=1:2006zeros_num = zeroscnt1(i); %zeros_num = zeroscnt2(i);zeros_num_all = zeros_num + zeros_num_all; enddisp(['1~2006中“0”的个数为:',num2str(zeros_num_all)])zeroscnt1函数:function num = zeroscnt1(data) data_str = num2str(data);num_vec = find(data_str == '0'); num = length(num_vec); zeroscnt2函数function num = zeroscnt2(data) num = 0;while(data>=1)if mod(data,10) == 0num = num + 1;data = fix(data/10);elsedata = fix(data/10);endendNo.5i=0;for x=-3:0.01:3i=i+1;X(i)=x;if and(x>=-3,x<-1)Y(i)=(-x*x-4*x-3)/2;elseif and(x>=-1,x<1)Y(i)=-x*x+1;elseY(i)=(-x*x+4*x-3)/2;endendplot(X,Y)-3-2-112300.10.20.30.40.50.60.70.80.91No.8clear;I=input(‘个人完成的利润为’)if I<=10 y=I*0.1 elseif I>10&I<=20 y=10*10+(I-10)*0.05 elseif I>20&I<=40 y=10*0.15+(I-20)*0.02 elseif I>40y=10*0.17+(I-40)*0.01 end>> m02个人完成的利润为25 I = 25 y =1.6000 No.9clear; i=1; s=0;a1=1;a2=1;while i<16k=a1;a1=a1+a2;a2=k;s=s+a1/a2;i=i+1;end>> ss =24.5701P263No.1(1) >>a=[1 9 8;7 2 5;3 -2 7]a =1 9 87 2 53 -2 7>> det(a)ans =-442>> inv(a)ans =-0.0543 0.1787 -0.06560.0769 0.0385 -0.11540.0452 -0.0656 0.1380(2) >> b=[1 0 -7 5;0 -26 7 2;7 4 3 5;8 -3 2 15]b =1 0 -7 50 -26 7 27 4 3 58 -3 2 15>> det(b)ans =-9334>> inv(b)ans =0.1501 0.0654 0.3046 -0.1603-0.0509 -0.0471 -0.0312 0.0336 -0.1697 -0.0204 -0.0703 0.0827 -0.0676 -0.0416 -0.1593 0.1478No.22,(1)>> a1=[1 2 3;2 2 5;3 5 1];>> b1=[11;12;31];x1=inv(a1)*b1x1 =1.80005.2000-0.4000(2)a2=[3 1 0 5;0 6 7 3;0 4 3 0;2 -1 2 6];b2=[2;4;7;8];>> x2=inv(a2)*b2x2 =28.1892-9.459514.9459-14.6216No.3clear;t=1:1:10;t=t';y=[4.842,4.362,3.754,3.368,3.169,3.083,3.304,3.016,3.012,3.005]'; x1=[ones(size(t)),exp(-t)];x2=[ones(size(t)),t.*exp(-t)];p1=x1\y;p2=x2\y;tt=linspace(1,10,1000);plot(t,y,'*',tt,p1(1)+p1(2)*exp(-tt),'r-',tt,p2(1)+p2(2)*tt.*exp(-tt),'c-') grid on,legend('给定数据','y1拟合','y2拟合')No.7clear;t=1:10;tt=1:0.01:10;y=[15,39.5,66,85.5,89,67.5,12,-86.4,-236.9,-448.4]; p1=polyfit(t,y,2);y1=polyval(p1,tt);p2=polyfit(t,y,3);y2=polyval(p2,tt);plot(t,y,'b*',tt,y1,'r-',tt,y2,'c-');legend('样本点','二次拟合','三次拟合'),grid on12345678910No.8p1,p2,p3,p4p1 =1 -2 -34 2p2 =1 -7 5 31 -30p3 =1 -1 -25 25p4 =-2 3 1 5 8 0>> roots(p1),roots(p2),roots(p3),roots(p4)ans =2.41421.4142-1.4142-0.4142ans =5.0000-2.00003.00001.0000ans =-5.00005.00001.0000ans =2.41760.0148 + 1.3215i0.0148 - 1.3215i-0.9473No.9y11=polyval(p1,-1.5),y12=polyval(p1,2.1),y13=polyval(p1,3.5) y11 =1.0625y12 =-1.9039y13 =43.5625>> y21=polyval(p2,-1.5),y22=polyval(p2,2.1),y23=polyval(p2,3.5) y21 =-36.5625y22 =11.7711y23 =-10.3125>> y31=polyval(p3,-1.5),y32=polyval(p3,2.1),y33=polyval(p3,3.5) y31 =56.8750y32 =-22.6490y33 =-31.8750>> y41=polyval(p4,-1.5),y42=polyval(p4,2.1),y43=polyval(p4,3.5) y41 =26.2500y42 =24.7733y43 =-468.125013,15,16,20No.13>> a=rand(1,50);amax=max(a)amin=min(a)ua=mean(a)vara=(std(a))^2b=randn(1,50);bmax=max(a)bmin=min(a)ub=mean(a)varb=(std(a))^2amax =0.9706amin =0.0318ua =0.5661vara =0.0977bmax =0.9706bmin =0.0318ub =0.5661varb =0.0977No.15>> t=0:1/199:1;>> x=3*sin(2*pi*20*t)+10*sin(2*pi*200*t+0.25*pi)+10*randn(size(t)); >> y=fft(x);>> m=abs(y);>> f=(0:length(y)-1)'*199/length(y); >> figure(1)>> subplot(2,1,1),plot(t,x),grid on >> title('信号检测')>> ylabel('Input\itx'),xlabel('Time') >> subplot(2,1,2),plot(f,m)>> ylabel('Abs.Magnitude'),grid on >> xlabel('Frequency(Hertz)')00.10.20.30.40.50.60.70.80.91-40-2002040信号检测I n p u t xTime02040608010012014016018020050010001500A b s .M a g n i t u d eFrequency(Hertz)No.16w=1;t=0:pi/50:2*pi;x1=sin(w*t)+randn(size(t)); x2=cos(w*t)+randn(size(t)); x3=sin(w*t)+randn(size(t)); R1=corrcoef(x1,x2) R2=corrcoef(x1,x3) y1=randn(size(t)); y2=randn(size(t)); y3=randn(size(t)); Q1=corrcoef(y1,y2) Q2=corrcoef(y1,y3)R1 =1.0000 0.04200.0420 1.0000R2 =1.0000 0.26410.2641 1.0000Q1 =1.0000 -0.0791-0.0791 1.0000Q2 =1.0000 0.02540.0254 1.0000No.20M函数:function dy=diffequat1(t,y)dy=[0.5-y(1);y(1)-4*y(2)];Matble:>> X0=[1;-0.5];>> tspan=[0,50];>> clear all>> X0=[1;-0.5];>> tspan=[0,25];>> [T,X]=ode45('diffequat1',tspan,X0);>> figure(1)>> subplot(2,1,1),plot(T,X(:,1),'r'),title('x_{1}'),grid on >> subplot(2,1,2),plot(T,X(:,2),'k'),title('x_{2}'),grid on >> figure(2)>> plot(X(:,1),X(:,2)),title('系统轨迹'),grid on>> xlabel('x_{1}'),ylabel('x_{2}')05101520250.40.60.81x 1510152025-0.6-0.4-0.200.2x 20.50.550.60.650.70.750.80.850.90.951-0.5-0.4-0.3-0.2-0.10.10.2系统轨迹x 1x2P313 No.2A=[65 76 78 87 76;64 78 67 87 95;64 65 78 88 76;78 90 81 83 85;67 89 87 78 86;69 74 78 81 82];A(:,:,2)=[67 87 67 78 65;65 76 87 67 59;78 90 67 87 86;74 67 87 67 87;89 67 87 87 86;80 80 81 82 84];A(:,:,3)=[67 80 82 85 87;87 87 87 87 87;85 75 65 75 75;80 89 89 89 89;79 79 79 79 79;90 90 67 78 90];A(:,:,4)=[78 78 78 78 78;67 89 76 87 82;78 56 76 87 67;90 92 89 87 86;78 89 78 67 89;91 90 85 85 86];A(:,:,5)=[68 87 86 86 86;78 90 76 76 78;78 98 78 76 87;78 97 87 67 75;78 90 65 76 89;67 87 78 87 78];A(:,:,6)=[87 87 87 87 78;78 87 90 78 76;75 78 76 75 74;76 87 85 86 88;88 77 90 87 89;85 87 88 90 83];A(:,:,7)=[68 87 85 84 80;88 80 89 85 90;78 79 70 79 88;88 78 91 88 80;69 87 86 85 83;80 88 78 78 87];A(:,:,8)=[67 80 82 85 87;87 87 87 88 87;85 79 65 75 75;80 89 89 89 89;79 79 79 79 79;90 90 67 78 90];A(:,:,9)=[67 87 67 78 65;65 76 88 67 59;78 90 67 87 86;74 67 87 67 87;80 67 87 87 86;80 80 81 82 84];A(:,:,10)=[87 78 78 78 78;67 89 76 87 82;78 56 76 87 67;90 90 89 87 86;78 89 78 67 89;91 90 85 85 86];gra=Afor i=1:length(gra)mean_gra=mean(mean(gra(6,5,i)));a(i,1)=mean_gra;disp([num2str(i) '宿舍平均分是' num2str(mean_gra)]);endsit=sort(a);disp('排名如下')for i=1:10disp(['第' num2str(11-i) '名分数是' num2str(sit(i,1))]);end结果:gra(:,:,1) =65 76 78 87 7664 78 67 87 9564 65 78 88 7678 90 81 83 8567 89 87 78 8669 74 78 81 82gra(:,:,2) =67 87 67 78 6565 76 87 67 59 78 90 67 87 86 74 67 87 67 87 89 67 87 87 86 80 80 81 82 84gra(:,:,3) =67 80 82 85 87 87 87 87 87 87 85 75 65 75 75 80 89 89 89 89 79 79 79 79 79 90 90 67 78 90gra(:,:,4) =78 78 78 78 78 67 89 76 87 82 78 56 76 87 67 90 92 89 87 86 78 89 78 67 89 91 90 85 85 86gra(:,:,5) =68 87 86 86 86 78 90 76 76 78 78 98 78 76 87 78 97 87 67 75 78 90 65 76 89 67 87 78 87 78gra(:,:,6) =87 87 87 87 78 78 87 90 78 7675 78 76 75 7476 87 85 86 88 88 77 90 87 8985 87 88 90 83gra(:,:,7) =68 87 85 84 80 88 80 89 85 90 78 79 70 79 88 88 78 91 88 80 69 87 86 85 83 80 88 78 78 87gra(:,:,8) =67 80 82 85 87 87 87 87 88 87 85 79 65 75 75 80 89 89 89 89 79 79 79 79 79 90 90 67 78 90gra(:,:,9) =67 87 67 78 65 65 76 88 67 59 78 90 67 87 86 74 67 87 67 87 80 67 87 87 86 80 80 81 82 84gra(:,:,10) =87 78 78 78 78 67 89 76 87 82 78 56 76 87 67 90 90 89 87 86 78 89 78 67 89 91 90 85 85 861宿舍平均分是822宿舍平均分是843宿舍平均分是904宿舍平均分是865宿舍平均分是786宿舍平均分是837宿舍平均分是878宿舍平均分是909宿舍平均分是8410宿舍平均分是86排名如下第10名分数是78第9名分数是82第8名分数是83第7名分数是84第6名分数是84第5名分数是86第4名分数是86第3名分数是87第2名分数是90第1名分数是90='jack';infor.bdate='oct 1st';infor.adress='USA';infor.phnum='3888888';infor.emil='**********';='math';course.teacher='wangFei';course.time=20;course.score=6;course(2).name='English';course(2).teacher='Li Fei';course(2).time=20;course(2).score=6;course(3).name='biology';course(3).teacher='wang Lei';course(3).time=20;course(3).score=6; pition='math';other.pro='no';TS1={'math',[1 2 3 4],[76 68 70 71]};TS2={'English',[1 2 3 4],[70 80 85 90]};TS3={'biology',[1 2 3 4],[88 89 90 91]};TS=cat(3,TS1,TS2,TS3);s=0;v=0;for i=1:4for j=1:3s1=course(j).score;v1=TS{1,3,j}(1,i);s=s+s1;v=v+v1*s1;endave=v/s;disp(['第' num2str(i) '学期加权平均分是' num2str(ave)]) end第1学期加权平均分是78第2学期加权平均分是78.5第3学期加权平均分是79.5556第4学期加权平均分是80.6667P344No.3x=-1:.001:1;y1=fun(x);y2=fun1(x);figure(1)plot(x,y1,'r-',x,y2,'b-')grid onxlabel('x'),ylabel('y');[y2_max_val,y2_max_ind] = max(y1);y2_max_t = x(y2_max_ind);text(y2_max_t,y2_max_val,['\rightarrow(',num2str(y2_max_t),',',num2str(y2_max_val),')'])x1=fminbnd('fun1',-0.6,0);a1=fun1(x1);text(x1,a1,['\rightarrow (', num2str(x1),',',num2str(a1),')'])x2=fminbnd('fun1',0.6,1);a2=fun1(x2);text(x2,a2,['\rightarrow (', num2str(x2),',',num2str(a2),')'])x3=fminbnd('fun2',-0.8,-0.4);a3=fun1(x3);text(x3,a3,['\rightarrow (', num2str(x3),',',num2str(a3),')'])x4=fminbnd('fun2',0,0.4);a4=fun1(x4);text(x4,a4,['\rightarrow (', num2str(x4),',',num2str(a4),')'])fun函数function y=fun(x)y = -2*x.^2+4;结果:-1-0.8-0.6-0.4-0.200.20.40.60.811.522.533.544.55x yNo.4clear allclose allsen={'we','will','rock','you'};as=double('Iamastudent');for i=1:4name(1,i)=sen(1,i)no(1,i)=iLength(1,i)=length(cell2mat(sen(1,i)))value(1,i)=sum(as(1,i:i-1+Length(1,i)))ends=struct('name',name,'no',num2cell(no),'length',num2cell(Length),'val ue',num2cell(value))name ='we'no =1Length =2value =170name ='we' 'will'no =1 2Length =2 4value =170 418name ='we' 'will' 'rock' no =1 2 3 Length =2 4 4value =170 418 437name ='we' 'will' 'rock' 'you'no =1 2 3 4Length =2 4 4 3value =170 418 437 328s =1x4 struct array with fields:namenolengthvalueMATLAB综合作业a=input('姓名:','s');b=input('月份:');c=input('日期:');d=input('颜色:(蓝色、红色、黄色、绿色中选取)','s'); switch bcase 1disp('小寒01月06日06:43:54 大寒01月21日00:09:49') case 2disp('立春02月04日18:22:23 雨水02月19日14:17:35 ') case 3disp('惊蛰03月05日12:21:02 春分03月20日13:14:25 ') case 4disp('清明04月04日17:05:36 谷雨04月20日00:12:04 ') case 5disp('立夏05月05日10:19:40 小满05月20日23:15:31') case 6disp('芒种06月05日14:25:53 夏至06月21日07:08:48') case 7disp('小暑07月07日00:40:43 大暑07月22日18:00:51') case 8disp('立秋08月07日10:30:32 处暑08月23日01:06:50') case 9disp('白露09月07日13:29:00 秋分09月22日22:48:59') case 10disp('寒露10月08日05:11:42 霜降10月23日08:13:33') case 11disp('立冬11月07日08:25:56 小雪11月22日05:50:07') case 12disp('大雪12月07日01:18:55 冬至12月21日19:11:35') endswitch bcase 1if c<20 disp('摩羯座')else disp('水瓶座')endcase 2if c<19 disp('水瓶座')else disp('双鱼座')endcase 3if c<21 disp('双鱼座')else disp('白羊座')endcase 4if c<21 disp('白羊座')else disp('金牛座')endcase 5if c<21 disp('金牛座')else disp('双子座')case 6if c<22 disp('双子座')else disp('巨蟹座')endcase 7if c<23 disp('巨蟹座')else disp('狮子座')endcase 8if c<23 disp('狮子座')else disp('处女座')endcase 9if c<23 disp('处女座')else disp('天秤座')endcase 10if c<23 disp('天秤座')else disp('天蝎座')endcase 11if c<22 disp('天蝎座')else disp('射手座')endcase 12if c<20 disp('射手座')else disp('摩羯座')endendswitch bcase 1e=31case 3e=31case 5e=31case 7e=31case 8e=31case 10e=31case 12case 2e=29case 4e=30case 6e=30case 9e=30case 11e=30endx=1:0.01:e;y=normpdf(x,c,b);figure(1)switch dcase '蓝色'plot(x,y,'b-'),grid on case '红色'plot(x,y,'r-'),grid on case '绿色'plot(x,y,'g-'),grid on case '黄色'plot(x,y,'y-'),grid on endxlabel('日期');ylabel('运势');str1='2012年';str2='出生月份运势曲线'; str3=strcat(str1,a,str2)。

MATLAB7.X程序设计语言第二版课程设计

MATLAB7.X程序设计语言第二版课程设计

MATLAB7.X程序设计语言第二版课程设计一、设计目的和要求本次课程设计旨在通过实践提高学生对MATLAB7.X程序设计语言的掌握能力和实际应用能力,增强学生对MATLAB程序设计的兴趣和信心,具体要求如下:1.利用MATLAB7.X程序设计语言完成设计,并能够熟练使用MATLAB软件;2.掌握MATLAB7.X程序设计语言的基本概念、结构体、类、文件操作、异常处理等高级用法;3.熟悉MATLAB7.X程序设计语言应用于各个领域的实际案例,如信号处理、图像处理、控制系统等;4.体验MATLAB7.X程序设计语言的高效性和便捷性。

二、实验环境•操作系统:Windows 7或以上版本•软件:MATLAB 7.X或以上版本三、实验内容3.1 设计要求本课程设计要求实现一个基于MATLAB的数码摄像头视频监控系统,实现以下功能:1.视频流的实时采集和处理;2.进行简单的图像处理,包括图像变换、图像增强、图像分割和形态学处理等;3.实现实时视频流的输出;4.实现物体的目标检测和跟踪。

3.2 实验步骤本课程设计建议分为以下几个步骤:1.MATLAB环境搭建:首先安装好MATLAB7.X及以上版本软件,并安装好所需的相关工具包;2.视频流采集和处理:针对不同的采集设备,选择不同的驱动工具进行采集,在采集视频流之后,进行数据预处理,如二值化、灰度化等;3.图像处理:对预处理之后的图像进行处理,如进行形态学处理、边缘检测、然后再进行轮廓提取等;4.物体目标检测和跟踪:首先对目标物体进行特征提取,如颜色、形状等,再对提取的特征进行匹配,最后实现目标的跟踪;5.实时输出:将跟踪到的目标实时输出到图像显示界面中。

四、实验成果通过以上步骤,应当最终得到一个能够实时采集、处理、输出视频流的数码摄像头监控系统。

需要提交的实验成果包括:1.实验报告:介绍本课程设计,包括任务背景、实验环境、实验内容、实验步骤、实验成果等内容;2.相关源代码:包含程序的主函数文件、图像处理函数文件、图像预处理函数文件、物体目标检测和跟踪函数文件、以及相关配置文件;3.成果展示:展示实时采集、处理、输出视频流的结果,以及物体目标的跟踪效果视频或截图;4.其他说明:如环境配置、使用说明等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章稀疏矩阵单元阵列结构 (3)7.1 稀疏矩阵 (3)7.1.1 sparse数据类型 (4)例7.1 (6)7.2 单元阵列(cell array) (8)7.2.1 创建单元阵列 (9)7.2.2 单元创建者——大括号({})的应用 (10)7.2.3 查看单元阵列的内容 (10)7.2.4 对单元阵列进行扩展 (11)7.2.5 删除阵列中的元素 (12)7.2.6 单元阵列数据的应用 (12)7.2.7 字符串单元阵列 (12)7.2.8 单元阵列的重要性 (13)7.2.9 单元阵列函数总结 (16)7.3 结构数组 (16)7.3.2 增加域到结构 (17)7.3.3 删除结构中的域 (18)7.3.4 结构数组中数组的应用 (18)7.3.5 函数getfield和函数setfield (20)7.3.6 对结构数组应用size函数 (20)7.3.8 struct函数总结 (21)测试7.1 (21)7.4 总结 (22)7.4.1 好的编程习惯总结 (22)7.4.2 MA TLAB函数命令总结 (22)7.5 练习 (23)7.1 (23)7.2 (23)7.3 (23)7.4 (23)7.5 (24)7.6 (24)第七章稀疏矩阵单元阵列结构在本章中我们要学习三种数据类型:稀疏矩阵,单元阵列和结构。

稀疏矩阵是矩阵的一种特殊形式,在这个矩阵中只对非零元素分配内存。

单元阵列也是一种矩阵,它的每一个元素可以是MATLAB任何一种数据类型。

它们广泛应用于MATLAB用户图象界面(GUI)函数。

最后,结构提供了一种在单个变量中存储了不同类型的数据的方法,在这个变量中的每一个数据项目都有一个独立的名字。

7.1 稀疏矩阵我们在第二章中已经学过了普通的MATLAB数组。

当一个普通的数组被声明后,MATLAB将会为每一个数组元素分配内存。

例如函数a = eye(10)要创建了100个元素,按10×10的结构分配,对角线上的元素均为1,其余的元素为0。

注意这些数组其中的90个元素为0。

这个包含有一百个元素的矩阵,只有10个元素包含非零值。

这是稀疏矩阵或稀疏数组的一个例子。

稀疏矩阵是指一个很大的矩阵,且大多数的元素为0。

>> a=2*eye(10)a =2 0 0 0 0 0 0 0 0 00 2 0 0 0 0 0 0 0 00 0 2 0 0 0 0 0 0 00 0 0 2 0 0 0 0 0 00 0 0 0 2 0 0 0 0 00 0 0 0 0 2 0 0 0 00 0 0 0 0 0 2 0 0 00 0 0 0 0 0 0 2 0 00 0 0 0 0 0 0 0 2 00 0 0 0 0 0 0 0 0 2现在假如我们要创建一个10×10的矩阵,定义如下b =1 0 0 0 0 0 0 0 0 00 2 0 0 0 0 0 0 0 00 0 2 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 00 0 0 0 5 0 0 0 0 00 0 0 0 0 1 0 0 0 00 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 1若a,b两矩阵相乘得到的结果为>> c = a * bc =2 0 0 0 0 0 0 0 0 00 4 0 0 0 0 0 0 0 00 0 4 0 0 0 0 0 0 00 0 0 2 0 0 0 0 0 00 0 0 0 10 0 0 0 0 00 0 0 0 0 2 0 0 0 00 0 0 0 0 0 2 0 0 00 0 0 0 0 0 0 2 0 00 0 0 0 0 0 0 0 2 00 0 0 0 0 0 0 0 0 2这两个稀疏矩阵相乘需要1900次相加和相乘,但是在大多数时侯相加和相乘的结果为0,所以我们做了许多的无用功。

这个问题会随着矩阵大小的增大而变得非常的严重。

例如,假设我们要产生两个200×200的稀疏矩阵,如下所示a = 5 * eye(200);b = 3 * eye(200);每一个矩阵有20000个元素,其中19800个元素是0。

进一步说,对这两个矩阵相乘需要7980000次加法和乘法。

我们可以看出对大规模稀疏矩阵进行存储和运算(其中大部分为0)是对内存空间和cpu 资源的极大浪费。

不巧的是,在现实中的许多问题都需要稀疏矩阵,我们需要一些有效的方示来解决这个问题。

大规模供电系统是现实世界中涉及到稀疏矩阵一个极好的例子。

大规模供电系统可以包括上千条或更多的母线,用来产生,传输,分配电能到子电站。

如果我们想知道这个系统的电压,电流和功率,我们必须首先知道每一条母线的电压。

如果这个系统含有一千个母线,这就要用到含有1000个未知数的联立方程组,包括一个方程,也就是说我们要创建含有1000000个元素的矩阵。

解出这个矩阵,需要上百万次的浮点运算。

但是,在这个系统中,一条母线平均只它的三条母线相连,而在这个矩阵中每一行其他的996个元素将为0,所以在这个矩阵的加法和乘法运算中将会产生0。

如果在求解的过程中这些0可以忽略,那么这个电力系统的电压和电流计算将变得简单而高效。

7.1.1 sparse数据类型在MATLAB中有一个专门的数据类型,用来对稀疏进行运算。

sparse数据类型不同于doulbe数据,它在内存中只存储非零元素。

实际上,sparse数据类型只存储每一个非零元素的三个值:元素值,元素的行号和列号。

尽管非零元素这三个值必须存储在这内存,但相对于存储稀疏矩阵的所有元素来说要简单高效得多。

我们用10×10的方阵来说明稀疏矩阵的应用。

>> a = eye(10)a =1 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 00 0 0 0 1 0 0 0 0 00 0 0 0 0 1 0 0 0 00 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 1 0 00 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 1如果这个矩阵被转化为稀疏矩阵,它的结果是>> as = sparse(a)as =(1,1) 1(2,2) 1(3,3) 1(4,4) 1(5,5) 1(6,6) 1(7,7) 1(8,8) 1(9,9) 1(10,10) 1注意在稀疏矩阵存储的是行列地址和这一点所对应的非零数据值。

只要一个矩阵的大部分数都是0,这种方法用来存储数据就是高效的,但是如果非零元素很多的话,那么用占用更多的空间,因为稀疏矩阵需要存储蓄地址。

函数issparse通常用作检测一个矩阵是否为稀疏矩阵。

如果这个矩阵是稀疏的,那么这个函数将会返回1。

稀疏矩阵的优点可以通过下面的描述体现出来,考虑一个1000×1000的矩阵平均每一行只有4个非零元素。

如果这个矩阵以全矩阵的形式储存,那么它要战胜8000000个字节。

从另一方面说,如果它转化为一个稀疏矩阵,那么内存的使用将会迅速下降。

7.1.1.1 产生稀疏矩阵MATLAB可以通过sparse函数把一个全矩阵转化为一个稀疏矩阵,也可以用MATLAB 函数speye,sprand和sprandn直接产生稀疏矩阵,它们对应的全矩阵为eye,rand,和randn。

例如,表达式a = speye(4)将产生一个4×4的稀疏矩阵。

>> a = speye(4)a =(1,1) 1(2,2) 1(3,3) 1(4,4) 1表达式b = full(a)把稀疏矩阵转化相应的全矩阵。

>> b = full(a)b =1 0 0 00 1 0 00 0 1 00 0 0 17.1.1.2 稀疏矩阵的运算如果一个矩阵是稀疏的,那么单个元素可以通过简单的赋值语句添加或删除,例如下面的语句产生一个4×4的稀疏矩阵,然后把其他的非零元素加入其中。

>> a = speye(4)a =(1,1) 1(2,2) 1(3,3) 1(4,4) 1>> a(2,1) = -2a =(1,1) 1(2,1) -2(2,2) 1(3,3) 1(4,4) 1MATLAB允许全矩阵与稀疏的混合运算。

它们产生的结果可以是全矩阵也可以是稀疏矩阵,这取决于那种结果更高效。

更重要的是,任何的适用全矩阵算法同样地也适合稀疏矩阵。

表7.1 列出的是一些普通的稀疏矩阵。

创建一个稀疏矩阵创建一个单位稀疏矩阵sprand 创建一个稀疏矩阵,元素是符合平均分布的随机数sprandn 创建一个稀疏矩阵,元素是普通的随机数全矩阵和稀疏矩阵的转换函数sparse 把一个全矩阵转化为一个稀疏矩阵full 把一个稀疏矩阵转化为全矩阵find 找出矩阵中非零元素和它对应的上下标对稀疏矩阵进行操作的函数nnz 非零元素的个数nonzeros 返回一个向量,其中的元素为矩阵中非零元素spones 用1代替矩阵中的非零元素spalloc一个稀疏矩阵所占的内存空间issparse 如果是稀疏矩阵就返回1spfun 给矩阵中的非零元素提供函数例7.1用稀疏矩阵解决联立方程组为了解说明稀疏矩阵在MATLAB中应用,我们将用全矩阵和稀疏矩阵来解决下面的联立方程组。

1.0x1 + 0.0x2 + 1.0x3 + 0.0x4 + 0.0x5 +2.0x6 + 0.0x7 - 1.0x8 =3.00.0x1 + 1.0x2 + 0.0x3 + 0.4x4 + 0.0x5 + 0.0x6 + 0.0x7 + 0.0x8 = 2.00.5x1 + 0.0x2 + 2.0x3 + 0.0x4 + 0.0x5 + 0.0x6 - 1.0x7 + 0.0x8 = -1.50.0x1 + 0.0x2 + 0.0x3 + 2.0x4 + 0.0x5 + 1.0x6 + 0.0x7 + 0.0x8 = 1.00.0x1 + 0.0x2 + 1.0x3 + 1.0x4 + 1.0x5 + 0.0x6 + 0.0x7 + 0.0x8 = -2.00.0x1 + 0.0x2 + 0.0x3 + 1.0x4 + 0.0x5 + 1.0x6 + 0.0x7 + 0.0x8 = 1.00.5x1 + 0.0x2 + 0.0x3 + 0.0x4 + 0.0x5 + 0.0x6 + 1.0x7 + 0.0x8 = 1.00.0x1 + 1.0x2 + 0.0x3 + 0.0x4 + 0.0x5 + 0.0x6 + 0.0x7 + 1.0x8 = 1.0答案为了解决这一问题,我们将创建一个方程系数的全矩阵,并用sparse函数把他转化为稀疏矩阵。

相关文档
最新文档