数值微积分

  • 前言
  • 一、多项式微积分
    • 1. 多项式计算
    • 2. 多项式微分
    • 3. 多项式积分
  • 二、数值微积分
    • 1. 数值微分法
    • 2. 高阶微分法
    • 3. 数值积分法
  • 三、回顾Function Handles(@)
  • 四、直接计算积分和微分
    • 1. 数值积分:integral()
    • 2. 二重积分:integral2()
    • 3. 三重积分integral3()
  • 总结

前言

【台大郭彦甫】PPT链接:https://pan.baidu.com/s/1VXdy3HCBPexMK0csyehiZA 提取码:2io1
matlab官方帮助文档:https://ww2.mathworks.cn/help/


微分

  • 函数f(x)的导数写成f‘(x) 或者 df(x),表示函数f(x)相对于x的变化率。在几何上,f‘(xo)表示点xo与曲线切线方向的变化量,也就是斜率。

一、多项式微积分

1. 多项式计算

polyval()

  • 多项式微分表达式如下:

  • matlab如何表示多项式?使用行向量

  • y = polyval(p,x)计算多项式 p 在 x 的每个点处的值。参数 p 是长度为 n+1 的向量,其元素是 n 次多项式的系数(降幂排序)。

eg.

a = [9,-5,3,7];
x = -2:0.01:5;
f = polyval(a,x);
plot(x,f,'LineWidth', 2);
xlabel('x');
ylabel('f(x)');
set(gca,'FontSize', 14)

2. 多项式微分

polyder()

  • k = polyder(p) 返回 p 中的系数表示的多项式的导数
  • k = polyder(a,b) 返回多项式 a 和 b 的乘积的导数
  • [q,d] = polyder(a,b) 返回多项式 a 和 b 的商的导数

eg.

  • 对多项式求微分
p=[5 0 -2 0 1];
polyder(p)

结果:

  • 计算x=7处的微分值
polyval(polyder(p),7)


练习

  • 提示:conv()卷积和多项式乘法
  • w = conv(u,v) 返回向量 u 和 v 的卷积。如果 u 和 v 是多项式系数的向量,对其卷积与将这两个多项式相乘等效。
x=-2:0.01:1;
a1=[5,-7,5,10]
a2=[4,12,-3];
a=conv(a1,a2);      %计算两多项式相乘所得多项式系数
y=polyval(a,x);
a_=polyder(a);      %计算f(x)微分式的系数
y_=polyval(a_,x);
plot(x,y,'--b',x,y_,'r','linewidth',2);
legend('f(x)','f''(x)');


注意:

  • plot()中设置线条宽度的'linewidth'参数,对前面所画两条线都起作用;
  • 添加图例时,在字符串中显示单引号,打两个单引号'f''(x)'即显示一个单引号。

3. 多项式积分

polyint()

  • 多项式积分表达式如下:
  • q = polyint(p,k) 使用积分常量 k 返回 p 中系数所表示的多项式积分。
  • q = polyint(p) 假定积分常量 k = 0。

eg.

  • 对多项式求微分,指定常数项为3
p=[5 0 -2 0 1];
polyint(p, 3)

结果:

  • 计算x=7处的积分值
polyval(polyint(p, 3),7)

结果:

二、数值微积分

1. 数值微分法

diff()

  • 数值微分表达式如下:


    Y = diff(X) 计算相邻元素之间的差分

eg.

x = [1 2 5 2 1];
diff(x)

结果:

x = [1 2];y = [5 7];
slope = diff(y)./diff(x)

结果:

x0 = pi/2;
h = 0.1;
x = [x0 x0+h];
y = [sin(x0) sin(x0+h)];
m = diff(y)./diff(x)

结果:

  • h越小误差越小

练习

x0 = pi/2;
h = 0.1;
for i = 1:1:7x = [x0 x0+h];y = [sin(x0) sin(x0+h)];error = diff(y)./diff(x);A = ['h=',num2str(h),' error=',num2str(error)];disp(A)h = h.*0.1;
end
h error of f’(x)
0.1 -0.049958
0.01 -0.0050
0.001 -0.0005
0.0001 -5.0000e-05
0.00001 -5.0000e-06
0.000001 -5.0000e-07
0.0000001 -4.9960e-08