Matlab秘笈.docx
- 文档编号:17666317
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:28
- 大小:340.28KB
Matlab秘笈.docx
《Matlab秘笈.docx》由会员分享,可在线阅读,更多相关《Matlab秘笈.docx(28页珍藏版)》请在冰点文库上搜索。
Matlab秘笈
Matlab秘笈
欲练此功,必先自宫
1.Matlab概述与数值计算
2.Matlab绘图
3.Matlab符号运算
4.Matlab程序设计
第一、二次作业(Matlab概述与数值计算)
3.求下列联立方程的解
解:
在MATLAB命令窗中输入:
>>A=[34-7-12;5-742;108-5;-65-210];
>>B=[4494]';
>>x=A\B
x=
5.2226
4.4570
1.4718
1.5994
4.设
,
,
求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。
解:
>>A=[14813
-36-5-9
2-7-12-8];
>>B=[543-2
6-23-8
-13-97];
>>C1=A*B'
C1=
19-8230
12273
-385429
>>C2=A'*B
C2=
-1516-2436
63-1793-105
226117-60
194684-10
>>C3=A.*B
C3=
51624-26
-18-12-1572
-2-21108-56
求方阵:
>>inv(C1)
ans=
0.00620.0400-0.0106
-0.00460.01690.0030
0.01680.02090.0150
>>inv(C2)
Warning:
Matrixisclosetosingularorbadlyscaled.
Resultsmaybeinaccurate.RCOND=8.997019e-019.
ans=
1.0e+015*
-0.9553-0.2391-0.19970.2700
0.96670.24200.2021-0.2732
-0.4473-0.1120-0.09350.1264
-1.1259-0.2818-0.23530.3182
5.设
,把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的曲线。
解:
在MATLAB命令窗中输入:
>>x=linspace(0,2*pi,101);
>>y=cos(x).*(0.5+3*sin(x)/(1+x.^2));
>>plot(x,y)
6.产生8×6阶的正态分布随机数矩阵R1,求其各列的平均值和均方差。
并求该矩阵全体数的平均值和均方差。
(randnmeanvar)
解:
在MATLAB命令窗中输入:
>>R1=randn(8,6)
R1=
-0.43260.32731.0668-0.69180.8156-1.6041
-1.66560.17460.05930.85800.71190.2573
0.1253-0.1867-0.09561.25401.2902-1.0565
0.28770.7258-0.8323-1.59370.66861.4151
-1.1465-0.58830.2944-1.44101.1908-0.8051
1.19092.1832-1.33620.5711-1.20250.5287
1.1892-0.13640.7143-0.3999-0.01980.2193
-0.03760.11391.62360.6900-0.1567-0.9219
求各列的平均值和均方差:
>>mean(R1)
ans=
-0.06110.32670.1868-0.09420.4123-0.2459
>>var(R1)
ans=
1.02540.71280.94041.18500.68761.0143
该矩阵全体数的平均值和均方差:
>>R1=R1(:
);
>>mean(R1)
ans=
0.0874
>>var(R1)
ans=
0.8866
7.设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y曲线。
解:
在MATLAB命令窗中输入:
>>t=0:
0.01:
10;
>>r1=2;x1=r1*cos(t)+3*t;y1=r1*sin(t)+3;
>>r2=3;x2=r2*cos(t)+3*t;y2=r1*sin(t)+3;
>>r3=4;x3=r3*cos(t)+3*t;y3=r1*sin(t)+3;
>>plot(x1,y1,x2,y2,x3,y3)
8.设f(x)=x5-4x4+3x2-2x+6
(1)在x=[-2,8]之间取100个点,画出曲线,看它有几个过零点。
(提示:
用polyval函数)
(2)用roots函数求此多项式的根。
解:
(1)在MATLAB命令窗中输入:
>>p=[1-403-26];
>>x=linspace(-2,8,100);
>>f=polyval(p,x);
>>plot(x,f)
>>grid
(2)在MATLAB命令窗中输入:
>>roots(p)
ans=
3.7999
-1.2607
1.3479
0.0564+0.9623i
0.0564-0.9623i
9.建立一个字符串向量,然后对该向量做如下处理:
>>s='1sa35c1a5GFHs4s'
s=
1sa35c1a5GFHs4s
(1)取第1~5个字符组成的子字符串。
>>s(1:
5)
ans=
1sa35
(2)将字符串倒过来重新排列。
>>s(end:
-1:
1)
ans=
s4sHFG5a1c53as1
(3)统计字符串中小写字母的个数。
>>k=find(s>='a'&s<='z');
>>length(k)
ans=
6
10.利用帮助查找limit函数的用法,并自己编写,验证几个函数极限的例子。
解:
在MATLAB命令窗中输入:
>>helplimit
---helpforsym/limit.m---
LIMITLimitofanexpression.
LIMIT(F,x,a)takesthelimitofthesymbolicexpressionFasx->a.
LIMIT(F,a)usesfindsym(F)astheindependentvariable.
LIMIT(F)usesa=0asthelimitpoint.
LIMIT(F,x,a,'right')orLIMIT(F,x,a,'left')specifythedirection
ofaone-sidedlimit.
例子:
:
>>symsx;
>>limit(sin(x)/x)
ans=
1
>>limit((x-2)/(x^2-4),2)
ans=
1/4
>>limit((1+2*t/x)^(3*x),x,inf)
ans=
exp(6*t)
第三次作业(Matlab绘图)
2.设x=sint,y=sin(nt+a),
若a=1,令n=1,2,3,4,在四个子图中分别画出其曲线。
解:
命令如下:
>>t=0:
pi/100:
2*pi;
>>x=sin(t);
>>a=1;
>>y1=sin(t+a);
>>y2=sin(2*t+a);
>>y3=sin(3*t+a);
>>y4=sin(4*t+a);
>>subplot(2,2,1);plot(x,y1);
>>title('a=1,n=1');xlabel('x=sint');ylabel('y=sin(nt+a)');
>>subplot(2,2,2);plot(x,y2);
>>title('a=1,n=2');xlabel('x=sint');ylabel('y=sin(nt+a)');
>>subplot(2,2,3);plot(x,y3);
>>title('a=1,n=3');xlabel('x=sint');ylabel('y=sin(nt+a)');
>>subplot(2,2,4);plot(x,y4);
>>title('a=1,n=4');xlabel('x=sint');ylabel('y=sin(nt+a)');
得图如下:
(2)若n=2,取a=0,π/3,π/2,及π,在四个子图中分别画出其曲线。
解:
命令如下:
>>t=0:
pi/100:
2*pi;
>>x=sin(t);
>>n=2;
>>y1=sin(n*t+0);
>>y2=sin(n*t+pi/3);
>>y3=sin(n*t+pi/2);
>>y4=sin(n*t+pi);
>>subplot(2,2,1);plot(x,y1);
>>title('n=2,a=0');xlabel('x=sint');ylabel('y=sin(nt+a)');
>>subplot(2,2,2);plot(x,y2);
>>title('n=2,a={\pi}/3');xlabel('x=sint');ylabel('y=sin(nt+a)');
>>subplot(2,2,3);plot(x,y3);
>>title('n=2,a={\pi}/2');xlabel('x=sint');ylabel('y=sin(nt+a)');
>>subplot(2,2,4);plot(x,y4);
>>title('n=2,a={\pi}');xlabel('x=sint');ylabel('y=sin(nt+a)');
得图如下:
3.绘制
在定义域x=[-2,2],y=[-2,2]内的曲面。
(利用meshgrid)
解:
命令如下:
>>[x,y]=meshgrid(-2:
0.1:
2,-2:
0.1:
2);
>>z=x.^2.*exp(-(x.^2+y.^2));
>>mesh(x,y,z)
得图如下:
4.求代数方程3x5+4x4+7x3+2x2+9x+12=0的所有根。
(利用roots函数)
解:
命令如下:
>>p=[3,4,7,2,9,12];
>>roots(p)
得:
ans=
-0.86122033780577+1.43773389548857i
-0.86122033780577-1.43773389548857i
0.67371491288901+1.01594730941012i
0.67371491288901-1.01594730941012i
-0.95832248349982
5.把1开五次方,并求其全部五个根。
(提示:
解x5-1=0)
解:
命令如下:
>>p=[10000-1];
>>roots(p)
得:
ans=
-0.80901699437495+0.58778525229247i
-0.80901699437495-0.58778525229247i
0.30901699437495+0.95105651629515i
0.30901699437495-0.95105651629515i
1.00000000000000
6,
,画出在
上的曲线。
解:
命令如下:
>>x=linspace(-3,3,300);
>>y1=(-x.^2-4*x-3)/2;
>>y2=-x.^2+1;
>>y3=(-x.^2+4*x-3)/2;
>>y=(x>=-3&x<-1).*y1+(x>=-1&x<1).*y2+(x>=1&x<=3).*y3;
>>plot(x,y)
得图如下:
第四、五次作业(Matlab符号运算)
1.设
求
命令如下:
>>symsxy;
>>y=x*exp(2*x);
>>diff(y,20)
ans=
10485760*exp(2*x)+1048576*x*exp(2*x)
即
2.设
求
命令如下:
>>symsxy;
>>y=(sin(x))^4+(cos(x))^4;
>>diff(y,10)
ans=
1572864*sin(x)^2*cos(x)^2-262144*cos(x)^4-262144*sin(x)^4
即
3.设
求
命令如下:
>>symsxyz;
>>z=y^4*sin(x)^4+x^4*cos(y)^4;
>>zx=diff(z,x)
zx=
4*y^4*sin(x)^3*cos(x)+4*x^3*cos(y)^4
即
4.
命令如下:
>>sym('x');
>>f=1/((x^2+1)*(x^2+x));
>>int(f)
ans=
-1/4*log(x^2+1)-1/2*atan(x)+log(x)-1/2*log(x+1)
5.
命令如下:
>>sym('x');
>>f=sqrt((9-x^2)^3)/x^6;
>>int(f)
ans=
1/45*(-9+x^2)*(-(-9+x^2)^3)^(1/2)/x^5
即
6.
命令如下:
>>x=sym('x');
>>f=1/(x+x^3);
>>int(f,1,2)
ans=
-1/2*log(5)+3/2*log
(2)
即
7.求级数的和:
(利用帮助,查找symsum)
命令如下:
n=sym('n');
>>symsum((n+2)/2^n,1,inf)
ans=
4
即
8.利用函数int计算二重不定积分
命令如下:
>>symsxy;
>>f=(x+y)*exp(-x*y);
>>int(int(f,x),y)
ans=
x*Ei(1,x*y)+x*(1/x/y*exp(-x*y)-Ei(1,x*y))+1/x*exp(-x*y)
即
9.设方程
(1)
,
(2)
及(3)
,用符号运算工具箱函数solve分别求x的解。
用a=0.5代入,求x的数值解,并与用roots函数所求的结果进行比较。
命令如下:
x=solve('x^3+cos(a)','x')%解方程
(1)
x=
[(-cos(a))^(1/3)]
[-1/2*(-cos(a))^(1/3)-1/2*i*3^(1/2)*(-cos(a))^(1/3)]
[-1/2*(-cos(a))^(1/3)+1/2*i*3^(1/2)*(-cos(a))^(1/3)]
x=solve('x^3+cos(0.5)','x')%解方程
(1)的数值解
x=
[-.95740566962069823714436278824403]
[.47870283481034911857218139412201-.82913763161877605584551310528691*i]
[.47870283481034911857218139412201+.82913763161877605584551310528691*i]
P=[100cos(0.5)];%用roots函数解方程
(1)的数值解
roots(P)
ans=
-0.9574
0.4787+0.8291i
0.4787-0.8291i
x=solve('x^3+cos(x)','x')%解方程
(2)
x=
-.86547403310161444662068590118623
x=solve('x^3+cos(a*x)','x')%解方程(3)
Warning:
Explicitsolutioncouldnotbefound.
>InC:
\MATLAB6p5\toolbox\symbolic\solve.matline136
x=
[emptysym]
10.求微分方程的解:
y'''-y''=x,y''
(2)=4,y'
(1)=7,y
(1)=8
命令如下:
>>y=dsolve('D3y-D2y-x','D2y
(2)=4','Dy
(1)=7','y
(1)=8','x')
y=
-1/6*x^3+7*exp(x)/exp
(2)-1/2*x^2+1/2*(17*exp
(2)-14*exp
(1))/exp
(2)*x+1/6
即
11.设
要求在z=0~10区间内画出x,y,z三维曲线。
命令如下:
>>z=0:
0.01:
10;
>>x=z.*sin(3*z);y=z.*cos(3*z);
>>plot3(x,y,z)
得图:
12.设
,画出定义域x=[-2,2],y=[-2,2]内的曲面图。
命令如下:
x=-2:
0.01:
2;
>>[x,y]=meshgrid(x);
>>z=x.^2.*exp(-(x.^2+y.^2));
>>mesh(x,y,z)
得图:
13.设z=0.05x-0.05y+0.1;画出z的曲面(平面)图。
命令如下:
x=-10:
0.1:
10;
>>[x,y]=meshgrid(x);
>>z=0.05*x-0.05*y+0.1;
>>mesh(x,y,z)
得图:
第六、七、八次作业(Matlab程序设计)
1.编写程序计算:
(1)使用一个for/end循环,但不能使用数组运算符sum。
程序如下:
y=0;n=100;
fori=1:
n
y=y+1/i/i;
end
y
输出结果为:
y=
1.6350
(2)使用数组运算符和sum,但不能使用任何for/end循环。
程序如下:
n=100;
i=1:
n;
f=1./i.^2;
y=sum(f)
输出结果为:
y=
1.6350
2.编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示,重新输入,直到正确为止。
程序如下:
x=input('请输入密码:
');
whilex~=123
x=input('密码错误,请重新输入:
');
end
disp('输入密码正确')
3.编制m文件,输入n(正整数),显示所有小于n的质数。
程序如下:
n=input('n=');
p=2:
n;
fori=2:
sqrt(n)
m=find(rem(p,i)==0&p~=i);
p(m)=[];
end
p
4.编写一个M函数文件fun_es(x),计算如下函数:
,其中参数可以为标量,也可以为向量。
在Matlab指令窗口键入如下命令检验该函数:
fun_es(3)
程序如下:
functiony=fun_es(x)
y=0.5*exp(x/3)-x^2*sin(x);
编写完毕后,以“fun_es.m”命名并存盘。
然后在在Matlab指令窗口键入如下命令检验该函数:
fun_es(3)
得结果:
ans=
0.0891
5.利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。
程序如下:
c=rand(1,10);
a=c;
fori=1:
10
[m,j]=max(c);
b(i)=m;
c(j)=[];
end
a
b
运行程序,得:
a=
0.13700.81880.43020.89030.73490.68730.34610.16600.15560.1911
b=
0.89030.81880.73490.68730.43020.34610.19110.16600.15560.1370
6.编写m函数文件求半径为r的圆的面积和周长。
程序如下:
function[s,p]=fcircle(r)
s=pi*r*r;
p=2*pi*r;
将以上函数文件以文件名fcircle.m保存,然后在Matlab命令窗口调用该函数:
[s,p]=fcircle(r)
7.数组[1:
99]中非素数(即质数)元素的和
程序如下:
n=99;
p=2:
n;
fori=2:
sqrt(n)
m=find(rem(p,i)==0&p~=i);
p(m)=[];
end
p;
sum(1:
99)-sum(p)
8.从键盘输入若干个数(每个数用回车结束),当输入0时结束输入,求这些数的平均值以及平方和。
(结束标志0不计算在内)
程序如下:
sum=0;
sqsm=0
n=0;
x=input('Enteranumber(endin0):
');
whilex~=0
sum=sum+x;
sqsm=sqsm+x^2;
n=n+1;
x=input('Enteranumber(endin0):
');
end
if(n>0)
sum;
mean=sum/n;
sqsm;
disp(['平均值等于',num2str(mean),'平方和等于',num2str(sqsm)]);
end
9.输入x,y的值,并将它们的值互换后输出。
程序如下:
x=input('请输入x的值:
');
y=input('请输入y的值:
');
z=x;x=y;y=z;
x
y
10.下面程序实现什么功能?
forn=100:
200
ifrem(n,77)~=0
continue
end
break
end
n
由程序可知,其功能为:
求[100,200]之间第一个能被77整除的整数
程序输出结果为:
n=
154
11.编写一个M函数文件计算下列级数的和:
x和n的值由input指令给出。
程序如下:
functionf=f(x,n)
x=input('请输入x的值:
');
n=input('请输入n的值:
');
ifn<0
error('n必须为自然数');
end
s=0;
fori=0:
n
t=x^i/factorial(i);
s=s+t;
end
f=s;
以“jsh.m”文件名命之;则在命令窗口输入jsh既可调用函数。
12.编写函数文件,参数为整数n,返回值为:
n!
尾部0的个数。
程序如下:
functions=noz(n)
s=0;
fori=1:
n
whilerem(i,5)==0
s=s+1;
i=i/5;
end
end
以“noz.m”命名该函数文件。
例如,当n=9时,在命令窗口输入
noz(9)
得到:
ans=1
其实,练成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 秘笈