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

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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    目录
    + _7 V  p+ n) w0 Y5 w一元函数的导数5 x$ {; V# e) K/ `) G( T
    MATLAB函数语法
    , M( }3 B# o" J应用举例
    0 z& {' y; V" A$ H: I例1 :普通函数求导
    $ Y3 f* N2 k" Y: K例2 :复合泛函求导
    7 I+ Y' T8 N+ e; r例3 :矩阵函数求导+ E8 i9 R" a' n9 D9 }: W7 V: P
    多元函数的偏导数
    + g  J) I+ _+ d/ f; E5 Q4 GMATLAB函数语法4 R2 Z+ ^& N; g
    应用举例
      O5 c5 x  V7 V( @0 T6 B例1 :求偏导并绘图
    - Z( n: H. W8 y9 {例2 :三元函数求偏导
    6 p, a6 @+ n7 W4 ~7 D1 u$ i3 s* f6 h
    一元函数的导数8 z/ g0 K4 O8 X6 ?; q
    MATLAB函数语法" v6 E7 [0 m$ @1 f0 o+ ~/ `
    • y = diff(fun, x)        % // 函数fun的一阶导数
    • y = diff(fun, x, n)     % // 函数fun的 n阶导数/ d9 z" B$ y( K1 V. z) b: L
    $ k# G9 @* m( m6 L" a. v9 n
    ) P5 d' @+ F0 A9 o7 N0 k
    注:自变量为唯一符号变量时,可以省去 x x x。
    0 L% b3 `  ?2 v9 x0 G5 n
    7 b0 \- ?5 i: Q% Y1 N+ b应用举例1 X; P3 ?( W) @1 x+ @: ?- R
    例1 :普通函数求导
    0 b; w, D8 U8 F( H3 c- Q, B9 o给定函数
    2 }) g! t. r7 Q- P
    : A9 D+ D2 s% l​        7 e0 M/ j! b0 t" `4 L7 Y* Z
    分别求其一阶导数和四阶导数,并绘制原函数和一阶导数的图像,计算求解50阶导数时所用的时间。
    . `) o! @/ f8 L9 x
    8 x" T6 }. V! F0 T! e7 K9 ~
    • 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); toc' d3 X, }: R+ t/ ?7 n
    0 z6 Q* d: Z8 u6 C- n3 b9 V

    & E$ X& F$ n3 ]0 M- S- v5 H1 t根据结果可知diff函数的效率较高。6 `1 Q! @- m0 Z" R
    ) r6 b4 g7 H8 u8 a& E! x
    例2 :复合泛函求导: P5 d  C- g4 _. _: J7 r/ k
    已知函数 ,推导其三阶导数公式。: ~8 d# R" Z' p+ l, s
    1 K$ m8 ^& ]5 L, j. d: |. C
    分析:该题难点为如何定义 f ( t )
    * Y$ _" Y) j9 Y7 |  A' L. a. L" ?; }
    $ U6 _1 P- ^- s3 n/ U
    • syms t f(t)
    • G = simplify(diff(t^2*sin(t)*f,t,3))
      : A. O- Q9 q/ R; V9 b/ B2 X, X: F

    6 }- ~  T. K. B
    , J. n8 [5 `1 ~* w 时, F ( t ) 的三阶导数为( r0 Q/ q7 c) M9 V! Q9 \: R& `

    0 u3 \4 y  J( P/ \; P3 T  S' p8 Z
    • G0 = simplify(subs(G,f,exp(-t)))
    • err = simplify(diff(t^2*sin(t)*exp(-t),3)-G0)
      . a( ^5 Q, e: H' B7 {7 w

    ; R: \6 w7 k9 U* H8 y! D" ^8 r. z
    例3 :矩阵函数求导) j; z: e+ A& x( m! I

    # P' u" s1 ]7 }, m4 Q* q! h/ Z  Y' L5 C/ \5 M
    对每个矩阵元素直接求导
    * i2 @3 W7 }- T, ~! L
    $ m. H2 @. w% C3 O6 f* h( Y2 [4 c
    • 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)
      8 M# ?+ N6 T" d! O$ u; P7 M: z. c

    6 Y+ B. _" i8 `8 ~9 `7 ^# Y2 {  D) L% a1 y0 V" l( h
    多元函数的偏导数
    * ]! G, Y  z  J3 K9 ^  I5 |5 U* p/ UMATLAB函数语法
    . V: c5 h: w+ Z3 F9 A; Q, }高阶偏导数
    & k$ q/ e9 Y1 t4 c* U8 ^' }& A 2 ]% W6 N8 P4 W* v) j: l
    的求法
    8 u; O5 h- S1 v: F; b- @
    2 d' e0 [5 e/ n; H$ H7 I
    • y = diff(diff(fun, x, m), y, n)
    • y = diff(diff(fun, y, n), x, m)
      $ z) J5 [# a1 k% `' l6 x8 {. Y6 Y% V
    - _2 a0 m3 _1 V
    1 g! {/ a, m7 v) _; @. U
    应用举例
    / R% ?6 b- _- l6 j9 R2 o' ]( }例1 :求偏导并绘图
    & G" W$ x6 V$ U9 b- l3 {7 Y求函数 的一阶偏导 ,并绘图。
    - D. t2 ^! V' u/ M9 N6 G0 q0 V8 f, K+ f
    • 求偏导数
      ! D! v4 F$ @( V% j  Z. t& g% ?8 X$ Q
    • 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))
      7 f* l1 q5 l% i# ?- y# v

    $ R) r, j1 C* r$ v7 O" R! A! |& F
    • 绘制三维曲面, t7 x* N% K/ m0 X8 d
    • [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])
      + M) y' z: C- G

    2 I" V: l# C0 K& ?( J+ w3 o3 v " w( h* ^% X) q/ C9 {

    9 J+ T( ^2 k% W' \
    ( T- S7 I3 j" z) V9 @( {  U- x
    • 绘制引力线(负梯度)0 B2 g9 x) R  I
    • 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)( p8 W' r/ R* p3 V
    8 X" B1 k: ?: w; M6 B( j

    ! L4 k# `0 C6 d' ]6 Q# D( P
    7 a2 R& G7 [! E' S( r2 I" P3 L+ [6 |
    : j: s: A$ {2 @5 U9 U, H& `5 t, _+ [例2 :三元函数求偏导, D& W4 }. g9 I1 ?0 A5 J+ x
    求函数 的偏导数
    9 e3 j3 z7 ]1 I. ^6 U& y- 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)
      % X+ N2 [  `* I

    0 h6 Z2 t* R( m8 Q% [# e3 n/ d5 i  [; n
  • 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-8-2 18:26 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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