matlab作业题答案.docx
《matlab作业题答案.docx》由会员分享,可在线阅读,更多相关《matlab作业题答案.docx(17页珍藏版)》请在冰豆网上搜索。
matlab作业题答案
作业题
1求函数在指定点的导数值
>>symsaxy;
a=[xx^2x^3;12*x3*x^2;026*x];
y=det(a);
dy=diff(y);
x=[123];
eval(dy)
ans=
62454
2符号法求下列函数的导数或积分
1)y=x10+10x+logx10,求y’
>>y=sym('x^10+10^x+log(10)/log(x)')
Dy=diff(y)
y=
log(10)/log(x)+10^x+x^10
Dy=
10^x*log(10)+10*x^9-log(10)/(x*log(x)^2)
2)y=ln(1+x),求y’’∣x=1
>>symsxy;
y=log(1+x);
D2y=diff(y,2);
x=1;
eval(D2y)
ans=
-0.2500
3)y=ex/cosx,求y’
>>symsxy;
y=exp(x)/cos(x);
Dy=diff(y)
Dy=
exp(x)/cos(x)+(exp(x)*sin(x))/cos(x)^2
4)
>>f=sym('t*sin(t)');
int(f,0,pi)
ans=
pi
5)已知函数z=sin(xy),计算
>>symsxyz;
z=sin(x*y);
D3z=diff(diff(z,'x'),'y',2)
D3z=
-2*x*sin(x*y)-x^2*y*cos(x*y)
3用数值方法求定积分
1)
>>fun=inline('x.^2.*sqrt(2.*x.^2+3)');
[f,n]=quad(fun,1,5)
f=
232.8057
n=
21
2)
fun=inline('x./sin(x.^2)');
[f,n]=quadl(fun,pi/4,pi/3)
f=
0.3254
n=
18
4已知数据[x,y]如下表,试求2次拟合多项式f(x),然后求x=0.05,0.25,0.45,0.65,0.85,1.05各点的函数近似值,并绘出拟合曲线及求得的函数点。
x
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
y
-0.447
1.978
3.28
6.16
7.08
7.34
7.66
9.56
9.48
9.3
11.2
>>x=0:
0.1:
1;
y=[-0.4471.9783.286.167.087.347.669.569.489.311.2];
a=polyfit(x,y,2)
x1=0.05:
0.2:
1.05;
y1=a
(1)*x1.^2+a
(2)*x1+a(3);
yfit=polyval(a,x);
plot(x1,y1,'or',x,yfit,'-g')
a=
-9.810820.1293-0.0317
5求方程exsinx=0在区间[-4,-3]上的一个根。
>>fzero('exp(x)*sin(x)',[-4,-3])
ans=
-3.1416
6已知某函数的离散点列如下
X
-4
-3
-2
-1
0
1
2
3
4
y
0.97279
3.4234
3.8186
1.8415
0
-0.15853
-0.18141
-2.5766
-7.0272
分别使用hermite插值、三次样条插值、三次方插值估算在x在2.5,1.5,0.5,-0.5,-1.5,-2.5的函数值,并在同一张图上绘制出三条曲线。
>>x=[-4-3-2-101234];
y=[0.972793.42343.81861.84150-0.15853-0.18141-2.5766-7.0272];
x1=-2.5:
1:
2.5;
c1=interp1(x,y,x1,'pehip');
c2=interp1(x,y,x1,'splin');
c3=interp1(x,y,x1,'cubic');
plot(x1,c1,'o-r',x1,c2,'*--g',x1,c3,':
bH')
legend('hermite插值','三次样条插值','三次插值')
7用经典的RK方法计算常微分方程:
y’=e-2t-2y初值条件y(0)=0.1
>>fun=inline('exp(-2*t)-2*y','t','y');
[t,y]=ode45(fun,[0,1],0.1)
t=
0
0.0063
0.0126
0.0188
0.0251
0.0501
0.0751
0.1001
0.1251
0.1501
0.1751
0.2001
0.2251
0.2501
0.2751
0.3001
0.3251
0.3501
0.3751
0.4001
0.4251
0.4501
0.4751
0.5001
0.5251
0.5501
0.5751
0.6001
0.6251
0.6501
0.6751
0.7001
0.7251
0.7501
0.7751
0.8001
0.8251
0.8501
0.8751
0.9001
0.9251
0.9438
0.9626
0.9813
1.0000
y=
0.1000
0.1050
0.1098
0.1144
0.1190
0.1358
0.1507
0.1638
0.1753
0.1852
0.1938
0.2011
0.2073
0.2123
0.2164
0.2195
0.2219
0.2235
0.2244
0.2247
0.2244
0.2236
0.2224
0.2207
0.2187
0.2164
0.2137
0.2108
0.2077
0.2044
0.2009
0.1973
0.1935
0.1896
0.1857
0.1817
0.1776
0.1735
0.1694
0.1653
0.1611
0.1581
0.1550
0.1519
0.1489
8求二阶微分方程
初值条件为x(0)=1,x’(0)=0
functiondy=fun(x,y)
dy=zeros(2,1);
dy
(1)=y
(2);
dy
(2)=(1-y
(1)^2)*y
(2)-y
(1);
>>[x,y]=ode45('fun',[0,1],[10])
x=
0
0.0001
0.0001
0.0002
0.0002
0.0005
0.0007
0.0010
0.0012
0.0025
0.0037
0.0050
0.0062
0.0125
0.0188
0.0251
0.0313
0.0563
0.0813
0.1063
0.1313
0.1563
0.1813
0.2063
0.2313
0.2563
0.2813
0.3063
0.3313
0.3563
0.3813
0.4063
0.4313
0.4563
0.4813
0.5063
0.5313
0.5563
0.5813
0.6063
0.6313
0.6563
0.6813
0.7063
0.7313
0.7563
0.7813
0.8063
0.8313
0.8563
0.8813
0.9063
0.9313
0.9485
0.9657
0.9828
1.0000
y=
1.00000
1.0000-0.0001
1.0000-0.0001
1.0000-0.0002
1.0000-0.0002
1.0000-0.0005
1.0000-0.0007
1.0000-0.0010
1.0000-0.0012
1.0000-0.0025
1.0000-0.0037
1.0000-0.0050
1.0000-0.0062
0.9999-0.0125
0.9998-0.0188
0.9997-0.0251
0.9995-0.0313
0.9984-0.0563
0.9967-0.0813
0.9943-0.1062
0.9914-0.1310
0.9878-0.1559
0.9836-0.1806
0.9788-0.2053
0.9733-0.2300
0.9673-0.2546
0.9606-0.2792
0.9533-0.3037
0.9454-0.3282
0.9369-0.3527
0.9278-0.3772
0.9180-0.4018
0.9077-0.4263
0.8967-0.4509
0.8851-0.4756
0.8729-0.5003
0.8601-0.5252
0.8467-0.5502
0.8326-0.5753
0.8179-0.6006
0.8026-0.6261
0.7866-0.6519
0.7700-0.6779
0.7527-0.7042
0.7348-0.7308
0.7162-0.7578
0.6969-0.7851
0.6769-0.8128
0.6562-0.8410
0.6349-0.8696
0.6128-0.8987
0.5899-0.9283
0.5663-0.9584
0.5497-0.9795
0.5327-1.0008
0.5153-1.0224
0.4976-1.0442
9用三点公式和五点公式求F(x)=1/(1+x)2在x=1.1处的导数值。
x
1.0
1.1
1.2
1.3
1.4
F(x)
0.2500
0.2268
0.2066
0.1890
0.1736
functiondf=ThreePoint(func,x0,type,h)
ifnargin==3
h=0.1;
elseif(nargin==4&&h==0.0)
disp('h不能为0!
');
return;
end
end
y0=subs(sym(func),findsym(sym(func)),x0);
y1=subs(sym(func),findsym(sym(func)),x0+h);
y2=subs(sym(func),findsym(sym(func)),x0+2*h);
y_1=subs(sym(func),findsym(sym(func)),x0-h);
y_2=subs(sym(func),findsym(sym(func)),x0-2*h);
switchtype
case1,df=(-3*y0+4*y1-y2)/(2*h);%用第一个公式求导数
case2,df=(3*y0-4*y_1+y_2)/(2*h);%用第二个公式求导数
case3,df=(y1-y_1)/(2*h);%用第三个公式求导数
end
functiondf=FivePoint(func,x0,type,h)
ifnargin==3
h=0.1;
elseif(nargin==4&&h==0.0)
disp('h不能为0!
');
return;
end
end
y0=subs(sym(func),findsym(sym(func)),x0);
y1=subs(sym(func),findsym(sym(func)),x0+h);
y2=subs(sym(func),findsym(sym(func)),x0+2*h);
y3=subs(sym(func),findsym(sym(func)),x0+3*h);
y4=subs(sym(func),findsym(sym(func)),x0+4*h);
y_1=subs(sym(func),findsym(sym(func)),x0-h);
y_2=subs(sym(func),findsym(sym(func)),x0-2*h);
y_3=subs(sym(func),findsym(sym(func)),x0-3*h);
y_4=subs(sym(func),findsym(sym(func)),x0-4*h);
switchtype
case1,
df=(-25*y0+48*y1-36*y2+16*y3-3*y4)/(12*h);%用第一个公式求导数
case2,
df=(-3*y_1-10*y0+18*y1-6*y2+y3)/(12*h);%用第二个公式求导数
case3,
df=(y_2-8*y_1+8*y1-y2)/(12*h);%用第三个公式求导数
case4,
df=(3*y1+10*y0-18*y_1+6*y_2-y_3)/(12*h);%用第四个公式求导数
case5,
df=(25*y0-48*y_1+36*y_2-16*y_3+3*y_4)/(12*h);%用第五个公式求导数
end
x=1.1;
dy3=TherePoint('1/(1+x)^2',x,1)
dy5=FivePoint('1/(1+x)^2',x,1)
10
求
>>y=sym('(x^3+x^2+x+1)^(1/3)-sqrt(x^2+x+1)*log(exp(x)+x)/x');
limit(y,inf)
ans=
-1/6