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

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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    目录# N7 R/ q* t& P
    一元函数的导数
    0 e0 V. D5 F3 p  I( `MATLAB函数语法
    1 t6 N' ]8 e  |( M: O6 q, N应用举例
    # {8 V2 h- ?( ~例1 :普通函数求导, }2 l+ B5 I. k/ _5 Y) M1 N
    例2 :复合泛函求导
    - F3 U0 f* V5 c8 I例3 :矩阵函数求导; G; W6 ~: n/ ?: m1 C2 V& `
    多元函数的偏导数2 k/ m5 R. a) x2 O
    MATLAB函数语法
    $ g6 e" h1 ^" o6 H* _- Y9 x7 S应用举例  X  O. g9 N1 `# b& S/ m( }/ _
    例1 :求偏导并绘图+ f- L2 Z4 h) X9 G# Y
    例2 :三元函数求偏导
    ) P0 b8 n& J  e  Z9 Q% x" r' h* W! h. N% B
    一元函数的导数: w# h# t; Y1 ~( e  d, I! V
    MATLAB函数语法; X" c, q8 e, U% y/ {
    • y = diff(fun, x)        % // 函数fun的一阶导数
    • y = diff(fun, x, n)     % // 函数fun的 n阶导数* z/ ^) C  i" }5 {  e
    0 U# _+ X& p; d; V
    6 N/ w+ ~8 e+ d; Y
    注:自变量为唯一符号变量时,可以省去 x x x。; ^! O1 V. E5 P6 E  N) |) s

    7 o' ]0 n# L5 r$ b0 Z应用举例
    * l) G5 I! h5 g0 l例1 :普通函数求导
    , Y5 Y% \4 E$ L4 m6 h$ m2 O7 d8 _3 h给定函数
    3 O9 {* z. k+ p5 p % c$ d! p+ g; b1 K& M" Q; U6 Q
    ​        
    $ e7 d0 ~5 ~' v0 M3 T+ s分别求其一阶导数和四阶导数,并绘制原函数和一阶导数的图像,计算求解50阶导数时所用的时间。
    3 J8 I! X" H1 p( j
    % S6 a  c% h+ j- \
    • 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
      2 U$ v) j+ ]+ d6 U0 N0 f
      c/ p: V/ \) q+ H" H& N! X

    . ?5 ?. k$ O% K根据结果可知diff函数的效率较高。/ m3 z( e0 K9 W0 e
    ( K1 w1 F8 }. K$ Q
    例2 :复合泛函求导- B: V0 h/ y% U/ j
    已知函数 ,推导其三阶导数公式。
    5 a; `. J& H8 J/ B2 Q: w% j1 W' M! v
    分析:该题难点为如何定义 f ( t )( T- t" c2 {. [5 i
    3 j8 x4 L- {" o) ^
    • syms t f(t)
    • G = simplify(diff(t^2*sin(t)*f,t,3)), B, ?. L% i: z, g# P7 I5 d9 k! a
    ; ^9 i/ R' A$ V) Y2 g4 b% G. c
    / {7 w6 @& m2 X' l
    时, F ( t ) 的三阶导数为7 t- p- m7 H; Y8 y5 {
    * ?0 Y" n4 ^5 \/ R% y2 U
    • G0 = simplify(subs(G,f,exp(-t)))
    • err = simplify(diff(t^2*sin(t)*exp(-t),3)-G0)
      , I$ f2 i6 s, m) S3 ~$ ?3 A9 ?
    & x) \) [  ?* i$ {4 t5 q' f$ b
    2 }9 }& v# f- p) k  C( W7 D7 c" o
    例3 :矩阵函数求导% @& e% B+ i, a+ P
    ) s* H; ?, b/ c) U$ N! y

    + o4 U1 U; a7 M/ X% N% [对每个矩阵元素直接求导
    9 z, |5 o; e8 _3 A4 }9 A& E9 N" n: U% o5 E; @6 a
    • 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)
      & P* m$ v1 w5 J% y+ d+ n
    : ~  m5 x9 K+ b- c7 m

    , [1 a/ c% Y. E$ o" a# f! y5 W多元函数的偏导数& B6 Q$ F5 U) J, R- ]
    MATLAB函数语法7 k4 c- d: ~. B$ R+ `& q
    高阶偏导数
    % d, m) }7 q0 V0 |5 n  o
    6 X4 |6 i4 g7 ]. J% ]3 u3 |& A的求法% G. K1 Y* {" k% M
    % L( i/ d9 q! H% W& U
    • y = diff(diff(fun, x, m), y, n)
    • y = diff(diff(fun, y, n), x, m)7 J* S' T! Q" p' Q
    ' v, f6 a  w: f- J

    " E, `9 i' a: y( Q2 G7 i/ L应用举例* d# B1 B5 K9 r. j' N# N
    例1 :求偏导并绘图# x! C5 ^9 n2 k" \' f+ ^5 _2 U! U
    求函数 的一阶偏导 ,并绘图。. _$ F# X& }6 R& H/ f! f

    4 A- D1 _% r- ~8 z* h5 t4 p
    • 求偏导数
      8 x+ m2 H, s- E
    • 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))
      5 ]- G. ?% s3 y7 M4 Z" q: W0 m+ ?
    / i8 a" P3 n7 L3 ]
    ( I6 H) A3 E2 W2 \- E( F
    • 绘制三维曲面
      1 l8 |6 ]4 W" ?& |$ v
    • [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])0 T1 o/ _% a$ e+ C( Z& V  f

    + ]+ r$ b0 p( ^9 T0 n. v , u) M, U- v: d2 [  v: a% M

    : v; h; }: P% ?; x+ P
    2 y$ {! C5 n0 T* w% {. i
    • 绘制引力线(负梯度)
      + o" G! d* Q% E5 ^4 l0 I2 c) f
    • 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)
      ; e" m" ~- |  C0 p8 K7 X+ K0 s

    $ @( R# a- n$ J1 W. J& w4 ? 6 q; [  Z  s! x
      z2 z. |- e0 R7 h% r: _) J

    * u3 k1 w4 j/ a例2 :三元函数求偏导
    - `5 r7 N' T' y& Y! O求函数 的偏导数 - q& r, G# y9 `+ p8 \
    • 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)  e" N; q+ L, {1 x' Y+ c
    2 \" h; X0 J+ V& e

    * L4 [# K. j' k% W8 ~8 H+ ^
  • 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-11-24 02:44 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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