matlab—數值微積分
polyva()
多項式計算在理工科教學、科研中有著特殊地位和意義。matlab 作為重要的工程計算軟體也給出了相應的計算指令來完成這一工作。其中就有多項式求值 polyval 函式,其呼叫格式為: y = polyval(p,x);
,返回 n 次多項式 p 在 x 處的值
- p:一個長度為 n+1 的向量,其元素為按降冪排列的多項式係數
- x:可以是一個矩陣或者一個向量,在這兩種情況下,polyval 計算在 x 中任意元素處的多項式 p 的估值
例如:$9x^3-5x^2+3x+7$

polyder()
多項式求微分函式 polyder,其呼叫格式為:
k = polyder(p) k = polyder(a,b) [q,d] = polyder(b,a)
例如:$(3x^2+6x+9)(x^2+2x)$

polyint()
多項式積分函式 polyint,其呼叫格式為: polyint(p,c)
;,p 是多項式對應的係數,c 是常數項(可以任意指定)
例如:$5x^4-2x^2+1$

dif()
上面我們講的都是多項式的一些數值計算的方法,如果不是多項式如何計算呢,舉個栗子,如何求 sin(x) 在某一點的微分,這時就需要微分的定義
$$
f'(x_0) = \displaystyle\lim_{h\to 0} \frac{f(x_0+h) - f(x_0)}{h}
$$
其實我們只要知道兩個點,一個 (x0,f(x0))
,另一個 (x0+h,f(x0+h))
這裡涉及到一個函式 diff,其呼叫格式為: Y=diff(X)
。X 是一個 m 維的向量,那麼 Y 返回的是一個 m-1 維的向量,其中 Y 的元素分別是 X 相鄰元素之間的差值,即 Y=[X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]
;X 是一個非空的 m n 的矩陣,那麼 Y 返回的是一個 (m-1) n 的矩陣,其中 Y 的元素分別是 X 行與行之間的差值, Y=[X(2,:)-X(1,:) X(3,:)-X(2,:) ... X(m,:)-X(m-1,:)]
。下面就給出程式碼,求sin(x) 在 x = pi/2 時的微分
x0 = pi / 2; h = 0.1; x = [x0,x0 + h]; y = [sin(x0),sin(x0+h)]; m = diff(y) / diff(x)
得到的答案顯然不等於0,這時因為h太大了,可以將h不斷縮小,得出來的值也會不斷接近 0
integral()
integral 函式的作用是求定積分,其呼叫格式為: integral(fcn handle,x0,x1);
,fcn handle 是函式控制代碼,x0 表示積分下限,x1 表示積分上限
y = @(x)sin(x); integral(y,0,2*pi);
函式控制代碼的格式為: @(自變數)函式體
,可以把 @(自變數)
當成是 d(自變數)
,只不過放到前面去了
integral2()
二重積分函式 integral2()
,呼叫格式類似 integral,直接給出示例
$$
f(x,y) = \int_{0}^{\pi} \int_{\pi}^{2\pi}(y\cdot sin(x) + x\cdot cos(y))\text{d}x{d}y
$$
f = @(x,y)y.*sin(x)+x.*cos(y); integral2(f,pi,2*pi,0,pi);
integral3()
三重積分函式 integral3()
,呼叫格式類似integral
$$
f(x,y,z) = \int_{-1}^{1} \int_{0}^{1} \int_{0}^{\pi}(y\cdot sin(x) + z\cdot cos(y))\text{d}x{d}y{d}z
$$
f = @(x,y,z)y.*sin(x)+z.*cos(y); integral3(f,0,pi,0,1,-1,1)