如何用matlab求隐式函数的导数
如何用matlab求隐式函数的导数
隐函数求导的例子
假设有一个圆 \(x^2+y^2=5\) , 要求在某个点上的切线的斜率.
我们可以把式\(x^2+y^2=5\)中的每一项对\(x\)求导, 可以得到:
\]
\]
再将 \(\frac{dy}{dx}\) 看成一个变量, 可以对式\((2)\)求解得到: $ \frac{dy}{dx}= - \frac{x}{y}$ , 这就一阶导, 也是圆上每一个点上切线的斜率.
对式\((2)\)再次求导:
\]
求\(\frac{d}{dx}(2y \frac{dy}{dx} )\) 这一项要用乘法法则, 注意 \((\frac{dx}{dy})^2\) 和 \(\frac{d^2y}{dx^2}\) 是不同的.
\]
将$ \frac{dy}{dx}= - \frac{x}{y}$ 代入式\((4)\) , 将 \(\frac{d^2y}{dx^2}\) 看做变量可以求解得到:
\]
这个就是二阶导.
如何用matlab求隐式函数的一阶导数
方法1: 用二元隐函数存在的定理
具体来说, 二元函数的求导代码是这样写的:
- 把等号右边的式子全移到左边
- 分别对式子求 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函数强解隐函数导数, 具体做法如下:
- 把y写成y(x)让matlab把其当做与x相关的导数
- 直接对式
x^2+y(x)^2=5
求导可得到这样的结果:2*x + 2*y(x)*diff(y(x), x) = 0
- 用变量
dydx
来代替原有的diff(y(x), x)
- 用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求隐式函数的导数的更多相关文章
- 2018-02-17 中文代码示例[译]Scala中创建隐式函数
前言: 学习Scala时, 顺便翻译一下自己有兴趣的文章. 代码中所有命名都中文化了(不是翻译). 比如原文用的是甜甜圈的例子. 原文: Scala Tutorial - Learn How To C ...
- c语言中的隐式函数声明(转)
本文转自:http://www.jb51.net/article/78212.htm 在c语言里面开来还是要学习c++的编程习惯,使用函数之前一定要声明.不然,即使编译能通过,运行时也可能会出一些莫名 ...
- 万恶之源:C语言中的隐式函数声明
1 什么是C语言的隐式函数声明 在C语言中,函数在调用前不一定非要声明.如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码.以下是一个样例: int main(i ...
- C语言的“隐式函数声明”违背了 “前置声明” 原则
这个问题来源于小组交流群里的一个问题: 最终问题落脚在 : 一个函数在main中调用了,必须在main之前定义或者声明吗? 我在自己的Centos上做了实验,结果是函数不需要,但是结构体(变量也要)需 ...
- 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) ...
- 关于gcc内置函数和c隐式函数声明的认识以及一些推测
最近在看APUE,不愧是经典,看一点就收获一点.但是感觉有些东西还是没说清楚,需要自己动手验证一下,结果发现需要用gcc,就了解一下. 有时候,你在代码里面引用了一个函数但是没有包含相关的头文件,这个 ...
- Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...
- Scala学习二十一——隐式转换和隐式参数
一.本章要点 隐式转换用于类型之间的转换 必须引入隐式转换,并确保它们可以以单个标识符的形式出现在当前作用域 隐式参数列表会要求指定类型的对象.它们可以从当前作用域中以单个标识符定义的隐式对象的获取, ...
- matlab求曲线长度
曲线段在上的弧长为采用积分所求弧长s=∫√(1+y'²)dxmatlab求出各点的导数,然后按照上式积分 clear>> x=1:0.1:10;>> y=rand(1,leng ...
- Scala 隐式(implicit)详解
文章正文 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 1.Spark 中 ...
随机推荐
- 从改一个老项目开始的PHP踩坑记
php所有版本的地址: https://windows.php.net/downloads/releases/archives/ 访问控制器时省略了index.php报No input file sp ...
- HarmonyOS 应用生命周期有哪些? 按返回键会调用哪些生命周期?
UIAbility 生命周期: onCreate :页面初始化,变量定义,资源加载. onWindowStageCreate:设置 UI 界面加载.设置 WindowStage 的事件订阅. onFo ...
- VSCode 打开ESP32工程问题
一.无法跳转 问题现象: 打开ESP32工程头文件提示波浪线不跳转,如下图所示: 解决办法: 删除工程中.vsccode文件夹下的所有文件 VSCode 中打开命令行搜索 ESP-IDF 找到`添加 ...
- VUE+element页面按钮调用dialog
VUE+element通过按钮调用普通弹框(弹框页面独立出一个dialog页面,非在同一个页面文件里) 代码如下 <el-dialog> <el-button type=" ...
- Spire.Doc 生成长图
按模板生成内容,转换成长图保存: Document doc = new Document("A_BizRpt.docx"); ....... Image[] imgs = doc. ...
- PHP游戏线下线上陪玩平台APP小程序H5源码开发多少钱?可用于家政,陪诊,陪伴服务等
做陪玩app项目,不少创业者们都比较头疼该如何去选择软件系统!目前软件市场上,陪玩app平台的软件系统五花八门,价位也是参差不齐.创业者们都比较纠结是定制开发,还是选择开元源码二次开 发? 前两天成都 ...
- Ubuntu虚拟机ROS的安装与使用
ROS安装 直达链接 安装ROS2 使用鱼香ROS的一键安装: wget http://fishros.com/install -O fishros && bash fishros 进 ...
- Linux环境下:程序的链接, 装载和库[可执行文件的装载]
现代操作系统如何装载可执行文件? 给进程分配独立的虚拟地址空间 建立虚拟地址空间和可执行文件的映射关系 把CPU指令寄存器设置成可执行文件的入口地址,启动执行 可执行文件在装载的过程中实际上是映射的虚 ...
- C数据结构:哈夫曼树算法实现与应用
学习哈夫曼树(编码) 带权二叉树 认识WPL 最优二叉树 构造哈夫曼树的过程 哈夫曼树的应用 建立哈夫曼树 代码如下: 结构体代码部分 建立操作代码 找到最小结点(※难点) 附上建立哈夫曼树源代码 带 ...
- pageoffice在线编辑word文件并禁止选中
一.整篇文档禁止选中 wordDoc.setDisableWindowSelection(true); //禁止word的选择文字功能 二.根据条件判断是否禁止选中 比如:选中内容超过一定字数,取消选 ...