高階導數
對于某些問題,一次導數也無法解決,比如變速直線運動的速度v(t)是位置函數s(t)對時間的導數:
v = ds/dt
而加速度a又是速度v對時間t的變化率,即
a = dv/dt
想求出a,必須先求出v,再對v求導:
a = d(ds/dt)/dt
這種導數就稱為s對t的二階導數,二階及二階以上的導數統稱高階導數。
例1 y=ax+b, y’=a,y’’ =0
隐函數
之前學習的函數都是屬于顯函數,隐函數就是把等式右側項移到左邊,形成F(x,y)=0結構。
自然,一個顯函數能轉換成隐函數,而一個隐函數大部分也能轉換成顯函數。
隐函數的顯化有時是困難的,甚至是不可能的。
為什麼需要這樣做?為什麼需要隐函數?
顯函數強調的是變量的關系,隐函數是為了強調方程形式。
我們在解決問題的時候,可能列出的恰好是方程形式,注意隐函數都是方程(二進制方程),而方程不一定是隐函數。
是以希望有一種方法,不管隐函數能否顯化,都能直接由它的方程算出它所對應的顯函數的導數來。
例1 求由方程 e^y+xy-e=0,所确定的隐函數導數dy/dx
解:這是一個隐函數,想顯化寫成y=f(x)形式比較困難,我們對方程兩邊同時對x求導。
左邊變成 d(e^y+xy-e)/dx
這裡使用matlab連續出錯,首先直接求導diff(e^y+xy-e)是錯誤的。
需要把y=y(x)帶入,然後嘗試:
syms x y
f=exp(1)^y(x)+x*y(x)-exp(1);
錯誤!!
又嘗試:
f = sym(exp(1)^y(x)+x*y(x)-exp(1))
還是錯誤!!
又嘗試加上:
f = sym('exp(1)^y(x)+x*y(x)-exp(1)')
可以用了,不過得了一個警告
答案肯定不對,思路徹底錯亂了,必須重新查詢資料。
隐函數求導,手算是把等式兩邊分别求導,比如e^y+x*y-e=0這個隐函數,
方法一
先是等式左邊求導,y是關于x的函數,y(x),要對x求導
clear
syms x y e
f = sym('e^y(x)+x*y(x)-e');%必備,把y=y(x)帶入,也做成符号表達式
diff(f,x)
再把結果中的y(x)換成y,diff(y(x), x)換成 dy/dx
最後結果是:
y+ x* (dy/dx) + e^y*(dy/dx)
和書本上一樣,方法一類似于筆算,一步一步的求解。
方法二
隐函數求導有一個公式: F’(x) = - diff(F,x)/diff(F,y),該隐函數必須寫成F(x,y)=0形式。
用公式能直接獲得最終結果。
clear
syms x y e
f = e^y+x*y-e;
dydx= -diff(f,x)/diff(f,y)
因為這裡把e當成了符号,如果把e當自然對數,log(e)值為1,上式化簡就和書本上一樣了。
參數方程
計算參數方程的導數,形如
x=g(t)
y=w(t)
公式 dy/dx = (dy/dt) / (dx/dt)
例7 已知橢圓的參數方程為 x=acost y=bsint 求橢圓在t=π/4相應點的切線方程。
解:
想找切線方程,就是要求導數。
參數方程的導數根據公式,①求dy/dt ②求dx/dt ③兩者相除
clear
syms x y a b t
fy=b*sin(t);
fx = a*cos(t);
diff(fy,t)/diff(fx,t)
代入t=π/4
導數為-b/a,于是切線方程為
y-y0 = -b/a*(x-x0)
而y0=bsin(pi/4),x0=acos(pi/4)
下:
y-b*sin(pi/4)==(-b/a)*(x-a*cos(pi/4))
不好看啊,試試實時編輯器
但是不知道怎麼化簡成書本上的答案。
查詢幫助,知道了simplify函數
simplify(expr,'Steps',30)
simplify通常使用内部簡化步驟,但你可以修改steps後面的值,來獲得不同的,通常更簡短的結果。
我實驗了10,還是不行,改成30就比較好了。
simplify配合symunit還能進行機關符号簡化。
比如2小時走了5公裡,一共運動了3小時,額外再走了500米,求總路程。
一定不要忘記*号
u = symunit;
d = 5*u.km;
t = 2*u.hr;
expr = (d/t)*3*u.hr+500*u.m
S = simplify(expr)