实验2:微积分实验(电子科技大学数学实验习题)

实验2:微积分实验

2.1 基础训练

  1. 已知函数 y = a e x a + x 2 y=\frac{ae^x}{\sqrt{a+x^2}} y=a+x2 aex,求解该函数在以下情形对应点x处的二阶导数值.

    (1) a = 2, x = 3a = 6.

    (2) a = 3, x = 2a =6.

    编写本问题的函数文件第一行格式如下(函数名、文件名自己设定):

    function r=myfun
    %变量r存储导数值
    

    解:

    定义符号计算函数来求解,程序如下:

    function r = myfun
        syms y(a,x)                                         %定义符号变量
        y = a*exp(x)/sqrt(a+x^2);                           %计算y符号表达式
        d2 = diff(y,x,2);                                   %求y对x二阶导函数
        r1 = double(subs(d2,[a,x],[2,6]));                  %代入具体数值
        r2 = double(subs(d2,[a,x],[3,6]));
        r = [r1,r2];                                        %组成返回结果
    
    

    运行结果:

    实验2:微积分实验(电子科技大学数学实验习题)_第1张图片

  2. 编写程序用符号工具箱函数求定积分 ∫ 0 π e 2 c o s x c o s x   d x \int_0^\pi{e^{2cosx}cosx}\,dx 0πe2cosxcosxdx

    解:

    代码:

    function I = myfun
        syms y x
        y = exp(2*cos(x))*cos(x);
        I = double(int(y,x,0,pi));
    
    

    运行结果:

    实验2:微积分实验(电子科技大学数学实验习题)_第2张图片

  3. 用dsolve求解下列微分方程,并绘制解函数曲线

    y ′ ′ + 2 y ′ + y = 1 , y ( 0 ) = 3 , y ′ ( 0 ) = 0 y^{''}+2y^{'}+y=1,y(0)=3,y^{'}(0)=0 y′′+2y+y=1,y(0)=3,y(0)=0

    代码:

    syms y(x)                                         %定义函数
    d1 = diff(y,1);                                   %定义一阶导函数
    d2 = diff(y,2);                                   %定义二阶导函数
    s = dsolve(d2+2*d1+y==1,y(0)==3,d1(0)==0,x)       %求解微分方程
    x0 = -20:0.01:20;                                 %选定绘图区间
    y = double(subs(s,x,x0));                         %计算函数在区间上函数值
    plot(x0,y)                                        %绘图
    

    运行结果:

    实验2:微积分实验(电子科技大学数学实验习题)_第3张图片
    实验2:微积分实验(电子科技大学数学实验习题)_第4张图片

2.2 综合训练

一、实验任务

寻找拐点的问题

如果我们已经知道连续函数的解析表达式,则可以利用拐点的定义寻找出该函数的拐点.根据拐点定义及判别方法可知:如果函数在一个点两侧二阶导数异号,则该点对应曲线上的点即为拐点.

现实问题中,往往没有这种已知条件较为充足、理想的情况.例如,如果知道一个函数的某些离散节点的函数值,能否找出函数的拐点.

问题(寻找拐点问题) 已知函数 y = y ( x ) y=y(x) y=y(x)在若干个点的函数值,具体数据如表1所示.请找出函数在[0,12]区间上的所有可能的拐点.

提示:可以用离散点函数值近似估算二阶导数值。

表1 函数在若干节点的函数值

k x k x_k xk y k y_k yk
1 0.0 2.4051
2 0.2 2.8759
3 0.4 3.4072
4 0.6 3.9690
5 0.8 4.5147
6 1.0 4.9844
7 1.2 5.3149
8 1.4 5.4541
9 1.6 5.3752
10 1.8 5.0849
11 2.0 4.6224
12 2.2 4.0482
13 2.4 3.4297
14 2.6 2.8260
15 2.8 2.2793
16 3.0 1.8125
17 3.2 1.4322
18 3.4 1.1336
19 3.6 0.9059
20 3.8 0.7364
21 4.0 0.6131
22 4.2 0.5258
23 4.4 0.4668
24 4.6 0.4302
25 4.8 0.4125
26 5.0 0.4114
27 5.2 0.4263
28 5.4 0.4575
29 5.6 0.5064
30 5.8 0.5748
31 6.0 0.6648
32 6.2 0.7776
33 6.4 0.9129
34 6.6 1.0671
35 6.8 1.2324
36 7.0 1.3961
37 7.2 1.5416
38 7.4 1.6501
39 7.6 1.7052
40 7.8 1.6966
41 8.0 1.6234
42 8.2 1.4945
43 8.4 1.3263
44 8.6 1.1387
45 8.8 0.9503
46 9.0 0.7756
47 9.2 0.6233
48 9.4 0.4971
49 9.6 0.3965
50 9.8 0.3188
51 10.0 0.2605
52 10.2 0.2178
53 10.4 0.1875
54 10.6 0.1670
55 10.8 0.1546
56 11.0 0.1490
57 11.2 0.1496
58 11.4 0.1565
59 11.6 0.1701
60 11.8 0.1913

任务1:先给出找拐点算法思想、步骤;

任务2:编写程序,输出可能的拐点.

二、实验目的

熟悉拐点的概念;

理解导数、二阶导数的近似计算方法;

三、实验过程

任务1:实验思路

先估算出各点的二阶导数

根据二阶泰勒多项式,得到

f ( a + h ) = f ( a ) + h f ′ ( a ) + h 2 2 f ′ ′ ( a ) + O ( h 2 ) f(a+h)=f(a)+hf^{'}(a)+\frac{h^2}{2}f^{''}(a)+O(h^2) f(a+h)=f(a)+hf(a)+2h2f′′(a)+O(h2)

f ( a − h ) = f ( a ) − h f ′ ( a ) + h 2 2 f ′ ′ ( a ) + O ( h 2 ) f(a-h)=f(a)-hf^{'}(a)+\frac{h^2}{2}f^{''}(a)+O(h^2) f(ah)=f(a)hf(a)+2h2f′′(a)+O(h2)

联立①②可得

f ′ ′ ( a ) = f ( a + h ) + f ( a − h ) − 2 f ( a ) h 2 + O ( h 2 ) f^{''}(a)=\frac{f(a+h)+f(a-h)-2f(a)}{h^2}+O(h^2) f′′(a)=h2f(a+h)+f(ah)2f(a)+O(h2)

本函数的节点的步长为0.2,所以h=0.2,除去最小节点和最大节点,可计算出其他节点的二阶导数,接着找到两侧二阶导数异号的节点即为拐点。

具体数据可复制到excel中然后调用MATLANB中xlsread函数来实现快速读取。

任务二:

将“表1 函数在若干节点的函数值”保存在同一文件夹下的data.xls文件中,如下图所示(截取部分):

实验2:微积分实验(电子科技大学数学实验习题)_第5张图片

代码:

% 读取Excel文件
filename = 'data.xlsx';
sheet = 1;  % 工作表编号
range = 'B3:C62';  % 范围
[num, txt, raw] = xlsread(filename, sheet, range);
%读取x和y
x = num(:,1);
y = num(:,2);
%计算除端点外的点的二阶导函数并存储到D2中
h = 0.2;   %规定步长
D2=[];
for i = 2:59
    d2 = (y(i-1)+y(i+1)-2*y(i))/h^2;
    D2 = [D2,d2];
end
%找到两端异号的点的横坐标和纵坐标并存储到x1和y1中
x1 = [];
y1 = [];
for i = 1:57
    if D2(i)*D2(i+1)<0
        x1 = [x1,(x(i+1)+x(i+2))/2];
        y1 = [y1,(y(i+1)+y(i+2))/2];
    end
end
%输出拐点横纵坐标
disp(x1);
disp(y1);
%绘制图像便于直观观察
plot(x,y,'-b.')
set(gcf,'color','w')
set(gca,'fontsize',14)
hold on 
plot(x1,y1,'r+','markersize',15);

运行结果:

实验2:微积分实验(电子科技大学数学实验习题)_第6张图片

第一行为拐点横坐标,第二行为纵坐标,上下一一对应。从运行结果可知,一共找到了四个可能的拐点,绘制图像如下:

实验2:微积分实验(电子科技大学数学实验习题)_第7张图片

其中红色十字标注位置即为拐点.

四、实验自评与改进方向

在本次实验中, 我较好地完成了实验任务, 得到预期结果, 达到实验目标.以后仍然需要巩固数学基础知识, 为实验课程提供坚实的理论基础和保障.

五、实验体会,收获及建议

在本次实验中,我体会最深的就是使用泰勒公式求解离散型函数二阶导数的方法,在微积分理论课程学习中,研究的都是连续型函数,也没有修读离散数学,所以初次见到题目便不知所措,在老师的指点下,用泰勒公式成功完成本次实验。

通过本次实验,我更加真切的体会到理论与实践结合的学习方法的高效性,以后将继续保持这个良好习惯。

你可能感兴趣的:(电子科技大学数学实验练习题,matlab,数学建模)