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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

4 A6 Y# m3 N5 L目录
& R# x5 t/ m# B3 Q6 j总述
) I" p6 z) U% N. M8 c函数说明0 y1 r' ~7 s8 k( i, M( F; S+ X
应用举例
7 w8 h+ A3 X& P& @3 L; ]/ }例1, R0 s4 M3 j* N7 A
例21 X2 a0 y, G# K' `6 X
函数实现& ?9 K4 A$ m; V
# o, d; B2 S- [# P9 M
总述- U- R2 U* ^0 I; |
2 A, I* A# X7 G$ j1 d

5 t( ?6 O6 m1 c " N1 Q. f6 f( z1 Y# V- K7 G+ w: B- |

7 R" q4 S- n" I2 \3 O+ L; O
/ |- B/ Q8 K- w7 ^1 b9 Y' u% z! J8 }+ Z& \+ J, p
由前面给出的算法,可以编写出如下函数来求解隐函数的偏导数。
4 G2 ^% i* H3 x" T+ X. i
7 a* {# s5 T* e$ b函数说明0 x3 m7 C4 Q, Z6 Z$ r! M4 g
function dy = impldiff(f, x, y, n)7 j; w+ j5 X" a, f" Z9 }" F- n% ]4 A
%impldiff
) x* B$ B4 y* I3 H- F%隐函数求导9 K$ a! Z1 Y. S( E5 K- c$ Y
%  调用格式:% B9 Q6 j$ d- n0 y; P9 l# d
%    f1 = impldiff(f, x, y, n)7 o" X* \1 d0 f$ a8 I- N
%  其中:f=f(x,y), n为导数阶次5 N2 t, y; ?5 g# F. p8 M2 o% x5 i
%  注意:该函数求解后有时需要手工化简2 x1 Z& J% J8 C9 y
%
, D7 I/ y% ~* M& d! }9 y% Examples:
- x9 t0 t) p; U! W5 z. D%  已知二元隐函数 z=f(x,y),求该函数的偏导数。: c" C0 f9 U& V( |1 m/ \
% MATLAB求解语句:9 [0 x: l) D* o
%  syms x y
! t6 ^7 I, [5 |; Y# Z" b9 d%  f=(x^2-2*x)*exp(-x^2-y^2-x*y)
6 |  y2 T7 o9 I1 C% V# D- h" M/ H%  F1=impldiff(f,x,y,1)  % 1阶
/ |# H0 h8 C5 [%  F2=impldiff(f,x,y,2)  % 2阶
0 D) y: X9 F- i  T  @2 n%  F3=impldiff(f,x,y,3); % 3阶
( A' o, {# @  a7 i- w3 R! \4 J' ^  m* ?5 F

$ d  L: p' }. x6 [应用举例1 z- D) s( F% W9 u
例12 c8 Z/ B5 |  Z  w, w
问题: 已知二元隐函数 , 求该函数的偏导数。8 L) _8 Q5 j4 W) l0 T

2 Z1 X: a* J  N代码如下:
7 I$ g% n4 y! N: [# ]! d( s: d- c  X! S; V6 h
syms x y. _* d% M$ j4 j
f  = (x^2-2*x)*exp(-x^2-y^2-x*y)
8 b, w# p% R6 E- Y. E; x' g; A: DF1 = impldiff(f,x,y,1)  % 1阶
, n( m8 [+ o6 f( b4 X) F1 gF2 = impldiff(f,x,y,2)  % 2阶
, E! a/ Z4 y& a' XF3 = impldiff(f,x,y,3); % 3阶" M# y0 z; N' ?* Z0 q6 _) q7 Z# @
[n,d]=numden(F3); n=simplify(n); F3=n/d  % 化简1 d2 v8 S5 h7 I! i/ `
6 {0 ]6 h) c4 V% G! x- G

, m7 w7 _1 E: H例21 B2 R4 ]) P  h! q- S* r. r# T( Y& s
问题: 已知二元隐函数 , 求该函数的偏导数。# S2 f0 M, |( Q# {5 G- ^* G" u

# c, `& ]* T+ ^6 e0 U代码如下:' A# H: e# O  J" r# h

- ~- s8 M7 t! B3 W6 qsyms x y;
/ y9 U' v. M7 b9 ~) X2 zf=x^2+x*y+y^2-3;
$ R: e( B! W5 k9 N8 e1 }f1=impldiff(f,x,y,1); F1=subs(f1,x^2+x*y+y^2,3)
& R! l9 i# J0 ~8 N9 H0 E9 H1 Ff2=impldiff(f,x,y,2); F2=subs(f2,x^2+x*y+y^2,3)
9 t  V" d* z8 |8 [f3=impldiff(f,x,y,3); F3=subs(f3,x^2+x*y+y^2,3)/ k- K/ }9 l3 D& d6 M9 v
f4=impldiff(f,x,y,4); F4=subs(f4,x^2+x*y+y^2,3)
0 w8 ?, K/ `: B0 [% y
$ h) p# d9 Q* E* v) W2 ]% }" U6 `* p' f; v5 ]
F1,F2,F3分别为:
4 L+ b. p* u' c 0 g2 v" [! s3 l8 K

, _4 q( X0 a$ r3 E) _7 U7 ?) C& u6 K8 Z: {. m+ \
F4为:
8 F% Z3 ]) _2 d: V* P/ ^7 h+ d 9 q- i" [/ a! t$ g
8 e8 d& i- g# t+ J! f5 y
化简后得:  `; W8 N7 Q' p" f

/ B; o) @9 l! W: e4 A  `
/ H2 C' u( |! m' y, g函数实现
6 @9 b/ _8 X7 T) I' vfunction dy = impldiff(f, x, y, n)
% o$ b/ K1 M' P/ Y: rif mod(n,1)~=0
* l( j) r" g! E  l  D) }    error('n should positive integer, please correct')
5 c( ^* B- e# m9 ^else 9 k4 W. W* a$ C1 A3 w- o  }8 V0 s
    F1 = -simplify(diff(f,x)/diff(f,y));   dy = F1;0 f# V' J/ P$ O* a( [
    for i=2:n' ~  ~) g, {  b8 N3 }$ S' I7 }
        dy = simplify(diff(dy,x)+diff(dy,y)*F1);& K; _# ~/ i8 Q" B4 V9 l1 I
    end% E+ q7 z0 ]# L4 q
end
0 t' T0 m6 w# M$ x5 b, k, B
  • 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-10-6 13:33 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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