哈工大MATLAB选修课小作业2资料.docx
《哈工大MATLAB选修课小作业2资料.docx》由会员分享,可在线阅读,更多相关《哈工大MATLAB选修课小作业2资料.docx(15页珍藏版)》请在冰豆网上搜索。
哈工大MATLAB选修课小作业2资料
1.表1用三次样条方法插值计算0-90度内整数点的sin值和0-75度内整数点的
正切值,然后用5次多项式拟合方法计算相同的函数。
a(度)0153045607590
Sin(a)00.25880.50000.70710.86600.96591.0000
tan(a)00.26790.57741.00001.73203.732
解:
分别对应的程序如下:
Sinx函数和tanx函数:
x1=pi*(0:
90)/180;
y1=sin(x1);
xx1=pi*(0:
.25:
90)/180;
x2=pi*(0:
75)/180;
y2=tan(x2);
xx2=pi*(0:
.25:
75)/180;
yy2=spline(x2,y2,xx2);
yy1=spline(x1,y1,xx1);
plot(x1,y1,'mo',xx1,yy1,x2,y2,'ro',xx2,yy2);
Sinx与tanx的五次多项式拟合:
figure
x1=pi*(0:
15:
90)/180;
y1=[0,0.2588,0.5,0.7071,0.866,0.9659,1.0];
x2=pi*(0:
15:
75)/180;
y2=[0,0.2679,0.5774,1,1.732,3.732];
xx1=pi*(1:
90)/180;
pp1=polyfit(x1,y1,5);
yy1=polyval(pp1,xx1);
xx2=pi*(1:
75)/180;
pp2=polyfit(x2,y2,5);
yy2=polyval(pp2,xx2);
plot(x1,y1,'-mo',xx1,yy1,x2,y2,'-ro',xx2,yy2);
legend('描点显示','五次拟合')
2.采用最近点法、线性法和3次样条法插值计算1-100整数间平方根
n149162536496481100
Sqtr(n)12345678910
解:
程序如下:
x=[1,4,9,16,25,36,49,64,81,100];y=x.^0.5;
xx=0:
100;
subplot(1,3,1);
y1=interp1(x,y,xx,'nearest');
plot(x,y,'-*',xx,y2,'xr');
title('最近点法')
subplot(1,3,2);
y2=interp1(x,y,xx);
plot(x,y,'-*',xx,yy,'rx');
title('线性法');
subplot(1,3,3);
y3=interp1(x,y,xx,'spline');
plot(x,y,'-*',xx,y3,'xr');
title('3次样条法');
仿真的结果:
3.已知p(x)=2x^4-3x^3+5x+13,求p(x)的全部根,由方程p(x)=0的根构造
一个多项式f(x),并和p(x)比较。
解:
程序如下:
P=[2,-3,0,5,13];
K=roots(P);
P=poly(K);
F=poly2str(P,'x');
4.有两个多项式p(x)=2x^4-3x^3+5x+13;q(x)=x^2+5x+8,求p(x),p(x)q(x)和
p(x)/q(x)的导数。
解:
对应的程序如下:
P=[2,-3,0,5,13];
Q=[1,5,8];
formatrat
K1=polyder(P);
K2=polyder(P,Q);
[p,q]=polyder(P,Q);
p=poly2str(p,'x');
q=poly2str(q,'x');
D1=poly2str(K1,'x');
D2=poly2str(K2,'x');
D3=poly2str([p,q],'x')
运行的结果如下:
D1=
8x^3-9x^2+5
D2=
12x^5+35x^4+4x^3-57x^2+76x+105
D3=
x^82+x^81+x^80+4x^79+x^78+xx^77+^x^76+5x^75+x^74++x^73+x^72+2x^71+7x^70+x^69+xx^68+^x^67+4x^66+x^65++x^64+x^63+3x^62+4x^61+x^60+xx^59+^x^58+3x^57+x^56+-x^55+x^54+7x^53+7x^52+x^51+xx^50+^x^49+2x^48+x^47+-x^46+x^45+2x^44+6x^43+x^42+xx^41+x^40+-x^39+x^38+2x^37+5x^36+x^35+x^34+x^33+xx^32+^x^31+4x^30+x^29++x^28+x^27+1x^26+0x^25+x^24+xx^23+^x^22+3x^21+x^20++x^19+x^18+4x^17+1x^16+x^15+xx^14+^x^13+2x^12+x^11++x^10+x^9+8x^8+0x^7+x^6+xx^5+x^4+x^3+x^2+6x+4
5.求解恰定方程组,采用左除法、求逆法、lu和qr分解法
2x+3y+5z=10
3x+7y+4z=3
x-7y+z=5
程序如下:
A=[2,3,5;3,7,4;1,-7,1];
b=[10;3;5];
X1=A\B;%左除法
rank(A)
x=A\b;
X2=inv(A)*b;%求逆法
[L,U]=lu(A)
X3=U\(L\b);%LU分解法
[Q,R]=qr(A)
X4=R\(Q\b);%QR分解法
[X1X2X3X4]
相应的仿真的结果如下:
ans=
3
L=
2/35/281
100
1/310
U=
374
0-28/3-1/3
0067/28
Q=
-929/1738-124/7687-169/200
-809/1009-373/1217610/1189
-929/3476493/518169/1120
R=
-3476/929-4645/869-3596/585
0-7687/868-247/696
00-1749/865
ans=
-121/67-121/67-121/67-121/67
-36/67-36/67-36/67-36/67
204/67204/67204/67204/67
6.求解超定方程组,采用采用左除法、求逆法和最小二乘法
2x-4y+10z=22
6x+5y-4z=32
5x-y+33z=10
x+4y-76z=33
对应的程序如下:
A=[2,-4,10;6,5,-4;5,-1,33;1,4,-76];
b=[22;32;10;33];
X1=A\b;%左除法
X2=pinv(A)*b;%求逆法
X3=lsqnonneg(A,b);%最小二乘法
[X1X2X3]
运行的结果如下:
ans=
5340/8515340/8511410/331
-333/136-333/1362035/1129
-1103/2144-1103/21440
程序如下:
X1=fzero('x^41+x^3+1',-1);
X2=fzero('x-sin(x)./x',0.5);
X3=fzero('3*x+sin(x)-exp(x)',1.5);
[X1X2X3]
结果如下:
ans=
-441/463889/10141289/682
(1)的M文件如下:
functionq=g(p)
x=p
(1);
y=p
(2);
q
(1)=x^2+y^2-9;
q
(2)=x+y-1;
end
运行结果如下:
x=fsolve('g',[3,0],optimset('Display','off'))
x=
1519/593-926/593
(2)M文件如下:
functionq=t(p)
x=p
(1);
y=p
(2);
z=p(3);
q
(1)=sin(x)+y^2+log(z)-7;
q
(2)=3*x+2.^y-z^3+1;
q(3)=x+y+z-5;
end
再输入:
x=fsolve('t',[1,1,1]',optimset('Display','off'))
运行结果如下:
x=fsolve('t',[1,1,1]',optimset('Display','off'))
x=
1013/1691
1531/639
1999/997
(1)建立函数:
functionyp=fun2(t,y)%建立相应的函数
yp=-(1.2+sin(10.*t)).*y;
end
再在命令窗口输入:
[t,y]=ode23('fun2',[0,5],1);
[t,y]
得倒最后的结果为:
ans=
01
1/15384/425
254/1847801/1024
265/1323305/447
176/653873/1459
675/1913598/1107
2197/50371212/2339
1075/2136529/1036
363/641523/1051
1717/2696643/1381
1086/1571577/1348
173/232494/1285
3277/4055463/1380
921/1054588/2003
773/806404/1557
1597/1554767/3106
649/592453/1871
8736/7531902/3787
1205/984117/511
972/74383/404
5579/4068267/1468
1548/1079197/1243
10403/6935514/3707
1082/683239/1951
1253/7581818/15625
842/489251/2202
2984/1671303/2701
864/4671346/12463
3035/1571121/1242
848/425271/3137
1929/937267/3547
1306/615505/7671
419/190147/2530
14989/6590181/3295
75/32629/11712
2396/995253/4783
220/89180/3523
1553/609132/2833
1605/614103/2484
1347/50371/1965
1604/585589/18652
1841/653144/5177
1066/367241/9332
659/222213/8422
2535/836211/8466
1517/490141/5845
682/215187/8447
2204/681269/13622
1789/54247/2731
3011/895143/9511
1479/43083/6274
1671/47347/3867
6578/182958/4873
948/259151/12873
1672/449623/54863
4632/1219127/12180
313/8163/6772
20291/5165147/18131
1002/251136/19201
1151/28374/11875
1971/47631/5357
3342/79394/16745
6664/155711/1988
1025/23671/13203
2336/52943/8611
1667/37249/10946
2396/52759/15116
4024/873152/44605
1821/38950/16707
2307/485109/39677
691/14326/9817
1504/30798/37549
6401/1290119/46743
543/17387
最终t=5,y=43/17387
(2)
函数如下:
functiondy=f(t,y)
dy=zeros(2,1);
dy
(1)=dy
(2);
dy
(2)=(2-2.*t.*dy
(1)-3.*y
(1))./(1+t.^2);
end
再在命令窗口输入:
[t,y]=ode23(@f,[05],[01]);
[t,y]
显示的结果为:
ans=
001
1/2501013/938
628/27530197/136
593/13340775/422
1117/151901617/713
1265/10240987/355
2749/16670537/176
3607/169902286/701
661/25204495/1317
787/25204043/1148
913/25204637/1287
1039/25202489/679
1165/25202991/805
501169/312
函数:
functionf=fe(x)
f=1./((x-0.3).^2+0.01)-1./((x-0.9).^2+0.04)-6;
end
再输入:
K=quad('fe',0,1)
得到如下结果:
K=quad('fe',0,1)
K=
2071/177
functionf=h(t)%创建一个新函数
f=sqrt(cos(t.*t)+4*sin((2.*t).^2)+1);%函数的表达式
end
L=quad('h',0,2*pi)
得到如下结果:
L=
1727/254+2169/688i
I=dblquad(inline('exp(-(x.^2+y.^2))'),0,1,0,1)
ans=
[exp(-x^2),exp(-x^2-1)]
[exp(-x^2),exp(-x^2-656572985400717/562949953421312)]
[exp(-x^2),exp(-x^2-4724815845900333/2251799813685248)]
[exp(-x^2),exp(-x^2-3797331908937345/1125899906842624)]
[exp(-x^2),exp(-x^2-5790827928841923/1125899906842624)]
[exp(-x^2),exp(-x^2-8703180435085163/1125899906842624)]
[exp(-x^2),exp(-x^2-5240745460316911/562949953421312)]
[exp(-x^2),exp(-x^2-5986678173366717/562949953421312)]
[exp(-x^2),exp(-x^2-6557792247434309/562949953421312)]
[exp(-x^2),exp(-x^2-6982220510128021/562949953421312)]
[exp(-x^2),exp(-x^2-456737675528067/35184372088832)]
[exp(-x^2),exp(-x^2-3782248212824127/281474976710656)]
[exp(-x^2),exp(-x^2-3885804256400125/281474976710656)]
[exp(-x^2),exp(-x^2-1975736635284715/140737488355328)]
I=
198/355
I=dblquad(inline('cos(x+yI)'),0,pi,0,pi)
I=
-4