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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
( z" L1 t% U" M# J
目录- T% d, h+ q: [1 x
总述4 ~9 s, o* ^( Z5 V* p# s2 f% q; ~
函数说明
% E, m( @+ _# e( v+ Y4 G! ]应用举例
' A6 A3 s0 x, A, M# ?+ ]4 O1 ~例1
4 |$ Z4 Y+ K% O' Y5 h例2" e. N; n$ n6 N7 `
函数实现
& Q$ h2 G/ F" y- z9 a' e7 i% l: e* |4 T. Y2 I' _$ P5 \& ^
总述) O0 \+ @: n2 f( B9 y3 S9 U
; V8 c$ m% I) d4 h; S3 x; _

3 F9 J' @- j9 m
* J2 y! F- R  E; h, I! b6 x* Q" q' v- \
' N- _# \  g# W% G5 | ( [9 K, m- d' G2 s" F
4 m  H. X' r  X+ M4 @
由前面给出的算法,可以编写出如下函数来求解隐函数的偏导数。
1 P' O  ]5 g" s5 ^* ~) y0 \$ g, P- A$ S% w% {$ ?
函数说明% A# r' @: Y. |. i' Q& g/ J' |( b
function dy = impldiff(f, x, y, n)8 W& a* D! P8 T: b- W% b! w' K: h
%impldiff
: r& Z# F* S! e; {. @%隐函数求导3 D3 W" h* p0 D$ ]. i8 Y' R/ P
%  调用格式:7 B1 K9 v) k+ D3 r. Z+ x6 U
%    f1 = impldiff(f, x, y, n)8 A5 c- C1 K7 e8 {! G. O* C
%  其中:f=f(x,y), n为导数阶次( o, `4 \" I0 R! k
%  注意:该函数求解后有时需要手工化简
; ?( W. d! o$ c* T, J4 z; ]%/ y: \% j  o% i+ D
% Examples:2 J9 T# {# ~% I! m1 M' n
%  已知二元隐函数 z=f(x,y),求该函数的偏导数。, F4 \# ?& A% Q5 O
% MATLAB求解语句:4 p2 h# [" T1 {: x/ x
%  syms x y
1 i; X$ o9 E' }  z0 ?5 z2 Y%  f=(x^2-2*x)*exp(-x^2-y^2-x*y)& L$ Q1 b8 r- V, A% _( D. D1 }
%  F1=impldiff(f,x,y,1)  % 1阶
# u& |- M* f# X4 W- j7 d%  F2=impldiff(f,x,y,2)  % 2阶
0 @& q8 {" D1 T1 ]4 Z%  F3=impldiff(f,x,y,3); % 3阶6 q" w# t6 L! W, L

( R. c- V- d6 {" b8 c" _
+ T6 e6 l9 |8 I+ g) G应用举例# E% N% O" m" @( Y9 A/ R
例12 Q% O/ ?# d3 N, }0 h1 B
问题: 已知二元隐函数 , 求该函数的偏导数。. b7 M% Z+ b% t
) `+ ^4 h0 T5 _3 V0 Y
代码如下:
/ Z* b& c( N# |1 Z) D5 @
2 `2 o2 D( n0 N  O' K' T$ x& J9 ~syms x y8 |0 w1 m" a0 H: l- @1 W; P
f  = (x^2-2*x)*exp(-x^2-y^2-x*y)( [* f$ @( `; K2 C9 n& f
F1 = impldiff(f,x,y,1)  % 1阶% I; }/ \! {8 y' X
F2 = impldiff(f,x,y,2)  % 2阶
$ R& Z: C1 a* K5 |* K, L0 gF3 = impldiff(f,x,y,3); % 3阶
9 Y( d3 l7 t( F& b[n,d]=numden(F3); n=simplify(n); F3=n/d  % 化简. R7 K8 \: s6 t& k( q$ l

( f0 J0 y7 a9 ?* N2 t
! g  w6 l  k, S+ j) p例20 w7 F( S( b/ ?8 [! d5 D
问题: 已知二元隐函数 , 求该函数的偏导数。7 Z% k  \" s: T4 e; R  n

/ V8 p  s) @) s" o. _代码如下:
* Z% ]# M+ N. U/ i
# e: ~" j3 n) W& ?4 D( nsyms x y;8 l, L9 x: v8 i/ n
f=x^2+x*y+y^2-3; ! Q; C) [: s3 W$ a+ j: f7 i
f1=impldiff(f,x,y,1); F1=subs(f1,x^2+x*y+y^2,3) 0 W+ B; v1 s! p' v: P" S
f2=impldiff(f,x,y,2); F2=subs(f2,x^2+x*y+y^2,3)
- F" i( x' w# \7 ?f3=impldiff(f,x,y,3); F3=subs(f3,x^2+x*y+y^2,3), ?4 W" P3 g% V( Y
f4=impldiff(f,x,y,4); F4=subs(f4,x^2+x*y+y^2,3)2 L4 F" l8 J" q& e9 k5 R  x6 Q
6 T9 \' s7 h8 y: S$ F, U! o
( a9 ^/ q+ E3 J  j/ Y
F1,F2,F3分别为:! ~9 Z5 C) Q  k3 E/ U; u& R$ |1 U

0 x3 d3 _7 a7 Q! }8 a
6 D, v$ ^# B+ N3 `) b+ ]
5 m* V' X  ~- j* O- q3 YF4为:4 A- U& [; j! g5 J1 w0 ~8 l$ z; V
1 y$ n- e! N1 s0 C% D

9 C. d% ?6 W- a4 i8 `+ ?化简后得:
* w/ n0 l7 T& U/ f+ p# z- h 0 k  l9 S+ n9 b) B' y# N

- s9 x  s4 P1 [4 C* ]& K函数实现( |) T6 R: N9 t9 k' |# e6 f7 Q
function dy = impldiff(f, x, y, n). q# F4 E( o3 V
if mod(n,1)~=0
* c) E$ @6 v6 {  c$ b6 ?) C    error('n should positive integer, please correct')
& i0 r" k  F9 B% a" Eelse
3 o3 X8 f% t# w0 U0 k    F1 = -simplify(diff(f,x)/diff(f,y));   dy = F1;* y, U0 a8 |+ g# H6 {8 B7 P+ ]; f/ |* ]
    for i=2:n
8 B+ `5 y" X3 F' d6 H. i6 v9 B        dy = simplify(diff(dy,x)+diff(dy,y)*F1);
& ?. A" t( \1 @! w% D/ A    end& V1 v. ~- W3 C, ?6 C2 U  s  s! Y
end
& d/ d, x  J6 Z) D+ ^) T
  • 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 11:33 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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