找回密码
 注册
关于网站域名变更的通知
查看: 525|回复: 1
打印 上一主题 下一主题

matlab求解普通函数的导数问题(diff函数的用法)

[复制链接]
  • TA的每日心情

    2019-11-19 15:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2021-1-25 18:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    目录
    , A# ?, I9 L5 X8 A9 S3 d# a" f* [' f一元函数的导数
    : L' a5 H- ~/ n# q$ h: ~MATLAB函数语法* [$ A+ T" V4 p6 |+ Y3 E: A" w0 y' m
    应用举例; K: C4 q7 z. e, i+ Y
    例1 :普通函数求导
    - h1 o* u5 y; j" A例2 :复合泛函求导
    % a2 U) t% [+ l: n6 h例3 :矩阵函数求导
    6 P& l% d& @0 Q3 d7 {! k多元函数的偏导数
      L) n6 S. @* M4 TMATLAB函数语法
    5 S* t) O% P  N  ~应用举例
    & y! j. `3 ^5 z7 a" p例1 :求偏导并绘图+ o$ }8 L0 u: G: }! E$ d
    例2 :三元函数求偏导" D  T8 {& d* {' V

    : @, _, d. ~: C* D; g; o' N4 e一元函数的导数
    9 |( a8 q( R! qMATLAB函数语法
    ! n5 q1 u/ p$ F! e$ Y
    • y = diff(fun, x)        % // 函数fun的一阶导数
    • y = diff(fun, x, n)     % // 函数fun的 n阶导数: J) I5 ~3 k; e* D

    ( A  J4 l# G% x( Z3 U/ J, A& T- K0 V7 C& q4 r* @4 n
    注:自变量为唯一符号变量时,可以省去 x x x。
    : C- N$ ^# s* f
    9 W% K" S: m* ^9 M; W8 p5 N应用举例2 t" b8 u8 @. a6 U# M& O& z$ ]
    例1 :普通函数求导
    * |6 s5 p0 K9 `( C/ U给定函数
    5 E( G, c2 u1 z* }6 F1 e( C
    1 a) v# H7 D) q​        
    , q: c9 k7 ?  h3 S分别求其一阶导数和四阶导数,并绘制原函数和一阶导数的图像,计算求解50阶导数时所用的时间。9 }/ X) T; b- g6 G' H
    ( E9 u0 m$ K, p( S- x9 h
    • syms x; f=sin(x)/(x^2+4*x+3); f1=diff(f)
    • ezplot(f,[0,5]), hold on; ezplot(f1,[0,5])
    • f4 = diff(f,x,4)
    • f41 = collect(simplify(f4),sin(x))
    • f42 = collect(simplify(f4),cos(x))
    • tic, diff(f,x,50); toc7 q  B) g% m. Y( L  x
    5 l& l0 |; B/ {( Y: T; {4 R
    . Y, n1 z4 U$ Q' B2 b
    根据结果可知diff函数的效率较高。
    ) r9 _. @- x' m  }, n7 m
    " H9 a, h9 Q6 p  t! I( H9 {0 C例2 :复合泛函求导7 i, i0 o- l6 v* d4 D
    已知函数 ,推导其三阶导数公式。1 R& D  p$ [6 Q' J( l2 G
    6 }/ {6 Q" d! W* o! b
    分析:该题难点为如何定义 f ( t )
    ! y  k7 x1 ~/ f6 x. F* j0 z' J& {6 `; D) g3 U: {; M4 c( P6 g
    • syms t f(t)
    • G = simplify(diff(t^2*sin(t)*f,t,3))
      ) U4 X* Y2 l! Y2 C- j7 \8 q" k) G
    ; O! M' _- z) C5 e6 I$ o

    0 r; \6 M7 {5 o0 M% [! _' F 时, F ( t ) 的三阶导数为, p" n# ^* a1 `8 k9 f+ M/ J* \

    5 A- T; i: M2 a5 X
    • G0 = simplify(subs(G,f,exp(-t)))
    • err = simplify(diff(t^2*sin(t)*exp(-t),3)-G0)5 c$ h# j: H8 u& _7 u- z0 C
    2 _1 f- V2 l5 o
    9 G# {) b- U! h; G
    例3 :矩阵函数求导
    ) k3 |- r. G, J' R" n 8 E) |: g" n0 y* i
    : I; ?& U  K+ }
    对每个矩阵元素直接求导% F! V( {$ B. j4 P: Y

    ! a0 w$ H& _3 ^- u; M$ C* n. g
    • syms x;
    • H=[4*sin(5*x), exp(-4*x^2); 3*x^2+4*x+1, sqrt(4*x^2+2)],
    • H1=diff(H,x,3)
        i+ F. d3 y  d8 I' x
    * y8 t) w- _. Z$ u' N
    : S% G. n  L4 c: p' [. L# [
    多元函数的偏导数
    , T: E( Q; {$ oMATLAB函数语法
    ! e. q$ R% {; t, S; }  c/ v4 B高阶偏导数1 Q  n6 f' z' A0 P
    - k! Z1 V0 Q  M  b
    的求法
    0 e  ^: C( H* w9 L' `- ^! i* Z5 T# n% i) _- a. I$ ?" \3 v
    • y = diff(diff(fun, x, m), y, n)
    • y = diff(diff(fun, y, n), x, m)0 @; g% p6 I- Z# f0 ?

    4 b9 |9 H; A& L& [2 M" ~( U" h
    应用举例2 R8 N$ a5 N) C$ q( H/ Y1 O: I* c3 d8 c
    例1 :求偏导并绘图. Z( Z4 K. d' _  Z% S
    求函数 的一阶偏导 ,并绘图。
    / ^+ t" c6 b" I" x
    0 P: T) L6 D) B; F( t
    • 求偏导数
      8 C: C% Y2 `6 C6 M  F
    • syms x y
    • z  = (x^2-2*x)*exp(-x^2-y^2-x*y);
    • zx = simplify(diff(z,x))
    • zy = simplify(diff(z,y))8 D! E: h  v0 w- E

    ( b+ _/ ~% L2 M. d* W. n3 B! N  t6 X" ^3 ]! A( |
    • 绘制三维曲面9 p. f  t1 w0 _
    • [x0,y0] = meshgrid(-3:.2:2,-2:.2:2);
    • z0 = double(subs(z,{x,y},{x0,y0}));
    • suRF(x0,y0,z0), zlim([-0.7 1.5])
      + ]! l  S9 }2 P0 k) Q# _
    9 k+ ~6 m: u9 n

    3 X% i. y" B6 S0 r4 H! S
    ( \2 J" u2 i/ F# [& a( ^8 v4 \% i: [/ Z, R* w) ?9 B+ T% W  x
    • 绘制引力线(负梯度)
      ! w) X" w% a( ~( Q$ e
    • contour(x0,y0,z0,30), hold on
    • zx0 = subs(zx,{x,y},{x0,y0});
    • zy0 = subs(zy,{x,y},{x0,y0});
    • quiver(x0,y0,-zx0,-zy0)
      7 K" I) `9 u9 S! O
    2 [! y- g' {4 T  G4 ^

    # I: H$ V+ N" W: U6 c* H9 l& D( G6 W7 k: j5 {$ E$ R* }

    0 H7 a, I/ \1 Y+ [0 |例2 :三元函数求偏导# Y+ F+ B; ^( V( s' ?
    求函数 的偏导数 ( s, p4 D/ j+ s+ t4 J
    • syms x y z
    • f  = sin(x^2*y)*exp(-x^2*y-z^2);
    • df = diff(diff(diff(f,x,2),y),z);
    • df = simplify(df)
      2 B. e5 P2 E7 n8 V

    ) R8 B( b! n& g( C- |; x
    ) v8 `1 ^4 f7 a  [9 p. F# h  u  t
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-1-25 18:45 | 只看该作者
    matlab求解普通函数的导数问题(diff函数的用法)
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-20 15:59 , Processed in 0.125000 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表