目录
实验四:微积分基本运算
练习四
练习五
练习六
1.利用MATLAB软件求下列函数的导数:
syms x
y=sqrt(x+2)*(3-x)^4/(x+1)^3;
y1=diff(y);
x=1/2;
eval(y1)
ans =-62.2207
syms x
y=sqrt(x*sin(sqrt(exp(log(3)*(exp(x)-log(x))))));
y2=diff(y,x,2)
这个答案太长,不写了。
(3)已知,求
,
;
syms v
u=acos(v)^2*log(acos(v))^2;
u1=diff(u)
u2=diff(u1)
u1 =- (2*log(acos(v))*acos(v))/(1 - v^2)^(1/2) - (2*log(acos(v))^2*acos(v))/(1 - v^2)^(1/2)
u2 =- (6*log(acos(v)))/(v^2 - 1) - 2/(v^2 - 1) - (2*log(acos(v))^2)/(v^2 - 1) - (2*v*log(acos(v))^2*acos(v))/(1 - v^2)^(3/2) - (2*v*log(acos(v))*acos(v))/(1 - v^2)^(3/2)
syms x y z
u=(x-y)^z;
z=x^2+y^2;
ux=diff(u,x)
uy=diff(u,y)
uxy=diff(ux,y)
ux =z*(x - y)^(z - 1)
uy =-z*(x - y)^(z - 1)
uxy =-z*(x - y)^(z - 2)*(z - 1)
2.已知函数,按要求完成下面的任务:
(1) 用MATLAB 软件求函数y的一阶、二阶导函数;
clc;
clear;
syms x
y=x^2*sin(x^2-x-2);
y1=diff(y,x);
y2=diff(y,x,2);
disp(y1)
disp(y2)
y1=x^2*cos(- x^2 + x + 2)*(2*x - 1) - 2*x*sin(- x^2 + x + 2)
y2=2*x^2*cos(- x^2 + x + 2) - 2*sin(- x^2 + x + 2) + x^2*sin(- x^2 + x + 2)*(2*x - 1)^2 + 4*x*cos(- x^2 + x + 2)*(2*x - 1)
(2) 画出函数y及其一阶、二阶导函数曲线,观察单调区间、凹凸区间、极值点和拐点等;
subplot(2,2,1)
ezplot(y,[-2,2])
subplot(2,2,2)
ezplot(y1,[-2,2])
subplot(2,2,3)
ezplot(y2,[-2,2])
至于函数的单调区间、凸凹区间、极值点和拐点等,我就不一一赘述了。
(3)用区间二分法找出函数的一个零点、三个极值点和三个拐点,与其相应的理论值比较.
我们可以编一个小程序来实现区间二分法。首先我们要确定y函数的零点、极值点和拐点大致在什么区间上:
由下图我们得知,该函数零点分别在区间(-2,-1.5),(-1.5,-1),(-0.5,0.5)(其实0这个零点我们比较容易看出来),(1.5,2)。
我们分别在这四个区间内进行区间二分即可:(我们取精度为0.001)
零点:
clc;
clear;
y=inline('x^2*sin(x^2-x-2)');
u=[-1.5 -0.9 0.5 2.5];
l=[-2 -1.2 -0.5 1.5];
for i=1:4
while u(i)-l(i)>0.001
m=(u(i)+l(i))/2;
if y(m)==0
break;
end
if y(l(i))<0
if y(m)>0
u(i)=m;
else
l(i)=m;
end
else
if y(m)>0
l(i)=m;
else
u(i)=m;
end
end
end
fprintf('第%i个零点为%f\n',i,m);
end
end
第1个零点为-1.821289 -1.8220
第2个零点为-1.000195 -1
第3个零点为0.000000 0
第4个零点为2.000000 2
(后侧是理论值)
极值点:由下图我们可以看出,极值点所在的区间为:(-2,-1.5),(-1,-0.5),(-0.5,0.5),(1.5,2)。
clc;
clear;
y=inline('x^2*cos(- x^2 + x + 2)*(2*x - 1) - 2*x*sin(- x^2 + x + 2)');
u=[-1.5 -0.5 0.5 2];
l=[-2 -1 -0.5 1.5];
for i=1:4
while u(i)-l(i)>0.001
m=(u(i)+l(i))/2;
if y(m)==0
break;
end
if y(l(i))<0
if y(m)>0
u(i)=m;
else
l(i)=m;
end
else
if y(m)>0
l(i)=m;
else
u(i)=m;
end
end
end
fprintf('第%i个极值点为%f\n',i,m);
end
end
第1个极值点为-1.532227 -1.5326
第2个极值点为-0.731445 -0.7315
第3个极值点为0.000000 0
第4个极值点为1.594727 1.5951
(后侧是理论值)
拐点:
clc;
clear;
y=inline('2*x^2*cos(- x^2 + x + 2) - 2*sin(- x^2 + x + 2) + x^2*sin(- x^2 + x + 2)*(2*x - 1)^2 + 4*x*cos(- x^2 + x + 2)*(2*x - 1)');
u=[-1.5 -1 0 1.5];
l=[-2 -1.5 -1 1];
for i=1:4
while u(i)-l(i)>0.001
m=(u(i)+l(i))/2;
if y(m)==0
break;
end
if y(l(i))<0
if y(m)>0
u(i)=m;
else
l(i)=m;
end
else
if y(m)>0
l(i)=m;
else
u(i)=m;
end
end
end
fprintf('第%i个拐点为%f\n',i,m);
end
end
第1个拐点为-1.924805 1.9240
第2个拐点为-1.264648 -1.2650
第3个拐点为-0.473633 -0.4742
第4个拐点为1.241211 1.2404
(后侧是理论值)
1.使用MATLAB软件求下列积分:
(1);
clc;
clear;
syms x
f=x*cos(x)/sin(x)^3;
jf=int(f)
jf =-(x + sin(2*x)/2)/(2*sin(x)^2)
(2)
syms x
f=tan(x);
jf=int(f)
jf =-log(cos(x))
(3);
clc;
clear;
syms x a b
f=exp(a*x)*sin(b*x);
jf=int(f,x)
jf =-(exp(a*x)*(b*cos(b*x) - a*sin(b*x)))/(a^2 + b^2)
clc;
clear;
syms x
f=1/(1+8*sin(x)^2);
jf=int(f,x,0,pi/6)
jf =pi/9
2.自己选取m,n,用多个方法验证下面结论:
方法一:代数实验法
clc;
clear;
m=input('请输入m值:');
n=input('请输入n值:');
syms x
f=sin(m*x)*sin(n*x);
jb=int(f,x,-pi,pi);
disp(jb)
方法二:分析计算法:
当m=n时,被积分函数化为f=sin(n*x)^2为偶函数,那么在(-π,π)上的积分记为(0,π)上积分的两倍。
我们在(0,π)上积分并乘以2得:ans =pi - sin(2*pi*m)/(2*m),化简即为π。
当m≠n时,
syms x m n
f=sin(n*x)*sin(m*pi);
jb=int(f,x,-pi,pi)
jb =0.
1. 将在x=2处展开成幂级数。
clc;
clear;
syms x
f=1/(x^2+4*x+8);
jb=taylor(f,x,2,'order',7);
pretty(jb)
(11*(x - 2)^2)/2000 - x/50 - (3*(x - 2)^3)/2500 + (41*(x - 2)^4)/200000 - (11*(x - 2)^5)/500000 - (29*(x - 2)^6)/20000000 + 9/100
2. 求函数y=ln(1+x)的麦克劳林展开式,并画图观察分别用不同次数的泰勒多项式代替函数y=ln(1+x)的近似程度,并计算In2的近似值。
这个题目在实验二的练习一中有过类似的题目,当时是利用了taylortool命令在一个窗口中写的,此次我们试一下另一种写法。
clc;
clear;
syms x
f=log(1+x);
y1=taylor(f,'order',2);
y2=taylor(f,'order',4);
y3=taylor(f,'order',6);
h1=ezplot(y1);
hold on
h2=ezplot(y2);
hold on
h3=ezplot(y3);
hold on
h4=ezplot('log(x+1)');
set(h4,'color','k','LineWidth',0.5);
title('');
legend('x','x^3/3 - x^2/2 + x','x^5/5 - x^4/4 + x^3/3 - x^2/2 + x','log(x+1)');
grid on
x=1;
eval(y3)
ans =0.7833
注:ezplot函数在画的时候要想改变图像线条的颜色,就必须在前面给他不同的句柄,这样系统本身就会给他不同的颜色,若想进一步修改图像的颜色或线条粗细,可以使用set进一步修改。
3.(1)求函数f(x)=x的傅里叶系数;
首先我们要编一个函数用于求函数的傅里叶系数,将这个文件命名为fourier1.m,这个函数的具体代码在书上本实验的示例26:(不能命名为fourier,因为MATLAB有一个fourier函数)
function [a0,an,bn]=fourier1(f)
syms x n
a0=int(f,-pi,pi)/pi;
an=int(f*cos(n*x),-pi,pi)/pi;
bn=int(f*sin(n*x),-pi,pi)/pi;
%在另一个窗口中运行一下程序:
clc;clear;
syms x
f=x;
[a0,an,bn]=fourier1(f)
a0 =0
an =0
bn =(2*(sin(pi*n) - n*pi*cos(pi*n)))/(n^2*pi)
(2)分别取n=2,5,10,20,在不同窗口绘制该傅里叶展开式的曲线;
(3)同时在这些窗口中绘制函数f(x)的曲线;
clc;
clear;
syms n x
an=0;
bn =(2*(sin(pi*n) - n*pi*cos(pi*n)))/(n^2*pi);
h=an*cos(n*x)+bn*sin(n*x);
m=[2 5 10 20];
for i=1:4
k=symsum(h,n,1,m(i));
figure(i)
ezplot('x');
hold on
ezplot(k);
end
(4)对比这些图形,你能得出什么结论?
观察上面的四幅图像,我们容易得出:当n值取得越大,傅里叶展开式的图像和原函数的图像越接近。
4.设函数 ,自己取定满足条件的a,b,完成以下步骤:
(1)绘制函数f(x)的曲线;
我们取a=0.5,b=6;
这里我们不能直接写inf,因为此时电脑画不出来。所以我们只能取一个较大的数:500。
clc;
clear;
syms n x
f=(1/2)^n*sin(4^n*x);
f1=symsum(f,n,0,500);
x=-5:0.0001:5;
f1=eval(f1);
plot(x,f1)
(2)上图是这个函数的整体图,下边的两张图分别是这个函数在一点的放大图。
通过放大我们发现,这个函数长满了“刺”,函数一点也不平滑。
(3)该函数有什么特点及性质?
如果我们进一步推测,可以判断如果n趋于正无穷,这个函数将处处都是“刺”,它将会成为一个不可导的函数。
推荐下一篇文章:数学实验第三版 (主编:李继成 赵小艳)课后练习答案(五)(1)(2)https://blog.csdn.net/2301_80199493/article/details/136019634?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136019634%22%2C%22source%22%3A%222301_80199493%22%7D
本文由作者自创,由于时间原因,难免出现些许错误,还请大家多多指正批评。创作不易,请大家多多鼓励支持。