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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

* f  l8 d9 [4 t& k. {8 J, m7 h目录
9 s& z: K- J" {4 `总述4 U  I; O" _' f# t
函数说明
4 [" X( f+ |, E" B应用举例
* B. X- C5 w% G2 S5 \2 e例1
/ L' i7 J! f; B' f例28 c8 b- |: f* W$ {; T; V
函数实现8 f" s* k6 w  R9 P* u

+ m! |# m* {# E: x总述% n' M  d- p" t, l: G3 \3 E

- f8 s4 O7 T" O
  Y, |" J0 M& p/ A' ?
4 m3 b' e% c- ~4 X* S/ l& G* p6 M9 b# Y+ T

0 Q1 f, x) g7 L. V; j
% u1 {. z5 E+ A2 ], T) ^由前面给出的算法,可以编写出如下函数来求解隐函数的偏导数。" E1 w- [3 _, f- M& K% g; _1 {
, _, a2 \  u! v$ i2 q2 b. u
函数说明
" O; B& t  {1 c$ T! F" Tfunction dy = impldiff(f, x, y, n)
4 G4 `$ U3 z$ ]/ E8 `%impldiff
4 a; D  |9 T9 _$ A+ _%隐函数求导
0 |# q! N/ P5 |4 Z%  调用格式:4 C% O* l! D# m
%    f1 = impldiff(f, x, y, n)
4 S8 \' V4 u+ ?+ a& C2 c%  其中:f=f(x,y), n为导数阶次6 ?  q( t* a! M4 Z1 N
%  注意:该函数求解后有时需要手工化简
$ B: k& N( K8 q8 P%  i5 T$ q4 t2 B4 }9 I. J5 @
% Examples:
/ V$ P3 u3 F" z' _% L  R$ @1 y%  已知二元隐函数 z=f(x,y),求该函数的偏导数。$ F# R% y; g( l( J- I2 i' _8 b8 ]
% MATLAB求解语句:
; x: q* n# u" k) d2 L9 b! _$ A%  syms x y7 Z2 \* R! ~; m' Y+ y$ L
%  f=(x^2-2*x)*exp(-x^2-y^2-x*y)
# d% G+ B( |9 T( e( B( i. w%  F1=impldiff(f,x,y,1)  % 1阶# j: v6 L& u+ n% e: m1 i2 [
%  F2=impldiff(f,x,y,2)  % 2阶. Z9 ~4 F2 i( S# B& F' N- v) {
%  F3=impldiff(f,x,y,3); % 3阶& B4 b8 N! D2 W* u

/ v, b& q- O2 B4 C- c/ N6 A
6 r# t0 q0 A: ~/ d2 u! u应用举例; `1 V7 h) _# [3 @+ r: G2 ?8 X
例1" L  X8 i2 }  l. X1 S
问题: 已知二元隐函数 , 求该函数的偏导数。
! b# n9 X# v' T+ _
4 P- e7 a+ W) J" A代码如下:
. p* a0 A$ q/ o8 g8 ]- s1 ~8 f
# D0 c- Q5 P$ i/ @4 Asyms x y
1 @, V$ ]0 ]8 W' ^0 L" of  = (x^2-2*x)*exp(-x^2-y^2-x*y)( k; E4 C- z' `4 r4 Y+ ~8 `% \6 z1 p
F1 = impldiff(f,x,y,1)  % 1阶
- o& F) E6 d$ K3 CF2 = impldiff(f,x,y,2)  % 2阶9 S- X3 m+ d" A: W4 ?
F3 = impldiff(f,x,y,3); % 3阶
/ U) x7 H) G$ s; ~[n,d]=numden(F3); n=simplify(n); F3=n/d  % 化简
) h+ n  l% T% K* r" D" F/ Z. V0 P% v1 S( n( s% c
' v# `8 C# G, G6 L. [2 R7 W1 r
例2, ]0 B  ~5 _1 [( x' A/ Y9 f' b) x
问题: 已知二元隐函数 , 求该函数的偏导数。
6 z& p1 v+ u( F# Q& m  _- w( k' g- S) K5 I; D. a6 K& |
代码如下:
8 n+ w& J9 S+ m6 ^) F1 {
4 H- g* i6 @' Dsyms x y;
* f- f# H" U( D# V6 ?1 ~( h8 |+ af=x^2+x*y+y^2-3; 3 _; B; F, v- Z5 n3 ]! q& }% P
f1=impldiff(f,x,y,1); F1=subs(f1,x^2+x*y+y^2,3)
  J! L# y) O7 E6 \4 }) s* @5 qf2=impldiff(f,x,y,2); F2=subs(f2,x^2+x*y+y^2,3)
- N: D- ]9 H' ]f3=impldiff(f,x,y,3); F3=subs(f3,x^2+x*y+y^2,3)
  i* j* s( w3 v4 A7 _, vf4=impldiff(f,x,y,4); F4=subs(f4,x^2+x*y+y^2,3)
0 }5 `% M7 z1 T3 f! b8 h  ?
" z4 d( P0 k0 _+ l8 S  i% x* h" V
F1,F2,F3分别为:  d" c( A# b5 m9 ?
3 j+ w7 F- t7 ^/ K) R, A2 T/ t. \
( e: A+ u, m: e+ B$ o! Y

( W7 }$ b: w, [& eF4为:
8 R- W/ `6 H* f$ t  j
$ G  N) y5 W+ P6 A$ F, ]) V! q- Z& v) ]7 A6 I2 [: u4 V
化简后得:
: {* M7 v! q! m
! x9 P. L6 e: V+ f% n2 \: l* ?/ f2 h' m& q9 r# [+ j1 r
函数实现4 r8 T4 w8 K! W! L- U% L$ A: C
function dy = impldiff(f, x, y, n). W6 |1 \5 s. k1 z' [$ U( B3 o
if mod(n,1)~=0
, E" c4 e! I8 B$ L" U0 u    error('n should positive integer, please correct') 2 p$ Z4 w. N3 V% B+ T$ z* T. G
else
2 D. _; t0 |: ~3 _6 W    F1 = -simplify(diff(f,x)/diff(f,y));   dy = F1;
* l3 a1 `4 u1 I  Y, J" Z/ |    for i=2:n0 n3 x% B9 ~% x" @  `3 k
        dy = simplify(diff(dy,x)+diff(dy,y)*F1);! I8 J. e( a$ r2 h
    end
5 d7 m! F" Z7 }2 Q$ nend4 t) ~8 T9 c- y/ F% i
  • 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-1 06:21 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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