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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

0 C! c" {/ I) A% v1 c目录; g5 Y4 E; _& Z& b
总述. d$ R  ]; ~- Q
函数说明" ?, I* A3 ^7 I! ]8 h
应用举例
5 F9 Z" z4 |" V/ {% O例1
; k6 N. u) Y3 [( O3 I% B例2
# a; p6 o) v  N9 z- ^1 i8 w函数实现6 g8 l) K6 `7 i+ F

; u" o" W' Z. n, i5 C' R总述
, M1 s2 g2 L0 S7 s; w, | / n5 L. u# U. c+ w7 Z
8 y/ b, V8 h) R

. t! E4 [! Y8 E( Y' s% J; M
$ R: S, ?' G/ E$ Y ! j+ q# R6 L( E

7 i; z. l6 B2 O, T% h由前面给出的算法,可以编写出如下函数来求解隐函数的偏导数。+ M: ~( W* [! R) ^1 I3 j& |) ?# Q
  S3 K# y6 S* _0 ~  h* i# [; O0 L
函数说明
+ R0 g# ?2 l  J; Ufunction dy = impldiff(f, x, y, n): ~, _" y6 _2 l2 Y% j% q8 q3 j
%impldiff& O# _4 x$ c. [
%隐函数求导
: t, Z( M4 p, }' _' d%  调用格式:) W, f' U* b# i( [* T1 B
%    f1 = impldiff(f, x, y, n)
" Y- p& O* g, s1 b5 T%  其中:f=f(x,y), n为导数阶次5 c/ z7 s0 R7 k5 n! Q- j, C
%  注意:该函数求解后有时需要手工化简1 V3 k% q0 L6 V. C
%
9 s" R# c- D/ P" X0 P: ?5 S$ k% Examples:
" y, M8 [/ {/ `0 {! Q6 ?  ?%  已知二元隐函数 z=f(x,y),求该函数的偏导数。7 I* u3 V0 h  h: a
% MATLAB求解语句:  s2 o/ v4 D2 x" E+ r4 f. j/ i
%  syms x y
3 e4 e; V0 o. w% D% n9 r/ }%  f=(x^2-2*x)*exp(-x^2-y^2-x*y)( M* k* D7 X. @7 |+ o
%  F1=impldiff(f,x,y,1)  % 1阶
5 M$ t& N* [2 j* c/ F. D: R%  F2=impldiff(f,x,y,2)  % 2阶  y2 I- f* O( b
%  F3=impldiff(f,x,y,3); % 3阶. z: i$ o. u" ]0 W# L% V
" Z4 n- _' t5 k/ G( g7 N
. o* }9 v. q, j" e) W" L6 }
应用举例
/ `0 U# |) q( ^$ t+ c! {例1
9 Q1 W/ N* n: C" e! P问题: 已知二元隐函数 , 求该函数的偏导数。
- ]2 c" V( O: V
0 }) E, Y# N7 {  [! T, p- A$ L代码如下:% S0 N  }8 \" _
/ R5 E3 u& h( q$ N
syms x y
9 Q9 _8 d- m0 K: D3 If  = (x^2-2*x)*exp(-x^2-y^2-x*y)
! Z7 ]8 N2 Z; IF1 = impldiff(f,x,y,1)  % 1阶
+ d& \/ `& L, z7 U, L( K9 T8 O% |F2 = impldiff(f,x,y,2)  % 2阶
% w* l$ H# ~6 m" XF3 = impldiff(f,x,y,3); % 3阶
/ X8 N- @! S6 }[n,d]=numden(F3); n=simplify(n); F3=n/d  % 化简
: W, O! Q* \! K1 ]! U
, u+ W5 t! K/ n- F/ U- ?' Y  s4 w2 t9 b6 E
例2" P9 U5 {! ^+ w  _: c0 u! M
问题: 已知二元隐函数 , 求该函数的偏导数。
8 s4 M8 ?2 f3 k2 H  p; y$ r
' T, X; E0 e% h# \代码如下:
" C! W" `" Z$ \3 w' r( ^5 O: [; _0 E! s# Q. A
syms x y;: W" J+ k5 k. w4 Q8 l: y- c" k4 s) T
f=x^2+x*y+y^2-3;
2 j+ o, i1 y- \1 d/ c& Y. gf1=impldiff(f,x,y,1); F1=subs(f1,x^2+x*y+y^2,3) ( ~3 n' y+ E3 L; o( Q
f2=impldiff(f,x,y,2); F2=subs(f2,x^2+x*y+y^2,3): Q1 A* l& e7 g% ~1 h4 B
f3=impldiff(f,x,y,3); F3=subs(f3,x^2+x*y+y^2,3). n2 x3 L7 {8 j" U0 m' U
f4=impldiff(f,x,y,4); F4=subs(f4,x^2+x*y+y^2,3)2 l# ~/ L% k* M. h* C
- V  `8 N+ K+ y
; S& F) q' f3 M  ]
F1,F2,F3分别为:, t+ p6 r! m6 h

& g/ {' I: g+ C$ N! f' e  p8 r+ S! a& H
0 t9 P. B) Y+ m. W" V9 N
F4为:+ w- N/ Q% s; E+ P

6 e& d5 ]; [9 f$ N+ S3 Y: B. O: m0 x* x% J! R( e# w+ F5 d& r& o
化简后得:
, L/ e' ~! x4 S, ^$ P$ j
- b$ E& _) ~, d, A' W! S* r
/ e- t' I# Q5 b  D- C函数实现6 k; f6 k5 z  @
function dy = impldiff(f, x, y, n)
. G4 X: s: B* T, Aif mod(n,1)~=0
5 o7 ^2 v4 j) ^4 y    error('n should positive integer, please correct') 3 t3 d2 q0 f( I! s
else * K2 F  R% t5 Q/ ^* X5 s
    F1 = -simplify(diff(f,x)/diff(f,y));   dy = F1;6 t, u7 \1 [) \
    for i=2:n
2 b* j0 x% C  b5 M3 ~* A/ C        dy = simplify(diff(dy,x)+diff(dy,y)*F1);
4 V/ r5 k& e0 S5 ^8 m    end
1 r5 J# s& g8 Y' Bend7 a2 n: O# J! H$ X8 @
  • 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-8-2 12:03 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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