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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
9 E! {6 v4 \( F" I5 Q& F3 w
目录! e: v9 N9 }& H
总述2 p" [) l& f/ X0 ?+ D( [
函数说明2 O/ v% B* b+ e) \! F8 ?0 y! s4 Q
应用举例
9 t1 T! @: E- H8 j- z例1
- r( u" v) e: y! q4 n8 q( _例2
8 {: [% d! m8 D9 `- P8 {4 B& f函数实现2 s0 w1 W# h( h# c

+ ^3 z) s3 F5 T1 i# ^* l! l总述
9 P- A8 z/ A3 s7 a6 E7 s & m0 g7 c% f" ?7 c8 s5 W0 y; F

( F( f( {+ S  u, p( v. k, t+ k
4 U$ n5 ?* o! q
- ^: t- j/ `8 S
1 P( s( D/ ^4 \- M& l4 r7 B% A) Y
: \9 U* r. j0 @由前面给出的算法,可以编写出如下函数来求解隐函数的偏导数。$ b# n" V* h/ I6 i

1 ^7 X9 w6 E' J8 {3 C2 L函数说明. O& i4 g, e7 S3 @, [9 ^8 A
function dy = impldiff(f, x, y, n)3 d/ M& U# w9 Y, Y; L' o
%impldiff- A& Q1 k, U. P+ T" u; ~
%隐函数求导& J$ E2 _$ W. b( L$ y; v4 d
%  调用格式:7 g/ }: A3 p" T  ?# }, Q
%    f1 = impldiff(f, x, y, n)( C  e4 z% _- Q2 A. T/ f+ H
%  其中:f=f(x,y), n为导数阶次
2 K. K! x1 V5 w, i: @) I%  注意:该函数求解后有时需要手工化简
8 F4 |+ t8 Z) O; g1 t%
  l1 s* ~/ K; {9 ~8 i% Examples:: k: v+ s# e, o, c) e0 x) X
%  已知二元隐函数 z=f(x,y),求该函数的偏导数。
- r4 P1 u0 B1 }# p/ a# Y% MATLAB求解语句:
# {8 P% P9 U9 l' B5 F" A%  syms x y, J+ ]  m" d5 u5 X$ T$ k; m
%  f=(x^2-2*x)*exp(-x^2-y^2-x*y)
( B4 N& @' A/ n- u  g9 C%  F1=impldiff(f,x,y,1)  % 1阶6 e( I" U, f7 n9 m1 r% [
%  F2=impldiff(f,x,y,2)  % 2阶7 i" n- p4 l: V
%  F3=impldiff(f,x,y,3); % 3阶
/ w; Y# y' @! r2 Z) j7 |7 a" ^1 D! t0 [: B

5 Y3 k+ O) C7 C) o9 g应用举例, ^: U3 K0 R! j8 F" f, d# B' Y
例1
+ D6 w9 `, }% \2 `问题: 已知二元隐函数 , 求该函数的偏导数。: U; ~/ v: o/ i" l

' B- L5 v# [. x: W+ v- }/ E代码如下:# h$ \3 o# f# N7 p# ^

7 D) k+ i" \  F' s) p5 E. Ssyms x y; L  w% b4 R2 }' A
f  = (x^2-2*x)*exp(-x^2-y^2-x*y)
2 A4 a% w7 h" U" H7 {F1 = impldiff(f,x,y,1)  % 1阶
+ q0 U8 x1 [( {F2 = impldiff(f,x,y,2)  % 2阶
% W+ _9 ~. ~0 f+ H4 t; }8 tF3 = impldiff(f,x,y,3); % 3阶
( a- T6 ?, j5 W, c( A3 e1 a[n,d]=numden(F3); n=simplify(n); F3=n/d  % 化简
% {: q! {( P) i3 k) q7 O
, `) [; i/ \% L( A! s  x3 R7 h2 V  H" `4 V+ Q; }1 ?
例29 }7 ]. M  [; |9 Q3 p  s
问题: 已知二元隐函数 , 求该函数的偏导数。# A7 T$ N; B$ v+ B* u4 y1 t) |

5 h% b4 f  U( X  _0 k代码如下:
# a* S, n3 g8 O; X$ V! R, p" Q6 E6 E. h: p( y0 G
syms x y;; L" {+ q3 b+ d8 S
f=x^2+x*y+y^2-3;
/ O2 ^& \+ a% `$ q5 jf1=impldiff(f,x,y,1); F1=subs(f1,x^2+x*y+y^2,3) * N2 ^% a+ b' c  W
f2=impldiff(f,x,y,2); F2=subs(f2,x^2+x*y+y^2,3)# _# i" x3 c- j1 v! Z
f3=impldiff(f,x,y,3); F3=subs(f3,x^2+x*y+y^2,3)1 K; I5 J' l4 s' L
f4=impldiff(f,x,y,4); F4=subs(f4,x^2+x*y+y^2,3)
9 ]8 ~( N7 T& s* c
2 e) {8 u8 q! h7 @
0 q5 C! X5 m6 i1 Y! n0 FF1,F2,F3分别为:
5 m9 u: S4 n/ J) E1 Z* m
0 v4 E7 x8 ~: v5 @1 z' A( C4 h8 N, \" l, T  i

8 I& |5 x7 V% \F4为:# f3 U+ S  L9 s4 x

8 I  j2 `. l3 K4 g( P4 f4 I
: V7 b6 u/ d4 M化简后得:* {+ c$ X8 _* b4 K. ~' g) u
8 w6 u* {( y' V% |. i2 e, z
6 x) U. N& t5 ^& {
函数实现
# [0 X4 J3 a' A0 F1 y" j" ofunction dy = impldiff(f, x, y, n)
; D. a3 O7 o# W( J# o4 H8 Vif mod(n,1)~=0
) p9 _+ V: O) _4 ~! }5 G) L    error('n should positive integer, please correct')
8 M' j* {" K6 a# o7 {else
- C( O) {- ~9 g    F1 = -simplify(diff(f,x)/diff(f,y));   dy = F1;3 _4 {, p5 z; d# y& o) O
    for i=2:n+ c! u7 L# Y. a# k
        dy = simplify(diff(dy,x)+diff(dy,y)*F1);
0 \" C' l) H; l, y4 M* T5 b1 {) e    end3 ~/ P& ?; T1 q# H5 z" p2 `
end
5 i2 ?$ I- n$ t% s
  • 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-7-20 20:19 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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