第一章 MATLAB入门
4、求近似解
解:>> x=-2:0.05:2;y=x.^4-2.^x
两个近似解:y1=f(-0.85)= -0.0328; y2=f(1.250)= 0.0630
第二章 MATLAB编程与作图
1、 设x是数组,求均值和方差 解:函数文件如下:
function [xx,s]=func1(x) n=length(x); xx=sum(x)/n;
s=sqrt((sum(x.^2)-n*xx^2)/(n-1)); 命令窗口:
>> x=[1 2 3 4 5];[xx,s]=func1(x) 2、求满足
s=0; n=0;
while(s<=100) s=s+log(1+n); n=n+1; end n,s
3、用循环语句形成Fibonacci数列F1=F2=1,Fk=Fk?1+Fk?2,k=3,4,....。并验证极限
∑ln(1+n)>100的最小m值
n=0
m
Fk1+5
(提示:计算至两边误差小于精度1e-8为止) →
Fk?12
解: 求Fibonacci数列的函数文件: function f=fun(n)
if n<=2 f=1; else
f=fun(n-1)+fun(n-2);
end
验证极限的函数文件:
function [k,a]=funTest(e) a=abs(1-(1+sqrt(5))/2); k=2;
while(a>e) k=k+1;
a=abs(fun(k)/fun(k-1)-(1+sqrt(5))/2); end
命令行:
>> [k,a]=funTest(10^-8) k = 21 a =
9.7719e-009
或者M文件如下:
clear; F(1)=1;F(2)=1;k=2;x=0; e=1e-8; a=(1+sqrt(5))/2; while abs(x-a)>e
k=k+1; F(k)=F(k-1)+F(k-2); x=F(k)/F(k-1); end a,x,k
4、分别用for和while循环结构编写程序,求出K=计,比较各种算法的运行时间。 解:循环结构:M文件loop.m
k=0; for i=1:10^6 k=k+sqrt(3)*2^-i; end k
非循环结构:M文件nonLoop.m
i=1:10^6; x=sqrt(3)*(2.^-i); k=sum(x)
速度比较:>>tic;loop;toc %循环结构的执行时间
k = 1.7321
Elapsed time is 1.813000 seconds.
>> tic;nonLoop;toc %非循环结构的执行时间 k = 1.7321
Elapsed time is 1.094000 seconds.
5、作图描述气温变化 >> x=0:24;
>> y=[15,14,14,14,14,15,16,18,20,22,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16]; >> plot(x,y) 6、作出下列函数图形
(1)y=xsin(x?x?2) ?2≤x≤2 (分别使用plot和fplot完成) 解:>> fplot('x^2*sin(x^2-x-2)',[-2 2]) %fplot方法
2
2
106
∑
i=1
3
,并考虑一种避免循环语句的程序设i2
>> x=-2:0.1:2;y=x.^2.*sin(x.^2-x-2);plot(x,y) %plot方法 如图(4.1)
x2y2
+=1 (椭圆 提示:用参数方程) (2)49
解:>> r=-pi:0.1:pi;x=2*cos(r);y=3*sin(r);plot(x,y) % 如图(4.2) 解法二 x=-2:1/100:2;
y1=3*sqrt(1-x.^2/4); y2=-3*sqrt(1-x.^2/4); plot(x,y1,'r-',x,y2,'r-'); axis equal tight;
图(4.1) 图(4.2)
(3)z=x+y (抛物面) x<3,y<3
解:(错误)>> x=[-3:0.1:3];y=[-3:0.1:3];z=x.^2+y.^2; plot3(x,y,z) % 如图(4.31)
(正确)>> xa=-3:0.1:3;ya=-3:0.1:3;[x,y]=meshgrid(xa,ya); % 如图(4.32)
>> z=x.^2+y.^2;mesh(x,y,z); >> surf(x,y,z)
22
图(4.31)error 图(4.32)
(4)曲面z=x+3x+y?2x?2y?2xy+6,x<3,?3
>> [x,y]=meshgrid(xa,ya);
>> z=x.^4+3*x.^2+y.^2-2*x-2*y-2*x.^2.*y+6; >> mesh(x,y,z) >> surf(x,y,z)
(5)空间曲线x=sint,y=cost,z=cos(2t),0 4222 解:>> t=linspace(0,2,50);x=sin(t);y=cos(t);z=cos(2*t); >> plot3(x,y,z) (6)半球面x=2sinφcosθ,y=2sinφsinθ,z=2cosφ,0≤φ≤360o ,0≤θ≤90o 解: >>a=linspace(0,2*pi,50);b=linspace(0,pi/2,50); >> [a,b]=meshgrid(a,b); >> x=2*sin(a).*cos(b);y=2*sin(a).*sin(b);z=2*cos(a); >> surf(x,y,z) (7)三条曲线合成图y1=sinx,y2=sintsin( 10x),y3=?sinx,0 >> plot(x,y1);hold on; >> y2=sin(x).*sin(10*x); >> plot(x,y2); >> y3=-sin(x); >> plot(x,y3); >> hold off; ?1.1x>1.1 7、作下列分段函数图y=? ?xx≤1.1 ?? ?1.1x1.1x=-5:0.1:5; for i=1:length(x) if x(i)>1.1 y(i)=1.1; elseif x(i)<-1.1 y(i)=-1.1; else y(i)=x(i); end end plot(x,y); grid on; 9、用MATLAB函数表示下列函数,并作图。 ?p(x,y)=? 0.5457exp(?0.75y2?3.75x2?1.5x),x+y>1?0.7575exp(?y2?6x2),?1 ?? 0.5457exp(?0.75y2?3.75x2+1.5x),x+y≤?1解:建立M文件pxy如下: xa=-2:0.05:2;ya=xa; nx=length(xa);ny=length(ya); [x,y]=meshgrid(xa,ya); z=zeros(nx,ny); [a1,b1]=find(x+y>1); %第a1列b1行对应的x+y>1 (x对应列;y对应行) %第a1列对应的x值是xa(a1);第b1行对应的y值是ya(b1) z((a1-1)*ny+b1)=0.5457*exp(-0.75*ya(b1).^2-3.75*xa(a1).^2-1.5*xa(a1)); [a2,b2]=find(x+y<=1&x+y>-1); z((a2-1)*ny+b2)=0.7575*exp(-ya(b2).^2-6*xa(a2).^2); [a3,b3]=find(x+y<=-1); z((a3-1)*ny+b3)=0.5457*exp(-0.75*ya(b3).^2-3.75*xa(a3).^2+1.5*xa(a3)); surf(x,y,z); 命令窗口: >> pxy 运行结果如右图: 或者M文件如下: clear;close; xa=-2:0.1:2;ya=-2:0.1:2;[x,y]=meshgrid(xa,ya); z=zeros(size(x)); k1=find(x+y>1); z(k1)=0.5457*exp(-0.75*y(k1).^2-3.75*x(k1).^2-1.5*x(k1)); k2=find(x+y<=1&x+y>-1); z(k2)=0.7575*exp(-y(k2).^2-6*x(k2).^2); k3=find(x+y<-1); z(k3)=0.5457*exp(-0.75*y(k3).^2-3.75*x(k3).^2+1.5*x(k3)); mesh(x,y,z); 6、运行demo 解:>>demo 7、查询trapz的功能、用法、目录、程序结构、相同目录下其它文件 解: >> help trapz ――功能用法 >> type trapz――程序结构,源码 >> which trapz――所在目录 >> help C:\\MATLAB6p5\\toolbox\\matlab\\datafun――该目录下其它文件 第三章 矩阵代数 2、求下列线性方程组的解