matlab总练习题完整版.docx
《matlab总练习题完整版.docx》由会员分享,可在线阅读,更多相关《matlab总练习题完整版.docx(26页珍藏版)》请在冰豆网上搜索。
![matlab总练习题完整版.docx](https://file1.bdocx.com/fileroot1/2023-2/4/b16ca106-3736-4397-9571-32cf2e1f0f01/b16ca106-3736-4397-9571-32cf2e1f0f011.gif)
matlab总练习题完整版
K显示20位有效数字鸡卫的近似值;
>>vpa('pi',20)
ans=
3.85
>>vpa('exp
(1)',20)
ans=
2.54
2.将区间[-码卸20等分,并以行向量形式给岀正弦函数在这些节点上的函数值;
>>x=linspace(_pi,pi,21);
>>y=sin(x)
Columns1through6
-0.0000-0.3090-0.5878-0.8090-0.9511-1.0000
Columns7through12
0.3090
-0.9511-0.8090-0.5878-0.3090
Columns13through18
0.58780.80900.95111.00000.95110.8090
Columns19through21
0.58780.30900.0000
>>k=1:
1000;
>>kk=1./k;
>>kkk=kk./k;
>>res=sum(kkk)-(piA2)/6res=
-9.9950e-04
iwu1
4”计算£7-ln(l(KK»的近似值(无带度要求];
%承接上题
>>sum(kk)-log(1000)ans=
0.5777
5.计算极限]+
>>power(1+eps,1/eps)ans=
2.7183
&计算;(MuPad命令}
7.生成两亍用中的随机向量并计养它们的内积,向境长:
度,问量之间的
夹角;
>>a=rand(2,3)
0.8147
0.1270
0.6324
0.9058
0.9134
0.0975
>>x=a(1,:
)
x=
0.81470.12700.6324
>>y=a(2,:
)
y=
0.90580.91340.0975
>>norm(x)
ans=
1.0391
>>norm(y)
ans=
1.2900
>>acos(dot(x,y)/norm(x)/norm(y))
ans=
0.8189
&生成三个疋中的随机向屋仏拭5判斷它们是否线性无关;
>>rand(3,3)
ans=
0.2785
0.9649
0.9572
0.5469
0.1576
0.4854
0.9575
0.9706
0.8003
>>det(ans)ans=
0.2937
线性无关
g.生成三个f中的随机三个点匸,计算它们构成的三角形的面积;
a=
0.39220.7060
0.6555
0.0318
>>x=a(1,:
)
0.3922
0.7060
>>y=a(2,:
)
0.6555
0.0318
>>z=a(3,:
)
0.1712
0.2769
>>alpha=x-zalpha=
0.2210
0.4291
>>beta=y-zbeta=
0.4843-0.2451
>>alpha=[alpha0]
alpha=
0.22100.42910
>>beta=[beta0]
beta=
0.4843-0.24510
>>cross(alpha,beta)ans=
0-0.2620
面积0.2620
%
)2
13
…IF
21
22
23
29
10.建立矩阵貝二
31
32
33
…39
aBv■
,并计臬该矩阵的秩;
92
93
…99丿
>>a=11:
19;
>>b=a;
>>fork=1:
8b=[b;a+10*k];end
>>rank(b)ans=
ILit立Vandermonde柜阵片二
11
…1'
12Z2
…2*
1332
…3总
:
:
-
■.■■■
J9少
…d
,并计算该矩阵形城的行
>>a=vander(1:
9);
>>b=fliplr(a)
Columns1through5
1
1
1
1
1
1
2
4
8
16
1
3
9
27
81
1
4
16
64
256
1
5
25
125
625
1
6
36
216
1296
1
7
49
343
2401
1
8
64
512
4096
1
9
81
729
6561
Columns6through9
1
1
1
1
32
64
128
256
243
729
2187
6561
1024
4096
16384
65536
3125
15625
78125
390625
7776
46656
279936
1679616
16807
117649
823543
5764801
32768
262144
2097152
16777216
59049
531441
4782969
43046721
>>det(b)ans=
5.0566e+15
12-用两种不同的方式定义二元函数/乩“二严刃+血井在相应览义形式下计算AU);
方式一>>f=(x,y)exp(x+y)+sin((x^2)+(yA2))
(x,y)exp(x+y)+sin((x^2)+(yA2))>>f(1,2)ans=
19.1266
方式二
functionf=myfunfun(x,y)
f=exp(x+y)+sin((xA2)+(yA2));
>>myfunfun(1,2)ans=
13-血的辺0位小数近似值为:
1.414213562373095048801688724209698078569671875376948073
1766797379907324784621070388503875343276415727;
>>
Char1.5727
>>a=ans;
>>sqrt2char(3-2)=a(3)
sqrt2char=
5727
>>forx=1:
100
b(x)=str2num(sqrt2char(x))
end
>>sum(b)/100
ans=
14-㈱出函数几0・心血何+,/3+开血(盂}在区间卜即]上的图象.并计算岀
该区间上的两个零点;
f=(x)(xA3)*sin(x)+(x^2)/3+x*cos(x)
(x)(x^3)*sin(x)+(xA2)/3+x*cos(x)
>>x0=fzero(f,-1)
x0=
>>ezplot(f,-2,1)
RhEdit
V«nvImvctTddI«
Dnktep
*
□Jd
kx■>r?
5
◎1□到■n
另一根为0,是显然的
-X-ZT.X<-JT
15.Pi出分段函数/⑴h鈕(鼻),-圧3<,在区间卜乞6]上的圏象;'(.r-7t)l2^x>n
functiony=difun(x)
ifxv-pi
y=-x-pi;
elseifx>-pi&xy=sin(x);
else
y=(x-pi)/2;
end
end
>>y=[]
[]
>>forx=-6:
0.05:
6
y=[ydifun(x)];
end>>plot(x,y)
>>plot([-6:
0.05:
6],y)
16.分别用矩形公式片梯形公式"Simpson公式计算积分(右点的近似值,
并以这些近似値计算岀汙的近似值;
>>pi/4ans=
0.7854%pi/4的理想值
矩形公式:
functiony=rectangle(n)
x=0:
1/n:
1;
a=1./(1+x.*x);
y=sum(a)*(1/n);
end
>>rectangle(1000)
ans=
0.7861
>>rectangle(10000)
ans=
0.7855
>>rectangle(100000)
ans=
0.7854
梯形公式:
functiony=trapezoid(n)
x=0:
1/n:
1;
a=1./(1+x.*x);
begin=a
(1);
endd=a(n+1);
a
(1)=0;
a(n)=0;
y=sum(a)*(1/n)+begin*(1/n)*0.5+endd*(1/n)*0.5;
end
trapezoid(1000)
ans=
0.7854
>>trapezoid(100)
ans=
0.7853
Simpson公式
functiony=simpson(n)
x=0:
1/n:
1;
a=thefun(x);
begin=a
(1);
endd=a(n+1);
medium=[];
forx=1:
n
medium=[medium(a(x)+a(x+1))*0.5];
end
a
(1)=0;
a(n)=0;
y=begin*(1/n)*(1/6)+endd*(1/n)*(1/6)+sum(a)*(1/n)*(1/3)+sum(medium)*(
1/n)*(1/6)*4;
end
functione=thefun(r)e=1./(1+r.*r);
end
>>simpson(100)
ans=
0.7854
>>simpson(10)ans=0.7832
17.求解线性方程组心=虬其中
・6
2
2
4
1
1
0
]
A:
=
2
1
1
4
4
5
■・1
0
3.
>>A=[621-1;2410;114-1;-10-13];
>>b=[615-5]';
>>x=A\b
0.7906
-0.3613
0.8639
-1.1152
定义一呻对角矩阵
以及一个单泣矩阵
o
0
3
0
Q
A
0
0
4
J
r
<0
fl
0
0
0
I
Q
0
0)
0
■
0
0
0
1
0
0■
拼咸貳阵
I
0
0
3
0
0
0
1
0
|Q
0
0
4
0
0
0
1'
C00oxi
0
1
訂
0
00.
00
]o,并将它m搜処
o11
JF
>>[diag(1:
4)eye(4)]ans=
1
0
0
0
1
0
0
0
0
2
0
0
0
1
0
0
0
0
3
0
0
0
1
0
0
0
0
4
0
0
0
1
19.输出如下所示的杨釋三角形(也称为Pascal形):
1
kl
1,2.1
1,3,3,1
1,4,6,4,1
l,5t10,10.5,1
1.6.15,20,15,6,1
L7P21,35,35,21,7f1
1,&2&56,70,56.2&&1
1.Z36,84,126,12&84.36,9,1
1,10,45.120f210,252,210t120,45,10,1
functionyh=yhsj(n)
yh=1;
disp
(1);
fork=2:
n
yh=[yh,0]+[0,yh];
disp(yh)end
end
%n=11运行
1
3□
1
1
4
e
4
1
1
io
IQ
&
1
1
€
16
20
16
甘
1
1
丁
21
2B
35
21
才
1
1
e
70
5$
0
1
1
a
襄
B4,
LZ&
L2&
54
9
1
1
ICi
46
120
210*
262
2T1CI
120
45
10
20.计算曲线y=扌门⑺£工£册的弧长;(弧长公式£Jl+rW-rfr)
>>x=sym('x');
>>f=sqrt(1+((4/9)*xA(1/2))人2)
((16*x)/81+1)A(1/2)
>>a=sym('a');
>>b=sym('b');
ans=
(16*b+81)人(3/2)/216-(16*a+81)人(3/2)/216
21-讣算摆线囂爲贈严5的十形的弧圮
>>t=sym('t');
>>a=sym('a');
>>x=a*(t-sin(t))a*(t-sin(t))
>>y=a*(1-cos(t))
-a*(cos(t)-1)
>>dx=diff(x)
dx=
-a*(cos(t)-1)
>>dy=diff(y)dy=a*sin(t)
>>int(sqrt(dxA2+dyA2),0,2*pi)ans=
8*(aA2)A(1/2)
22.(TrQh(-拓/2厂%0心)』拓/2」),(眄0)是函数A<|图象上的5个
点[试构造过该5点的多项式执对,井将弘(球卩何的图象桶在同一亍坐标系中;
>>p=polyfit([-pi-pi/20pi/2pi],[O-1010],5)
P=
Columns1through5
Column6
-0.0000
>>plot([-pi:
pi/100:
pi],polyval(p,-pi:
pi/100:
pi));
>>holdon
>>plot([-pi:
pi/100:
pi],sin(-pi:
pi/100:
pi));
>>
药.试编牙洽程序它以…个正整数为参数・返回它的备位数字构成的行向屋「例如二fun23(12345J返回[「2山,4*5]・
functiona=num2p(n)
strr=num2str(n);
index=size(strr);
indexx=index
(2);
a=[];
fork=indexx-1:
-1:
0
a=[arem(fix(n/(10Ak)),10)];
end
end
>>num2p()ans=
Columns1through8
95489298
Columns9through11
494
24.i殳计…个榄拟蒙特卡罗随机方建计漳Pi近似值的程序;
比如产生M个[-1,1]*[-1,1]^的随机点,统计出位于单位圏内的点
的个数鬥则P/N约为Pi“・
functionppi=ttry(n)
pointx=-1+2*rand(1,n);
pointy=-1+2*rand(1,n);
index=pointx.*pointx+pointy.*pointy;
indexx=index<=1;
ppi=4*sum(indexx)/n;
end
>>ttry(100)ans=
3.1200
>>ttry(10000)ans=
3.1376
25.Collate猜想是至今没有解决的数学问题.将任意…牛口然数珂故如下迭代过程,若是偶数'将它除以N否则将它乘以3再加•如此迭代下去-Cdll^tz猜想一定会得到1:
请你编写一个程序,对该猜想做检验*
functiony=collatz(n)
ifn==1
y=1
return;
else
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
n
y=collatz(n);
end
>>collatz(12)
n=
6
n=
3
n=
16
1
26-对歯数在[0,1]区间上进行丄0等分并作等距节点上的务项氏
插值,对计算所得的号项式在[0,1]«!
分.比鞭得到的积分值马原来函垃的积分
值的误差。
>>f=(x)1丿(1+X42)f=
(x)1./(1+x.A2)
>>y=f(x);
>>x=O:
O.1:
1;
>>y=f(x);>>p=polyfit(x,y,5)
Columns1through5
-0.23720.35290.5071-1.1343
0.0115
Column6
0.9999
>>intp=polyint(p)
intp=
Columns1through5
-0.03950.07060.1268-0.3781
0.0058
Columns6through7
0.99990
>>res1=polyval(intp,1)-polyval(intp,0)
res1=
>>atan
(1)ans=
0.7854%actan⑴公式解
27,通过文件操作功能,从丸件pi_lm.txt中读取Pi小数点后的100W统计出0门出现的次数,井将绪果写出到外部文件氓*文件pi_lm.tx匕可从课程ftp下載-
的文档2\matlab作业\pi_1m.txt','r')
fid=
3
>>b=fscanf(fid,'%s');
>>fclose(fid)ans=
>>b(1:
55)=[];
编辑“givemerun.m”文件:
y=1;
n=zeros(1,10)
flag=0;
forx=1:
1500000
ify==1000001
break
else
ifb(x)~='['&flag==0&isempty(str2num(b(x)))~=1c=b(x);
d=str2double(c);
n(d+1)=n(d+1)+1;
y=y+1;
elseifb(x)=='['
flag=1;
elseifb(x)==']'
flag=0;
end
end
end
n
>>givemerun%运行“givemerun”
000000
Columns1through3
9995999758100026
Columns4through6
100229100230100359
Columns7through9
995489980099985
Column10
100106
%分别为0,1,2,…,8,9在前一百万位出现的次
>>sum(n)
ans=
1000000
>>cc=num2str(n)
cc=
9995999758100026100229100230100359995489980099985
100106>>fopen('res.txt','w')
ans=
>>fprintf(6,cc)
ans=
78
■
文w
9975810002610022310023010035G99o48购8D0
99985100106
V
Z$・任勢…个四个数字不全相等的四位数’将它的4个数字组成最大4位数,最小4位数.将所得婀数相减,得到一个新的4位数(不足4位则补0),依次执行这个过程,最终总可M得到6175请编程加M验证.
functionf=veryfun(n)
ifn==6174
return
else
index
(1)=(n-rem(n,1000))/1000;
index
(2)=fix(n/100)-index⑴*10;
index(3)=rem(fix(n/10),10);
index(4)=rem(n,10);
index2=sort(index,'ascend');
index3=sort(index,'descend');
a=[1000100101];
max=index3*(a');
min=index2*(a');
max-min
veryfun(max-min);
end
end
>>veryfun(9864)
ans=
5175
ans=
5994
ans=
5355
ans=
1998
ans=
8082
ans=
8532
ans=
6174
29
在骄究化学反应速度时•得到下列数攜。
找出实验”曲隨的时间f与反应物的H朋之间的关系•井画出拟台曲线。
X
3
61
I■~!
l7i
12
-
21
24
m
57.6
4i5
■312
22.9
15.4
121
89
I
(提示与r的关*为開二口匕协"
functionm=tem(index,t)
m=index⑴.*exp(index
(2).*t)end
>>[index,r,j,c,m,e]=nlinfit(t,m,tem,[00])index=
78.7137-0.1047
%在这里省略中间的迭代过程和表格变量输入过程
>>m=tem(index,[0:
0.1:
25]);
>>plot([0:
0.1:
25],m)
丸”任给一个由10个两位数(10-39)组成的樂合.编写程序输出这个集合的两
个不相交的的子集,使得这两个子樂的元素和相等,
functionson=sonfind(A)
index=sum(A)/2;
fork=1:
5
b=nchoosek([1:
10],k);sizee=size(b);
kk=sizee
(1);
forx=1:
kk
c=b(x,:
);
A_son=[];
fory=c
A_son=[A_sonA(y)];
end
ifsum(A_son)==index
son=A_son;
break
end
end
endend
%集合元素有互异性,但不影响验证!
>>sonfind(11:
20)
>>sonfind([105510601010101010])ans=
5560
>>sonfind([101010109010