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

matlab实现隐函数求偏导数(impldiff函数)

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
/ l1 i$ _4 {+ b
目录5 k5 u8 n5 l* b
总述0 `7 r6 G8 ?/ a& m4 z" d8 r+ R  C0 y' i
函数说明
- i- t% j# p9 F应用举例
$ G  p3 j; a( M4 f例1
3 r. n+ @% W& Y& C例2  T% t+ ]1 W0 v& a5 t4 k' k$ n. q
函数实现
* o( u  R& `( b' G0 z7 m$ B+ _* W& K5 j' o7 }
总述9 [2 E, k3 v  s
5 W. h4 A7 @+ }! l* W( L! D
' a: ]" j# Y; O* l. b( Q
+ w% j" C, h1 T

9 g; A1 c6 r4 }; ]" F, w1 G & z* r$ f. Z: {

" ~6 [5 ~  I2 k# h. }9 I" `7 G由前面给出的算法,可以编写出如下函数来求解隐函数的偏导数。
( V5 S% r# Q8 _
" M7 b! y& K& y5 ?* y函数说明- i& Q1 A8 E1 s  \
function dy = impldiff(f, x, y, n)
' E. H" H" T0 @# W%impldiff" r+ t2 G- ?3 A2 |% m$ |% P. @
%隐函数求导
  B/ |. u0 S4 Z/ x* }' D  Y%  调用格式:$ u, r) ^4 U! I8 S) o
%    f1 = impldiff(f, x, y, n)) E; P6 P- _8 k. ~" y$ |; u0 p
%  其中:f=f(x,y), n为导数阶次
4 ?) T! X, T; u, b6 }%  注意:该函数求解后有时需要手工化简
" r: V. B7 m. D0 I%
- D9 p0 _% ^3 j5 e9 G" K' d5 q% Examples:
8 y* r3 T% T7 P1 K7 o% B%  已知二元隐函数 z=f(x,y),求该函数的偏导数。7 S8 |+ F2 R4 R  m
% MATLAB求解语句:
, A+ b& T6 O0 p%  syms x y
) S7 c+ J7 e8 ~& e2 k  ^%  f=(x^2-2*x)*exp(-x^2-y^2-x*y)
7 F& P: d- F. Q/ O1 E" D%  F1=impldiff(f,x,y,1)  % 1阶
$ X" [* o+ E/ W/ Q+ z; w%  F2=impldiff(f,x,y,2)  % 2阶2 c+ w* l3 Y/ X& c
%  F3=impldiff(f,x,y,3); % 3阶% v8 p7 o9 A/ Y4 k3 ]. Z
/ Z8 ^1 \$ M8 O- l4 X% s8 q

* M2 l: q* `3 Z0 N应用举例
- l6 P0 [" k8 F" c- `例1( @" |5 v6 H5 e; f7 h% Q; e
问题: 已知二元隐函数 , 求该函数的偏导数。
5 P" `- _' i" U- l( q, h& g& n
- ~% ~( t, K& O5 z* v9 X0 f9 ~) U& `代码如下:
0 O  n" Y2 p7 j! I/ k
. T; \( m3 t* a9 J: X" w- t4 Jsyms x y4 h! Q! p- _0 x/ X8 a7 Y
f  = (x^2-2*x)*exp(-x^2-y^2-x*y), e: l% x! h' q  F' A
F1 = impldiff(f,x,y,1)  % 1阶9 a9 W0 }/ V- |- y! |; z1 \$ W1 S
F2 = impldiff(f,x,y,2)  % 2阶
% @& H5 P7 C4 }2 P1 P6 i8 sF3 = impldiff(f,x,y,3); % 3阶2 Z( y/ f2 S' u2 i. j+ [$ x( j7 O
[n,d]=numden(F3); n=simplify(n); F3=n/d  % 化简
" F5 [6 A  C9 D; K$ S) F1 c
9 B& S' E  j3 l. X' U, [# x; i1 R1 {# z2 f! v6 m! S
例2; g0 _9 b( }& b1 P! E, y4 Y( o
问题: 已知二元隐函数 , 求该函数的偏导数。
4 J6 v: ]; t. I# k. O; l0 {7 T7 E6 S; ?3 Y# F; X+ Z
代码如下:1 c! u- M0 D; X4 q. |% a
: G* R. ?  d* r$ b4 Z
syms x y;
2 }2 _$ g- R4 f9 T. C8 Hf=x^2+x*y+y^2-3; : `/ R% Y" h) Z$ \
f1=impldiff(f,x,y,1); F1=subs(f1,x^2+x*y+y^2,3) 3 t  G1 w$ K! u* G! [
f2=impldiff(f,x,y,2); F2=subs(f2,x^2+x*y+y^2,3)
3 ~* a7 c& C. b4 D& Xf3=impldiff(f,x,y,3); F3=subs(f3,x^2+x*y+y^2,3)2 i$ m( [! C- W1 @' q$ R+ b! R. W
f4=impldiff(f,x,y,4); F4=subs(f4,x^2+x*y+y^2,3)
2 e  {" s0 e" P7 i( m) Y9 Y7 [) W( E2 j
; s2 C; K/ j9 a* a
F1,F2,F3分别为:
) T: d" _. x+ i. q" Y* G
# E; G* g* g/ Z7 v$ W: B+ E
  J$ O4 d3 Q9 M6 r/ A4 F" z  D
8 C. h# x7 F' }* P3 fF4为:" s2 v. u( e3 q) o* |* ~, x

- ^+ w' V9 j. R, d) c$ V+ y- d. K$ u0 Z2 S: ?
化简后得:3 |9 Q* }6 i1 e7 I+ L9 G

6 v! S0 D2 k4 ~, w0 j
& X) R/ o2 I( x% E* x函数实现
0 ]; m! Z" Q; A  _7 tfunction dy = impldiff(f, x, y, n); V  I# }% {+ K2 \7 f; K: n( G; n8 e' J
if mod(n,1)~=0
6 `- f, s+ a# _, |    error('n should positive integer, please correct') 6 L. p/ ]/ C* `( @. G8 t% f5 A
else ' s0 _! o" \) @  e/ s% N6 c+ X) M' \
    F1 = -simplify(diff(f,x)/diff(f,y));   dy = F1;) l& k+ p& q6 l. |" [$ O6 A  N
    for i=2:n7 T+ X* {+ F/ {+ J# }
        dy = simplify(diff(dy,x)+diff(dy,y)*F1);
" u- g- ~2 K$ H' _5 S) Z    end
  D. q  I' C' m/ ]) {9 \, Nend5 T1 ^: d$ i2 ^: }1 f
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-1-27 10:45 | 只看该作者
    matlab实现隐函数求偏导数(impldiff函数)
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 04:03 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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