如何用matlab求隐式函数的导数

隐函数求导的例子

假设有一个圆 \(x^2+y^2=5\) , 要求在某个点上的切线的斜率.

我们可以把式\(x^2+y^2=5\)中的每一项对\(x\)求导, 可以得到:

\[\begin{equation} \frac{d(x^2)}{dx} + \frac{d(y^2)}{dy}\frac{dy}{dx} = \frac{d(5)}{dx} \tag{1} \end{equation}
\]
\[\begin{equation} 2x+2y\frac{dy}{dx} = 0 \tag{2} \end{equation}
\]

再将 \(\frac{dy}{dx}\) 看成一个变量, 可以对式\((2)\)求解得到: $ \frac{dy}{dx}= - \frac{x}{y}$ , 这就一阶导, 也是圆上每一个点上切线的斜率.

对式\((2)\)再次求导:

\[\begin{equation} \frac{d}{dx}(2x) + \frac{d}{dx}(2y \frac{dy}{dx} ) = 0 \tag{3} \end{equation}
\]

求\(\frac{d}{dx}(2y \frac{dy}{dx} )\) 这一项要用乘法法则, 注意 \((\frac{dx}{dy})^2\) 和 \(\frac{d^2y}{dx^2}\) 是不同的.

\[\begin{equation} 2 + 2 \times ( \frac{dx}{dy} )^2 + \frac{d^2y}{dx^2} = 0 \tag{4} \end{equation}
\]

将$ \frac{dy}{dx}= - \frac{x}{y}$ 代入式\((4)\) , 将 \(\frac{d^2y}{dx^2}\) 看做变量可以求解得到:

\[\frac{d^2y}{dx^2} = - \frac{y^2+x^2}{y^3}
\]

这个就是二阶导.

如何用matlab求隐式函数的一阶导数

方法1: 用二元隐函数存在的定理

具体来说, 二元函数的求导代码是这样写的:

  1. 把等号右边的式子全移到左边
  2. 分别对式子求 x 和 y 的偏导
syms x y;
f = @(x,y) ( x^2+y^2-4 ); dx = diff(f(x,y),x);
dy = diff(f(x,y),y); ans = - dy/dx

方法2: 用solve硬解

如果你不知道公式, 还可以用solve函数强解隐函数导数, 具体做法如下:

  1. 把y写成y(x)让matlab把其当做与x相关的导数
  2. 直接对式x^2+y(x)^2=5求导可得到这样的结果: 2*x + 2*y(x)*diff(y(x), x) = 0
  3. 用变量dydx来代替原有的diff(y(x), x)
  4. 用solve函数解dydx
syms x;
g = str2sym('x^2+y(x)^2=5'); dgdx = diff(g,x) dgdx1 = str2sym('2*x + 2*y(x)*dydx = 0') solve(dgdx1,str2sym('dydx'))

如何用matlab求隐式函数的二阶导数

方法1: 链式法则

syms x y;

f = @(x,y) ( x^2 + y^2 - 5 );

dfx = diff(f,x);
dfy = diff(f,y); % 一阶隐式导
-dfx/dfy f1 = @(x,y) (-x/y); dydx = -x/y; % 二阶隐式导
d2ydx2 = diff(dydx,x)+diff(dydx,y)*dydx

方法2: 用solve硬解

如果不知道公式也一样可以用solve函数硬解, 不过要稍麻烦一点.

syms x y(x);
s1 = str2sym('x^2+y^2=5'); m1 = diff(s1,x) syms dydx;
s2 = subs(m1,diff(y),dydx)
s3 = solve(s2,dydx) % 再求导后用一阶导替换diff(y)
s4 = diff(s3,x)
ans = subs(s4,diff(y),s3)

http://www.codebonobo.tech/post/b0003_隐函数求导/

如何用matlab求隐式函数的导数的更多相关文章

  1. 2018-02-17 中文代码示例[译]Scala中创建隐式函数

    前言: 学习Scala时, 顺便翻译一下自己有兴趣的文章. 代码中所有命名都中文化了(不是翻译). 比如原文用的是甜甜圈的例子. 原文: Scala Tutorial - Learn How To C ...

  2. c语言中的隐式函数声明(转)

    本文转自:http://www.jb51.net/article/78212.htm 在c语言里面开来还是要学习c++的编程习惯,使用函数之前一定要声明.不然,即使编译能通过,运行时也可能会出一些莫名 ...

  3. 万恶之源:C语言中的隐式函数声明

    1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码.以下是一个样例: int main(i ...

  4. C语言的“隐式函数声明”违背了 “前置声明” 原则

    这个问题来源于小组交流群里的一个问题: 最终问题落脚在 : 一个函数在main中调用了,必须在main之前定义或者声明吗? 我在自己的Centos上做了实验,结果是函数不需要,但是结构体(变量也要)需 ...

  5. Matlab:显(隐)式Euler和Richardson外推法变步长求解刚性问题

    一.显示Euler 函数文件:Euler.m function f=Euler(h,Y) f(1,1)=Y(1)+h*(0.01-(1+(Y(1)+1000)*(Y(1)+1))*(0.01+Y(1) ...

  6. 关于gcc内置函数和c隐式函数声明的认识以及一些推测

    最近在看APUE,不愧是经典,看一点就收获一点.但是感觉有些东西还是没说清楚,需要自己动手验证一下,结果发现需要用gcc,就了解一下. 有时候,你在代码里面引用了一个函数但是没有包含相关的头文件,这个 ...

  7. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)

    object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...

  8. Scala学习二十一——隐式转换和隐式参数

    一.本章要点 隐式转换用于类型之间的转换 必须引入隐式转换,并确保它们可以以单个标识符的形式出现在当前作用域 隐式参数列表会要求指定类型的对象.它们可以从当前作用域中以单个标识符定义的隐式对象的获取, ...

  9. matlab求曲线长度

    曲线段在上的弧长为采用积分所求弧长s=∫√(1+y'²)dxmatlab求出各点的导数,然后按照上式积分 clear>> x=1:0.1:10;>> y=rand(1,leng ...

  10. Scala 隐式(implicit)详解

    文章正文 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 1.Spark 中 ...

随机推荐

  1. ubuntu 防火墙命令

    # 防火墙状态,如果输出显示 Status: inactive,表示 UFW 处于禁用状态 sudo ufw status # 关闭防火墙 sudo ufw disable # 启动防火墙 sudo ...

  2. SpringMVC学习二(日期参数/数据保存/重定向)

    接受的参数为日期类型 controller进行数据保存 Controller如何进行重定向跳转 1.对于前端页面传来日期类型的数据时如何进行处理,有两种方法 1.1在对应的Controller中插入代 ...

  3. 04.2 go-admin前后端打包为一个服务上线

    目录 一.思路: 二.打包go-admin-ui为静态文件 a.修改配置文件 b.打包 c.复制dist到go-admin的static目录里 三.配置go-admin a.配置路由 b.访问页面 视 ...

  4. LVS负载均衡(1)-- LVS概述及LVS网络模型

    目录 1. 负载均衡集群概述 2. LVS理论基础 2.1 LVS常用术语 2.2 LVS数据调度原理 2.3 LVS工作模型 2.3.1 NAT模型 2.3.2 DR模型 2.3.3 TUNNEL模 ...

  5. SQL如何删除所有字段都相同的重复数据?

    SQL Server数据库:有时候在处理数据时会遇到不加主键的表,导致数据表内出现了一模一样的数据,刚开始第一时间想到的方式是,把两条数据全部删除,然后再插入一条,但是这种可能数据量比较少的话,还可以 ...

  6. 🔥架构师狂掉1024根头发,总算搞定SSL通配证书

    架构师狂掉1024根头发,总算搞定SSL通配证书 经过许多个日日夜夜的持续开发(掉了1024根头发),总算搞定了v1.11.0版本,修复和解决了许多问题,也支持CDN和OSS证书的部署. v1.11. ...

  7. fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器

    fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器 从繁琐到简单,简洁好用的海报生成器 我很高兴向大家推荐一款令人兴奋的工具--Fastposter海报生成器.作为一名开发者,我 ...

  8. 圣诞快乐 - Splashtop 2020 年回顾及未来展望

    ​ 我们很高兴 Splashtop 的远程访问解决方案能够在这个充满挑战的时期为全球的组织和教育机构提供帮助. 实际上,2020 年 Splashtop 的每日使用量增加了400%!不仅如此,我们还增 ...

  9. 2022最新的Centos6.10安装mysql8.0

    一.系统源替换 1.备份系统源 (1)进入源的默认路径 cd /etc/yum.repos.d (2)查看一下 (3)备份 cp CentOS-Base.repo CentOS-Base-Back.r ...

  10. 现代农业|AIRIOT智慧农业管理解决方案

    ​ 智慧农业是现代化技术在农业领域的应用和成果,其中物联网技术在促生产.保产量和降本增效方面起到了至关重要的作用.运用传感技术和软件平台系统对农业生产进行智能化平台化管理,解决掉传统农业问题的诸多痛点 ...