Matlab上机实验答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab上机实验答案
实验一MATLAB运算基础
1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
>> z1=2*sin(85*pi/180)/(1+exp(2))
z1 =
0.2375
>> x=[2 1+2i;-0.45 5];
>> z2=1/2*log(x+sqrt(1+x^2))
z2 =
0.7114 - 0.0253i 0.8968 + 0.3658i
0.2139 + 0.9343i 1.1541 - 0.0044i
2.9,,2.9,
3.0
>> a=-3.0:0.1:3.0;
>> z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) (>> z33=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)可以验证z3==z33,是否都为1)
z3 =
Columns 1 through 5
0.7388 + 3.1416i 0.7696 + 3.1416i 0.7871 + 3.1416i 0.7913 + 3.1416i 0.7822 + 3.1416i
Columns 6 through 10
0.7602 + 3.1416i 0.7254 + 3.1416i 0.6784 + 3.1416i 0.6196 + 3.1416i 0.5496 + 3.1416i
Columns 11 through 15
0.4688 + 3.1416i 0.3780 + 3.1416i 0.2775 + 3.1416i 0.1680 + 3.1416i 0.0497 + 3.1416i
Columns 16 through 20
-0.0771 + 3.1416i -0.2124 + 3.1416i -0.3566 + 3.1416i -0.5104 + 3.1416i -0.6752 + 3.1416i
Columns 21 through 25
-0.8536 + 3.1416i -1.0497 + 3.1416i -1.2701 + 3.1416i -1.5271 + 3.1416i -1.8436 + 3.1416i
Columns 26 through 30
-2.2727 + 3.1416i -2.9837 + 3.1416i -37.0245 + 0.0000i -3.0017 + 0.0000i -2.3085 + 0.0000i
Columns 31 through 35
-1.8971 + 0.0000i -1.5978 + 0.0000i -1.3575 + 0.0000i -1.1531 + 0.0000i -0.9723 + 0.0000i
Columns 36 through 40
-0.8083 + 0.0000i -0.6567 + 0.0000i -0.5151 + 0.0000i -0.3819 + 0.0000i -0.2561 + 0.0000i
Columns 41 through 45
-0.1374 + 0.0000i -0.0255 + 0.0000i 0.0792 + 0.0000i 0.1766 + 0.0000i 0.2663 + 0.0000i
Columns 46 through 50
0.3478 + 0.0000i 0.4206 + 0.0000i 0.4841 + 0.0000i 0.5379 + 0.0000i 0.5815 + 0.0000i
Columns 51 through 55
0.6145 + 0.0000i 0.6366 + 0.0000i 0.6474 + 0.0000i 0.6470 + 0.0000i 0.6351 + 0.0000i
Columns 56 through 60
0.6119 + 0.0000i 0.5777 + 0.0000i 0.5327 + 0.0000i 0.4774 + 0.0000i 0.4126 + 0.0000i
Column 61
0.3388 + 0.0000i
(4) 22
42011
122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩
,其中t =0:0.5:2.5 >> 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)
z4 =
0 0.2500 0 1.2500 1.0000 2.2500 2. 已知:
1234413134787,2033657327A B --⎡⎤⎡⎤
⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦
求下列表达式的值:
(1) A+6*B 和A-B+I (其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A
(5) [A,B]和[A([1,3],:);B^2]
>> A=[12 34 -4;34 7 87;3 65 7];
>> B=[1 3 -1; 2 0 3;3 -2 7];
>> A+6*B
ans =
18 52 -10
46 7 105
21 53 49
>> I=eye(3);
>> A-B+I
ans =
12 31 -3
32 8 84
0 67 1
(2)
>> A*B
ans =
68 44 62
309 -72 596
154 -5 241
>> A.*B
ans =
12 102 4
68 0 261
9 -130 49
(3)
>> A^3
ans =
37226 233824 48604
247370 149188 600766
78688 454142 118820 >> A.^3
ans =
1728 39304 -64
39304 343 658503
27 274625 343 (4)
>> A/B
ans =
16.4000 -13.6000 7.6000
35.8000 -76.2000 50.2000
67.0000 -134.0000 68.0000
>> B\A
ans =
109.4000 -131.2000 322.8000
-53.0000 85.0000 -171.0000
-61.6000 89.8000 -186.2000
(5)
>> [A,B]
ans =
12 34 -4 1 3 -1
34 7 87 2 0 3
3 65 7 3 -2 7 >> [A([1,3],:);B^2]
ans =
12 34 -4
3 65 7
4 5 1
11 0 19
20 -5 40
3. 设有矩阵A和B
1234
53
166789101769,11
121314150
23416171819209
7021222324254
1311A B ⎡⎤⎡⎤
⎢⎥⎢⎥-⎢⎥⎢
⎥⎢⎥⎢⎥==-⎢⎥⎢
⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D 。
(3) 查看MATLAB 工作空间的使用情况。
>> A=(reshape(1:25,5,5))';
>> B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]; >> C=A*B C =
93 150 77 258 335 237 423 520 397 588 705 557 753 890 717 >> D=C(3:5,2:3) D =
520 397
705 557
890 717
>> whos
Name Size Bytes Class Attributes
A 5x5 200 double
B 5x3 120 double
C 5x3 120 double
D 3x2 48 double
4. 完成下列操作:
(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
>> n=100:999;
>> l=find(rem(n,21)==0);
>> length(l)
ans =
43
>> ch='aegbBOIEG0je23RGnc';
>> wz=find(ch>='A'&ch<='Z');
>> ch(wz)=[] ch =
aegb0je23nc
实验二 MATLAB 矩阵分析与处理
1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤
=⎢
⎥⎣⎦
,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22
E R RS A O S +⎡⎤
=⎢⎥⎣⎦。
>> E=eye(3); >> R=rand(3,2); >> O=zeros(2,3); >> S=diag(1:2); >> A=[E,R;O,S] A =
1.0000 0 0 0.8147 0.9134 0 1.0000 0 0.9058 0.6324 0 0 1.0000 0.1270 0.0975 0 0 0 1.0000 0 0 0 0 0
2.0000 >> A^2
ans =
1.0000 0 0 1.6294
2.7401
0 1.0000 0 1.8116 1.8971
0 0 1.0000 0.2540 0.2926
0 0 0 1.0000 0
0 0 0 0 4.0000
>> [E,R+R*S;O,S^2]
ans =
1.0000 0 0 1.6294
2.7401
0 1.0000 0 1.8116 1.8971
0 0 1.0000 0.2540 0.2926
0 0 0 1.0000 0
0 0 0 0 4.0000
>> A^2==[E,R+R*S;O,S^2]
ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
通过验证,矩阵2
2E R RS A O S +⎡⎤=⎢⎥⎣⎦成立。
2. 产生5阶希尔伯特矩阵H 和5阶帕斯卡矩阵P ,且求其行列式的值Hh 和Hp 以及它们
的条件数Th和Tp,判断哪个矩阵性能更好。
为什么?>> H=hilb(5)
H =
1.0000 0.5000 0.3333 0.2500 0.2000
0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111 >> P=pascal(5)
P =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>> Hh=det(H)
Hh =
3.7493e-12
>> Hp=det(P)
Hp =
1
>> Th=cond(H)
Th =
4.7661e+05
>> Tp=cond(P)
Tp =
8.5175e+03
答:5阶帕斯卡矩阵P的性能好。
矩阵的性能是由条件数决定的,条件数越接近于1其性能就越好。
由上机操作求得Th=4.7661e+005,Tp=8.5175e+003。
Tp的值更接近于1则其性能要好。
所以5阶帕斯卡矩阵P的性能好。
3. 建立一个5×5矩阵,求它的行列式值、迹、秩和范数。
>> A=rand(5)
A =
0.2785 0.9706 0.4218 0.0357 0.7431
0.5469 0.9572 0.9157 0.8491 0.3922
0.9575 0.4854 0.7922 0.9340 0.6555
0.9649 0.8003 0.9595 0.6787 0.1712
0.1576 0.1419 0.6557 0.7577 0.7060
>> det(A)
ans =
-0.1322
>> trace(A)
ans =
3.4127
>> rank(A)
ans =
5
>> norm(A)
ans =
3.2759
4. 已知
2961820512885A -⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦
求A 的特征值及特征向量,并分析其数学意义。
>> A=[-29,6,18;20,5,12;-8,8,5]
A =
-29 6 18
20 5 12
-8 8 5
>> [V,D]=eig(A)
V =
0.7130 0.2803 0.2733
-0.6084 -0.7867 0.8725
0.3487 0.5501 0.4050
D =
-25.3169 0 0
0 -10.5182 0
0 0 16.8351
在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向量或称正规正交向量)是这样一个非零的向量v :当v 经过这个线性变换的作用之后,得到的新向量(长度也许改变)仍然与原来的v 保持在同一条线上。
一个特征向量的长度在该线性变换下缩放的比例称为其特征值(本征值)。
如果特征值为正,则表示v 在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回零点。
但无论怎样,仍在同一条直线上。
5. 下面是一个线性方程组:
(1) 求方程的解。
(2) 将方程右边向量元素b3改为0.53再求解,并比较b3的变化和解的相对变化。
(3) 计算系数矩阵A的条件数并分析结论。
>> format rat %用分数格式显示
>> A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]
A =
1/2 1/3 1/4
1/3 1/4 1/5
1/4 1/5 1/6
>> format %恢复默认格式
>> b=[0.95;0.67;0.52]
b =
0.9500
0.6700
0.5200
>> X=A\b
X =
1.2000
0.6000
0.6000
>> b2=[0.95;0.67;0.53]
b2 =
0.9500
0.6700
0.5300
>> X2=A\b2
X2 =
3.0000
-6.6000
6.6000
>> D=cond(A)
D =
1.3533e+03
矩阵的条件数决定矩阵的性能,条件数越接近于1其性能越好,系数矩阵A 的条件数为
1.3533e+003,和1相差很大,则其性能不好。
因此b 矩阵个别元素的微小变动,对方程的解(X 值)影响很大。
6. 建立A 矩阵,试比较sqrtm(A)和sqrt(A),分析它们的区别。
实验三 选择结构程序设计
1. 求分段函数的值。
2226035605231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩
且且及其他
用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。
程序设计:
clear;
x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0];
if x<0&x~=-3
y=x.^2+x-6;
elseif x>=0&x<5&x~=2&x~=3
y=x.^2-5*x+6;
else
y=x.^2-x-1;
end
y
运行结果:
y =
29.0000 11.0000 -1.0000 1.0000 2.7500 5.0000 19.0000
2. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~89分为B,79分~79分为C,60分~69分为D,60分以下为E。
要求:
(1) 分别用if语句和switch语句实现。
程序设计:
(一)用if语句
clear;
score=input('请输入百分制成绩:');
a=fix(score/10);
if a==9 | a==10
grade='A';
elseif a==8
grade='B';
elseif a==7
grade='C';
elseif a==6
grade='D';
else
grade='E';
end
grade
(二)用if语句
clear;
score=input('请输入百分制成绩:');
if score>=90&score<=100
grade='A';
elseif score>=80&score<90
grade='B';
elseif score>=70&score<80
grade='C';
elseif score>=60&score<70
grade='D';
else
grade='E';
end
grade
(三)用switch语句
score=input('请输入百分制成绩:');
switch fix(score/10)
case {9,10}
grade='A';
case 8
grade='B';
case 7
grade='C';
case 6
grade='D';
otherwise
grade='E';
end
grade
(2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
clear;
score=input('请输入百分制成绩:');
if score>=0&score<=100 %判断成绩合理性
switch fix(score/10)
case {9,10}
grade='A';
case 8
grade='B';
case 7
grade='C';
case 6
grade='D';
otherwise
grade='E';
end
grade
else
disp('error') %成绩不合理时输出出错信息
end
3. 硅谷公司员工的工资计算方法如下:
(1) 工作时数超过120小时者,超过部分加发15%。
(2) 工作时数低于60小时者,扣发700元。
(3) 其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
程序设计:
num=input('请输入员工工号:');
time=input('请输入员工工时数:');
if time<60
wages=time*84-700;
elseif time>120
wages=84*120+(time-120)*84*(1+0.15);
else
wages=time*84;
end
disp=(['员工工号:' num2str(num) ' 应发工资:' num2str(wages)])
运行结果:
请输入员工工号:4
请输入员工工时数:35
disp =
员工工号:4 应发工资:2240
4. 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。
解:
程序设计:
clear;
a=floor(rand(1)*90+10)
b=floor(rand(1)*90+10)
c=input('请输入运算符号:','s');
if c=='+'
s=a+b
elseif c=='-'
s=a-b
elseif c=='*'
s=a*b
elseif c=='\'
s=a\b
else
disp('error')
end
运行结果:
a =
30
b =
77
请输入运算符号:-
s =
-47
5. 建立5×6矩阵,要求输出矩阵第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
程序设计:
clear;
A=rand(5,6)
n=input('n=?')
if n>=1&n<=5
B=A(n,1:6);
else
disp('erro!')
B=A(5,1:6);
end
B
运行结果:
A =
0.7792 0.0119 0.5285 0.6892 0.9133 0.0782
0.9340 0.3371 0.1656 0.7482 0.1524 0.4427
0.1299 0.1622 0.6020 0.4505 0.8258 0.1067
0.5688 0.7943 0.2630 0.0838 0.5383 0.9619
0.4694 0.3112 0.6541 0.2290 0.9961 0.0046
n=?3
n =
3
B =
0.1299 0.1622 0.6020 0.4505 0.8258 0.1067
实验四 循环结构程序设计 21n ++,求π的近似值。
当时,结果是多少?
要求:分别用循环结构和向量运算(使用sum 函数)来实现。
程序设计(一):
clear;
for n=[100,1000,10000]
sum=0;
for x=1:n
sum=sum+1/(x.^2);
end
result=sqrt(6*sum)
end
运行结果:
result =
3.1321
result =
3.1406
result =
3.1415
程序设计(二):
clear;
for n=[100,1000,10000]
x=1:n;
result=sqrt(6*sum(1./x./x))
end
运行结果:
result =
3.1321
result =
3.1406
result =
3.1415
121
n ++-值。
值对应的y 值。
程序设计:
y=0;n=1;
while y<3
y=y+1/(2*n-1);
n=n+1;
end
n=n-1;
y=y-1/(2*n-1)
n=n-1
运行结果:
y =
2.9944
n =
56
【
%验证n=56时的y 值
clear all ;clc;
n=56;
i=1:n;
f=1./(2*i-1);
y=sum(f)
】
3. 考虑以下迭代公式:
其中a 、b 为正的学数。
(1) 编写程序求迭代的结果,迭代的终止条件为|x n+1-x n |≤10
-5,迭代初值x 0=1.0,迭代次数不超过500次。
(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。
程序设计:
clear;
a=input('a=?');
b=input('b=?');
x0=1;
x1=a/(b+x0);
y=abs(x1-x0);
n=1;
while y>10^(-5)&n<=499
x0=x1;
x1=a/(b+x0);
y=abs(x1-x0);
n=n+1;
end
x1
%比较收敛准确值和迭代结果
r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/2
运行结果:
a=?1
b=?1
x1 =
0.6180
r1 =
0.6180
r2 =
-1.6180
a=?8
b=?3
x1 =
1.7016
r1 =
1.7016
r2 =
-4.7016
a=?10
b=?0.1
x1 =
3.1127
r1 =
3.1127
r2 =
-3.2127
4. 已知
123123
11021
323n n n n f n f n f n f f f f n ---==⎧⎪==⎪⎨==⎪⎪=-+>⎩ 求f 1~f 100中:
(1) 最大值、最小值、各数之和。
(2) 正数、零、负数的个数。
程序设计:
clear;
f1=1;f2=0;f3=1;
f=[f1,f2,f3];
for n=4:100
f4=f3-2*f2+f1;
f=[f f4];
f1=f2;
f2=f3;
f3=f4;
end
maxf=max(f)
minf=min(f)
sumf=sum(f)
positivenum=length(find(f>0))
negtivenum=length(find(f<0))
zeronum=length(find(f==0))
运行结果:
maxf =
4.3776e+11
minf =
-8.9941e+11
sumf =
-7.4275e+11
positivenum =
49
negtivenum =
49
zeronum =
2
5. 若两个连续自然数的乘积减1是素数,则称这两个边疆自然数是亲密数对,该素数是亲密素数。
例如,2×3-1=5,由于5是素数,所以2和3是亲密数,5是亲密素数。
求[2,50]区间内:
(1) 亲密数对的对数。
(2) 与上述亲密数对对应的所有亲密素数之和。
程序设计(一):
clear
pair=[];
for m=2:49
f=(m+1)*m-1;
signf=0; %标记为0表示f为素数
for k=2:sqrt(f)
if (rem(f,k)==0)
signf=1; %标记为1表示f不是素数
end
end
if signf==0
pair=[pair;m m+1]; %亲密数对矩阵
end
end
num=size(pair);
susum=sum(pair(:,1).*pair(:,2)-1);
disp(['亲密数对的对数',num2str(num(1))])
disp(['亲密素数之和',num2str(susum)])
运行结果:
亲密数对的对数28
亲密素数之和21066
程序设计:
clear
susum=0;num=0;
for m=2:49
f=(m+1)*m-1;
n=fix(sqrt(f));
for k=2:n
if (rem(f,k)==0)
break; %f不是素数时跳出循环
end
end
if k==n
num=num+1; %亲密数对个数
susum=susum+f; %亲密素数和累加
end
end
disp(['亲密数对的对数',num2str(num)])
disp(['亲密素数之和',num2str(susum)])
运行结果:
亲密数对的对数28
亲密素数之和21066
实验五函数文件
1. 定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该
建立函数文件fushu.m :
function [e,ln,s,c]=fushu(x)
e=exp(x);
ln=log(x);
s=sin(x); c=cos(x);
建立命令文件fushu2.m
A=input('请输入任意一个复数A');
[a,b,c,d]=fushu(A); %调用fushu.m 的函数文件
a
b
c
d
fushu2.m 运行结果:
>> fushu2
请输入任意一个复数A :4i
a =
-0.6536 - 0.7568i
b =
1.3863 + 1.5708i
c =
0.0000 +27.2899i
d =
27.3082
2. 一物理系统可用下列方程组来表示:
111211
12
220cos sin 0sin 0cos 000sin 000cos 1a m m a m g m N m N m g θθθθθθ--⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦
从键盘输入m 1、m 2和θ的值,求a 1、a 2、N 1和N 2的值。
其中g 取9.8,输入θ时以角度
要求:定义一个求解线性方程组AX=B的函数文件,然后在命令文件中调用该函数文件。
建立函数文件xxfcz.m
function [a1,a2,N1,N2]=xxfcz(m1,m2,t)
t=t*pi/180;
A=[m1*cos(t) -m1 -sin(t) 0; m1*sin(t) 0 cos(t) 0; 0 m2 -sin(t) 0; 0 0 -cos(t) 1];
g=9.8;
B=[0;m1*g;0;m2*g];
X=inv(A)*B;
a1=X(1);
a2=X(2);
N1=X(3);
N2=X(4);
建立命令文件xxfcz2.m
clear
m1=input('请输入m1:');
m2=input('请输入m2:');
t=input('请输入角度t:');
[a1,a2,N1,N2]=xxfcz(m1,m2,t);
a1
a2
N1
N2
运行结果:
>> xxfcz2
请输入m1:5
请输入m2:3
请输入角度t:90
a1 =
9.8000
a2 =
3.7505e-16
N1 =
1.1251e-15
N2 =
29.4000
3. 一个自然数是素数,且它的数字位置经过任意对换后仍为素数。
例如13是绝对素数。
试求所有两位绝对素数。
要求:定义一个判断素数的函数文件。
建立判断素数的函数文件sushu.m
function [x]=sushu(m)
%判断数m是否为素数
for M=2:(m/2)
if rem(m,M)==0
b=0;
break
else
b=1;
end
end
if b==1
x=m; %判断数m为素数,并返回
else
x=[]; %数m不为素数
end
end
建立命令文件sushu2.m
clear;
js=[]; %初始绝对素数
for m=10:99
x=sushu(m);
if x
x=fix(x/10)+rem(x,10)*10;
y=sushu(x);
js=[js,y]; %绝对素数
else
continue
end
end
js
执行命令文件sushu2.m
>> sushu2
js =
11 31 71 13 73 17 37 97 79
法二:
建立函数文件sushu3.m
function p=sushu3(m)
b=m(end); p=m;
for i=2:sqrt(b)
n=find(rem(p,i)==0&p~=i);%将m中能被i整除,且不等于i的元素的下标找出,即n p(n)=[]; %将下标为n的元素剔除,其余的即为素数
end
建立命令文件sushu4.m
clear;
m=10:99;
p=sushu3(m); %找出10到99内所有素数
p=10*rem(p,10)+(p-rem(p,10))/10; %将p素数矩阵每个元素个位十位调换顺序
p=sushu3(p) %再对调换顺序后的素数矩阵找出其中的素数
执行命令文件sushu4.m
>> sushu4
p =
11 31 71 13 73 17 37 97 79
调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。
建立函数文件fx.m
function [f]=fx(x)
f=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);
end
(1) 当f(n)=n+10ln(n2+5)时,求y的值。
(2) 当f(n)=1×2+2×3+3×4+...+n×(n+1)时,求y的值。
建立函数文件fn1.m
function [fn]=fn1(n)
fn=n+10*log(n.^2+5);
end
建立函数文件fn2.m
function [fn]=fn2(n)
fn=0;
for x=1:n
fn=fn+x*(x+1);
end
求(1)(2)中y的值:
y1=fn1(40)/(fn1(30)+fn1(20));
y2=fn2(40)/(fn2(30)+fn2(20));
运行结果:
>> yfn
y1 =
0.6390
y2 =
1.7662
实验六高层绘图操作
>> x=linspace(0,2*pi,101);
>> y=(0.5+3.*sin(x)./(1+x.^2)).*cos(x);
>> plot(x,y);
2. 已知y1=x2,y2=cos(2x),y3=y1×y2,完成下列操作:
(1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。
>> x=linspace(0,2*pi,101);
>> y1=x.^2;
>> y2=cos(2*x);
>> y3=y1.*y2;
>> plot(x,y1,'k:',x,y2,'b--',x,y3,'m-.');
(2) 以子图形式绘制三条曲线。
x=linspace(0,2*pi,101);
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
subplot(3,1,1);
plot(x,y1);
title('y1');
subplot(3,1,2);
plot(x,y2);
title('y2');
subplot(3,1,3);
plot(x,y3);
title('y3');
(3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。
subplot(3,4,1);bar(x,y1,'y');title('bar(x,y1,"y")');
subplot(3,4,2);stairs(x,y1,'m');title('stairs(x,y1,"m")');
subplot(3,4,3);stem(x,y1,'g');title('stem(x,y1,"g")');
subplot(3,4,4);fill(x,y1,'c');title('fill(x,y1,"c")');
subplot(3,4,5);bar(x,y2,'y');title('bar(x,y2,"y")');
subplot(3,4,6);stairs(x,y2,'m');title('stairs(x,y2,"m")');
subplot(3,4,7);stem(x,y2,'g');title('stem(x,y2,"g")');
subplot(3,4,8);fill(x,y2,'c');title('fill(x,y2,"c")');
subplot(3,4,9);bar(x,y3,'y');title('bar(x,y3,"y")');
subplot(3,4,10);stairs(x,y3,'m');title('stairs(x,y3,"m")');
subplot(3,4,11);stem(x,y3,'g');title('stem(x,y3,"g")');
subplot(3,4,12);fill(x,y3,'c');title('fill(x,y3,"c")');
3. 已知
在-5≤x≤5区间绘制函数曲线。
x=-5:0.1:5;
if x<=0
y=(x+sqrt(pi))./(exp(2));
else y=1/2*(log(x+sqrt(1+x.^2)));
end
plot(x,y)
4. 绘制极坐标曲线ρ=asin(b+nθ),并分析参数a、b、n对曲线形状的影响。
a=input('a=');
b=input('b=');
n=input('n=');
theta=0:0.01:2*pi;
rho=a*sin(b+n*theta);
polar(theta,rho,'k')
运行结果:
a=1
b=1
n=1
x=-5:0.5:5;
y=0:1/3:10;
[x,y]=meshgrid(x,y);
z=cos(x).*cos(y).*exp(-(sqrt(x.^2+y.^2)/4));
subplot(2,1,1);
surf(x,y,z);
subplot(2,1,2);
contour3(x,y,z);
6. 绘制曲面图形,并进行插值着色处理。
s=0:0.05:pi/2;
t=0:0.05:3*pi/2;
[s,t]=meshgrid(s,t);
[x,y,z]=peaks(30);
x=cos(s).*cos(t);
y=cos(s).*sin(t);
z=sin(s);
surf(x,y,z);shading flat;。