disp('a>b&&b>c'),disp(a>b&&b>c)
disp('a==d'),disp(a==d);
disp('a|b>c'),disp(a|b>c);
disp('~~d'),disp(~~d);
Matlab第三章
1.在命令提示符下输入以下两条命令:
>>x=[93063]
>>y=mod((sqrt(length(((x+5).*[12345]))*5)),3)
求y值为多少?
x=
93063
y=
2
2.在MATLAB中运行以下命令:
a=[3,7,2,7,9,3,4,1,6];
b=[7];
a(4)=[];
vec1=a==b;
vec2=mod(a,2)==0;
c=sum(vec1);
vec3=vec1+vec2;
d=vec3.*a;
vec4=find(a>5);
e=a(vec4)+5;
vec5=find(a<5);
f=vec5.^2;求c、d、e、f的值。
>>c
c=
1
>>d
d=
07200406
>>e
e=
121411
>>f
f=
19253649
3.向量操作时Matlab的主要部分,使用给出的向量来做下面的练习.
Vec=[4528472642572457432573362533430-65-343]
(1)创建一个新的向量vecR,使其成为vec的转置.
(2)创建一个新的向量vecB,使其成为vec前半部分与后半部分对换的结果.
(3)创建一个新的向量vecS,使其包含vec中所有小于45的元素,且按vec中的顺序排列.
(4)创建一个新的向量vec3R,使其从vec中最后一个元素开始,间隔3个元素取一个元素,直到第一个元素为止.
(5)创建一个新的向量vecN,使其包含vec中所有等于2或4的元素的索引值.
(6)创建一个新的向量vecG,使其包含vec中去掉索引值为奇数且取值为2或4的元素后的所有元素.
>>vecR=vec'
vecR=
4
5
2
8
4
7
2
64
2
57
2
45
7
43
2
5
7
3
3
6253
3
4
3
0
-65
-34
>>vec1=vec(1:
13)
vec1=
4528472642572457
>>vec2=vec(14:
26)
vec2=
Columns1through8
432573362533
Columns9through13
430-65-34
>>vecB=[vec2vec1]
vecB=
Columns1through8
432573362533
Columns9through16
430-65-34452
Columns17through24
8472642572
Columns25through26
457
>>small=vec<45
small=
Columns1through17
11111110101011111
Columns18through26
110111111
>>vecS=vec(small)
vecS=
Columns1through17
452847222743257333
Columns18through22
430-65-34
>>vec3R=vec(end:
-3:
1)
vec3R=
Columns1through8
-34362537432644
Column9
5
>>vecN=find(vec==2|vec==4)
vecN=
13579111522
>>[value]=vecN(find(mod(vecN,2)))
value=
135791115
>>vec(value)=0
vec=
Columns1through8
050807064
Columns9through16
05704574305
Columns17through24
73362533430
Columns25through26
-65-34
>>vec(vec==0)=[]
vec=
Columns1through8
587645745743
Columns9through16
57336253343
Columns17through18
-65-34
>>vecG=vec
vecG=
Columns1through8
587645745743
Columns9through16
57336253343
Columns17through18
-65-34
4.给定一下3个向量:
nums1=[713532121991024]
nums2=[5414569204548726132109411]
nums3=[441125418477998852315]
编写脚本文件创建相应的3个向量,newNum1、newNum2、newNum3,分别包含以上3个向量中从第一个元素开始且间隔取值的元素。
%取向量索引为奇数的值
clear
clc
nums1=[713532121991024];
nums2=[5414569204548726132109411];
nums3=[441125418477998852315];
x1=find(mod(find(nums1),2)==1);%向量1
[values1]=nums1(x1);
newNums1=values1;
disp('nums1=');
disp(nums1);
disp('newNums1=');
disp(newNums1);
x2=find(mod(find(nums2),2)==1);%向量2
[values2]=nums2(x2);
newNums2=values2;
disp('nums2=');
disp(nums2);
disp('newNums2=');
disp(newNums2);
x3=find(mod(find(nums3),2)==1);%向量3
[values3]=nums3(x3);
newNums3=values3;
disp('nums3=');
disp(nums3);
disp('newNums3=');
disp(newNums3);
Matlab第四章
1.有如下数据:
X
1
1.1
1.2
1.3
1.4
y
1.00000
1.23368
1.55271
1.99372
2.61170
利用本章介绍的几种插值方法对其进行插值,得到每隔0.05的结果。
%4种插值方法
x=[11.11.21.31.4];%x与y的值
y=[1.000001.233681.552711.993722.61170];
length_of_x=length(x);
scalar_x=[x
(1):
0.05:
x(length_of_x)];
length_of_sx=length(scalar_x);
fori=1:
length_of_sx%定义4种方法
y_nearest(i)=interp1(x,y,scalar_x(i),'nearest');
y_liner(i)=interp1(x,y,scalar_x(i),'liner');
y_spline(i)=interp1(x,y,scalar_x(i),'spline');
y_cubic(i)=interp1(x,y,scalar_x(i),'cubic');
end
subplot(2,2,1),plot(x,y,'*'),holdon,plot(scalar_x,y_nearest),title('nearest');%输出
subplot(2,2,2),plot(x,y,'*'),holdon,plot(scalar_x,y_liner),title('linear');
subplot(2,2,3),plot(x,y,'*'),holdon,plot(scalar_x,y_spline),title('spline');
subplot(2,2,4),plot(x,y,'*'),holdon,plot(scalar_x,y_cubic),title('cubic');
2.2.求下列函数的解,并绘制图形。
(1)y=ex-x5,初始点为x=8.
(2)y=xsin(x)
>>y=@(x)exp(x)-x^5;
>>x=fzero(y,8)
x=
12.7132
>>fplot(y,[10,14]);
>>holdon
>>plot(x,y(x),'r*')
>>y=@(x)x*sin(x);
>>x=fzero(y,0)
x=
0
3.求下列函数的极值。
(1)z=x2-(y-1)2
(2)z=(x-y+1)2
>>z=@(x)x
(1)^2-(x
(2)-1)^2;
>>[x,fvalue]=fminsearch(z,[-1,1])
Exiting:
Maximumnumberoffunctionevaluationshasbeenexceeded
-increaseMaxFunEvalsoption.
Currentfunctionvalue:
-29278786696692084000000000000000000000000000000000000000000000000000000000000000000000.000000
x=
1.0e+043*
1.11381.2383
fvalue=
-2.9279e+085
>>z=@(x)(x
(1)-x
(2)+1)^2;
>>[x,fvalue]=fminsearch(z,[-1,1])
x=
-1.2073-0.2073
fvalue=
1.9045e-022
4.计算下列积分。
(1)
(2)
>>f=@(x)x+x.^3+x.^5;
>>q=quad(f,-1,1)
q=
2.2204e-016
>>f=@(x,y)sin(y).*(x+y)./(x.^2+4);
>>q=dblquad(f,1,10,1,10)
q=
5.5254
Matlab第五章
1.编制一个脚本,查找给定字符串中指定字符出现的次数和位置.
%查找给定字符串中指定字符出现的次数和位置
letter='a';%指定字符
string='Ihavealongstring';%给定字符串
places=findstr(string,letter);%位置
times=length(places);%次数
disp('placesare:
');
disp(places);
disp('timesare:
');
disp(times);
2.编写一个脚本,判断输入字符串中每个单词的首字母是否为大写,若不是则将其修改为大写,其他字母为小写.
%将每个单词首字母变为大写
str='Ihavealongstring';
disp(str);
nlength=length(str);
fork=1:
nlength
if(k==1||isspace(str(k-1)))&&(str(k)<='z'&&str(k)>='a')
str(k)=char(double(str(k))-32);
end
end
disp(str);
3.创建2×2单元数组,第1、2个元素为字符串,第三个元素为整型变量,第四个元素为双精度(double)类型,并将其用图形表示.
>>A=cell(2,2)
A=
[][]
[][]
>>A(1,1)={'string1'};
>>A(1,2)={'string2'};
>>A(2,1)={uint8(100)};
>>A(2,2)={double(60)};
>>cellplot(A)
4.创建一个结构体,用于统计学生的情况,包括学生的姓名、学号、各科成绩等。
然后使用该结构体对一个班级的学生成绩进行管理,如计算总分、平均分、排列名次等.
>>student=struct('name',{'Ann','Bob','Cilly'},'number',{1,2,3},'grade',{90,60,85})
student=
1x3structarraywithfields:
name
number
grade
>>student
(1)
ans=
name:
'Ann'
number:
1
grade:
90
>>student
(2)
ans=
name:
'Bob'
number:
2
grade:
60
>>student(3)
ans=
name:
'Cilly'
number:
3
grade:
85
>>total=student
(1).grade+student
(2).grade+student(3).grade
total=
235
>>average=total/3
average=
78.3333
>>[new,index]=sort([student.grade],'descend')
new=
908560
index=
132
Matlab第六章
1.假设x=[-3,0,0,2,5,8]且y=[-5,-2,0,3,4,10]。
通过手算得到以下运算的结果,并使用MATLAB检验计算的结果。
(1)z=y<~x
(2)z=x&y
(3)z=x|y
(4).z=xor(x,y)
>>x=[-3,0,0,2,5,8]
x=
-300258
>>y=[-5,-2,0,3,4,10]
y=
-5-203410
>>z1=y<~x
z1=
111000
>>z2=x&y
z2=
100111
>>z3=x|y
z3=
110111
>>z4=xor(x,y)
z4=
010000
2.在MATLAB中使用一个循环确定:
如果用户最初在一个银行帐户中存储$10000,并且在每年的年终再存储$10000(银行每年支付6%的利息),那么账户上要积累$1000000要需要多长时间。
%银行存款计算
a=10000;%本金
b=10000;%每年新增存款
sum=0;%存款总和
i=1;
sum=sum+a;
whilesum<1000000
i=i+1;
sum=sum*(1+0.06)+b;
end
disp('year=')
disp(i)
near=
34
3.某个特定的公司生产和销售高尔夫手推车。
每周周末,公司都将那一周所生产的手推车转移到仓库(库存)之中。
卖出的所有手推车都是从库存中提取。
这个过程的一个简单模型为:
I(k+1)=P(k)+I(k)-S(k)
其中:
P(k)=第k周所生产的手推车数量;
I(k)=第k周库存中的手推车数量;
S(k)=第k周所卖出的手推车数量;
以下为10周计划中的每周销售额;
周
1
2
3
4
5
6
7
8
9
10
销售额
50
55
60
70
70
75
80
80
90
55
假设每周的产量都基于前一周的销售额,所以有P(k)=S(k-1)。
假设第一周的产量为50辆手推车:
即,P
(1)=50。
编写一个MATLAB程序计算:
10周之内每周库存之中的手推车数量或者计算手推车库存数量减少到0为止的时间,并同时绘制图形。
针对以下两种情况运行该程序:
(1)初始库存为50辆手推车,所以I
(1)=50;
(2)初始库存为30辆手推车,所以I
(1)=30。
>>s=[50556070707580809055]
s=
50556070707580809055
>>fori=2:
1:
10
p(i)=s(i-1);
end
>>p
p=
0505560707075808090
>>l=[50000000000]
l=
50000000000
>>forn=2:
1:
10
l(n)=l(n-1)+p(n)-s(n);
end
>>l
l=
50454030302520201045
>>l=[30000000000]
l=
30000000000
>>forn=2:
1:
10
l(n)=l(n-1)+p(n)-s(n);
end
>>l
l=
3025201010500-1025
周
1
2
3
4
5
库存量
(1)
50
50
45
40
30
库存量
(2)
30
25
20
20
10
周
6
7
8
9
10
库存量
(1)
30
30
25
20
10
库存量
(2)
10
5
0
0
(<0)
Matlab第七章
1.创建符号表达式f(X)=sinx+x。
>>f=sym('sin(x)+x');
2.计算习题1中表达式在
处的值,并将结果设置为以下5种精度:
小数点之后1位、2位、5位、10位和20位有效数字。
>>digits
(2)
>>vpa(subs(f,pi/6))
ans=
1.0
>>digits(3)