编辑
2022-05-23
博客
00

目录

如何用matlab求隐式函数的导数
隐函数求导的例子
如何用matlab求隐式函数的一阶导数
如何用matlab求隐式函数的二阶导数

如何用matlab求隐式函数的导数

隐函数求导的例子

假设有一个圆 x2+y2=5x^2+y^2=5 , 要求在某个点上的切线的斜率.

我们可以把式x2+y2=5x^2+y^2=5中的每一项对xx求导, 可以得到:

d(x2)dx+d(y2)dydydx=d(5)dx \frac{d(x^2)}{dx} + \frac{d(y^2)}{dy}\frac{dy}{dx} = \frac{d(5)}{dx}

2x+2ydydx=0 2x+2y\frac{dy}{dx} = 0

再将 dydx\frac{dy}{dx} 看成一个变量, 可以对式(2)(2)求解得到: dydx=xy \frac{dy}{dx}= - \frac{x}{y} , 这就一阶导, 也是圆上每一个点上切线的斜率.

对式(2)(2)再次求导:

ddx(2x)+ddx(2ydydx)=0 \frac{d}{dx}(2x) + \frac{d}{dx}(2y \frac{dy}{dx} ) = 0

ddx(2ydydx)\frac{d}{dx}(2y \frac{dy}{dx} ) 这一项要用乘法法则, 注意(dxdy)2(\frac{dx}{dy})^2d2ydx2\frac{d^2y}{dx^2}是不同的.

2+2×(dxdy)2+d2ydx2=0 2 + 2 \times ( \frac{dx}{dy} )^2 + \frac{d^2y}{dx^2} = 0

dydx=xy \frac{dy}{dx}= - \frac{x}{y} 代入式(4)(4) , 将 d2ydx2\frac{d^2y}{dx^2} 看做变量可以求解得到: d2ydx2=y2+x2y3 \frac{d^2y}{dx^2} = - \frac{y^2+x^2}{y^3} 这个就是二阶导.

如何用matlab求隐式函数的一阶导数

方法1: 用二元隐函数存在的定理

具体来说, 二元函数的求导代码是这样写的:

把等号右边的式子全移到左边 分别对式子求 x 和 y 的偏导

syms x y; f = @(x,y) ( x^2+y^2-4 ); dx = diff(f(x,y),x); dy = diff(f(x,y),y); ans = - dy/dx

方法2: 用solve硬解

如果你不知道公式, 还可以用solve函数强解隐函数导数, 具体做法如下:

  1. 把y写成y(x)让matlab把其当做与x相关的导数
  2. 直接对式x2+y(x)2=5x^2+y(x)^2=5求导可得到这样的结果: 2x+2y(x)diff(y(x),x)=02*x + 2*y(x)*diff(y(x), x) = 0
  3. 用变量dydxdydx来代替原有的diff(y(x),x)diff(y(x), x)
  4. solvesolve函数解dydxdydx
syms x; g = str2sym('x^2+y(x)^2=5'); dgdx = diff(g,x) dgdx1 = str2sym('2*x + 2*y(x)*dydx = 0') solve(dgdx1,str2sym('dydx'))

如何用matlab求隐式函数的二阶导数

方法1: 链式法则

syms x y; f = @(x,y) ( x^2 + y^2 - 5 ); dfx = diff(f,x); dfy = diff(f,y); % 一阶隐式导 -dfx/dfy f1 = @(x,y) (-x/y); dydx = -x/y; % 二阶隐式导 d2ydx2 = diff(dydx,x)+diff(dydx,y)*dydx

方法2: 用solve硬解

如果不知道公式也一样可以用solve函数硬解, 不过要稍麻烦一点.

syms x y(x); s1 = str2sym('x^2+y^2=5'); m1 = diff(s1,x) syms dydx; s2 = subs(m1,diff(y),dydx) s3 = solve(s2,dydx) % 再求导后用一阶导替换diff(y) s4 = diff(s3,x) ans = subs(s4,diff(y),s3)

本文作者:JiangOil

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Map Flag Counter