当前位置: 首页 > news >正文

Matlab学习03-符号的替换及运算(接上一篇)

在上一篇的学习中,我知道了符号变量的声明👇

 Matlab学习02-matlab中的数据显示格式及符号变量-CSDN博客

接下来开始学习符号运算相关的内容,并学习最为核心的matlab程序设计。之前的学习都是为了程

序设计做铺垫,程序设计又是为了其它的项目需求做铺垫,例如数字信号处理,数字图像处理都要

用到matlab的程序设计,也可以用其它编程语言对数字图像进行处理,后期会去学习使用Java语言

来编写代码并对数字图像进行处理,当前的学习都以matlab为主。 

目录

一,符号替换 

二,常用的符号运算

1,diff函数

 2,int函数

3,simplify

4,solve函数 

1)求解单个方程

2)求解方程组:


 

一,符号替换 

 在matlab中,subs函数(substitute :替代品)可以用于符号变量的替换,该命令适用单个符号矩

阵,符号表达式,符号代数方程和微分方程中的变量替换,该函数的调用方法如下:

  1. subs(f,x_{new}),其中:

    1)f:表示需要被替换的符号表达式或者是符号方程式。

    2)新的符号变量 x_{new} :用来替代符号表达式或符号方程中旧的符号变量 x 。

    如果用具体的数值型符号变量来替代符号变量  x ,就会和符号变量  x  的系数进行运算。

    例如,我有一个符号方程式:f=sin(x)+5*x==0   % 自变量 x需要提前声明为符号变量即syms x

    接着我传入两个参数到sub符号替换函数中:

    subs(f,6)

    f 表示符号方程式f=sin(x)+5*x==0 ;

    6 表示一个数值型的符号变量

    对应的效果如下 ↓ 


    可以看到,数值型的符号变量 6 可以与旧的符号变量 x 前的系数 5(系数也是数值型符号变

    量),进行算数运算:5*x=5*6=30
     
  2. subs(f,x_{old},x_{new})

    其中:x_{old} 表示被替换的符号变量,x_{new} 表示指定的新符号变量。

    相较于只能传入两个参数并且只能替换掉自变量 x 的上一个subs函数而言,这个函数可以指

    定要替换的符号变量,而不仅仅局限于自变量 x 。

    依旧是 f=sin(x)+5*x==0 这个符号方程式,现在我不想替换自变量 x,只想替换自变量 x前的

    系数 5 ,此时,我需要先传入符号方程式 f,接着传入被替换的符号变量 5,最后传入指定的

    新符号变量 6。如下↓

二,常用的符号运算

可以用数字代替符号得到数值,符号运算的种类很多,在这里我先学习常用的符号运算,其它的使

用方法都大同小异,如果再遇到有意思的符号运算,我再补充到文章里面。

1,diff函数

 diff 全写为differential:微分的,差别的。顾名思义就是求微分或差分的符号函数。该函数所需传入的参数如下:

根据matlab给出的函数解释,可以知道diff函数有三种用法,由于一般都习惯于将函数用字母 f 表示,因此,我在这里用函数 f 表示函数 x。其中:

  1. diff(f):对符号函数 f 进行微分运算。一般默认是对自变量 x 进行求导。

    现在我有一个符号表达式,如下:

    现在我使用 diff(f) 函数对符号表达式进行求导操作,结果如下:

    % 口诀:幂函数求导,摘帽减一。
     
  2. diff(f,n):符号函数 f 对指定变量 n 进行微分运算。

    在上一个函数中只能对自变量 x 进行求导,但如果我想对变量 n 进行求导,就需要使用可以

    传入两个参数的diff(f,n) 函数,其中的变量n,可以是符号表达式f=x^n幂函数中的自变

    量x(底数),也可以是变量 n(幂)。如果我想对自变量x求导,可以写成diff(f,x),如下:


    显而易见,效果和diff(f)一样。

    如果我想对自变量n(幂)求导,可以写成diff(f,n),如下:

    % 此时,幂函数变成指数函数,底数x为常量,指数n为自变量。

    % 由指数求导a^{x}=a^{x}lna,可得符号表达式f的求导 f'=(x^{n})'=x^{n}lnx
     
  3. diff(f,n,dim):计算符号函 f对自变量或指定变量 ndim 阶导数, dim 是正整数。

    不管是传入一个参数的diff函数还是传入两个参数的diff函数,都只能进行一阶求导运算,如

    果想要求二阶及以上的导,就需要使用可以传入三个参数的diff函数。最后一个参数dim为求

    导的次数。例如,符号表达式 f=x^n 对自变量 x 求 二阶导:

    % 因为在求导过程中是对自变量x求导,因此,变量n作为系数可以看成是常数直接提出去,

    % 只对x^{n-1}求导,由幂函数求导,可得(x^{n-1})'=(n-1)*x^{n-2},最后再乘上系数n,

    % 二阶导的结果就是n*(n-1)*x^{n-2}

 2,int函数

在matlab中,int函数(全写为:integral 积分的)可见该函数是用于求积分的符号函数。

需要注意的是,求积分有两种:不定积分和定积分。定积分相较于不定积分就是多了上下限并能够

求出具体的积分结果。

和求导数的diff函数类似,求积分的int函数也有三种:

  1. int(f):求符号表达式f关于自变量的不定积分。

    有一个符号表达式 f=x^2,现在使用int函数对其求不定积分:

    求不定积分在高数中有具体的讲解。并且可知,积分和求导是相反的操作,例如

     x^{3} 求导的结果是3*x^2,即 \frac{1}{3}*(x^{3})'=x^{2},因此 x^{2} 的不定积分为:\int x^{2}=\frac{1}{3}*x^{3}+C
    之所以要在求出来的不定积分后面加上常数C,是因为不定积分的“不定”二字已经告诉了我

    们,算出来的结果没有固定的值。由于常数C在求导时,会变成0:

    \frac{1}{3}*x^{3} ,  \frac{1}{3}*x^{3}+1 ,\frac{1}{3}*x^{3}+2\frac{1}{3}*x^{3}+3,... 的导数都是  x^2

    对   x^2 求不定积分,不能确定具体是哪一个表达式,因此需要加上常数C(C=0,1,2,3,4....)。

    又例如,对符号表达式 f=x^n 求不定积分,也是一样的求解:

    可以看到,f=x^{n}的不定积分结果有两种可能:

    1) 当幂 n=-1时,f=1/x,根据过的常用求导等式,可知(logx)'=\frac{1}{x}

    2)   当幂 n 不等于-1时,f就是幂函数,因为求导是摘帽子,所以求积分就是戴帽子并且前面

    乘带的帽子就行。【在数学运算上,一定要加上常数C,不加就是错误答案,没分。】
     
  2. int(f,n):计算符号表达式 f 关于变量 n 的不定积分。

    这个函数可以计算符号表达式 f 关于指定变量 n 的不定积分,而不是默认的自变量x,例

    如,我不想让符号表达式 f=x^n 对自变量x求不定积分,而是对变量n求不定积分,如下:

    此时,幂函数为指数函数,根据指数函数的求导公式,(a^{x})'=a^{x}loga,可得\frac{(a^{x})'}{loga}=a^{x}

    因此,\int a^{x}=\frac{a^{x}}{loga}+C,替换成上式中的变量,即\int x^{n}=\frac{x^{n}}{logx}+C
     
  3. int(f,a,b)int(f,n,a,b):计算符号表达式f关于默认变量或指定变量n从a到b的定积

    分。在求定积分时,结合不定积分的结果再借助牛顿莱布尼兹公式就可以求出常数C。
    其中:

    1)a表示积分的下限,类似于区间的起始位置,a<b。
    2)b表示积分的上限,类似于区间的结束位置,b>a。
    3)n表示符号表达式f对指定的变量n就行求定积分。

    例如,现在我让符号表达式 f  f=x^n 对 变量 n求定积分:

3,simplify

在matlab中,simplify函数用于包含和式,根式,分数,乘方,指数,对数,三角函数等的表达

式的化简。可以将复杂的符号表达式转换为更简单或更易于理解的形式。

例如,符号表达式 f=x^2 + 2*x + 1 可以利用完全平方和公式化简成 f=(x + 1)^2,如下👇


 

simplify函数也可以将分式  f= (x^2 - 1) / (x - 1) 上下约分化简:


f=\frac{x^2-1}{x-1}=\frac{(x+1)(x-1)}{x-1}=x+1
 

也可以根据已知的勾股定理a²+b²=c² 可以直接算出sin(x)^2 + cos(x)^2 的结果,如下👇

需要注意的是,simplify函数虽然并不总是能找到最简单的形式,结果可能依赖于表达式的复杂

性。对于某些复杂的表达式,简化可能需要较长的计算时间。但整体上还是很有用的。

4,solve函数 

在matlab中,ssolve 函数用于求解方程或方程组的解。它可以处理符号方程(使用符号变量)和数

值方程(使用数值变量)。solve 函数的主要作用是找到能使给定方程成立的变量值。

该函数调用方法如下:

可以看到,有关solve函数的使用有很多种,这里就拿其中几个来做例子,剩下的如果感兴趣的话,可以自己去探索。

 

1)求解单个方程

 当求解一个符号方程式或者是数值方程式的自变量x的值时,只需要使用solve(f,x)这个函数即可,其中:

  1. f:要求解的符号方程式或者是数值方程
  2. x:需要返回的指定变量x取值结果

解方程很简单,这里不赘述。 


2)求解方程组:

当一个问题使用一个方程式无法解决问题,而需要列出两个及以上的方程式时,这些方程式就组成了方程组。需要求几个变量,就得列 几个方程。例如,有两个变量x,y未知,这个时候,就需要列出两个同时包含这两个变量的方程,如下,由方程f1和方程f2求解出x和y的取值结果:

可以看到,得到的解在结构体中,如果想要知道求解的x和y结果是多少,就需要将结果赋值给一个

变量,之后通过变量来获取结构体内的x和y的值:


需要注意:
使用solve函数得到的解是以符号变量的形式表示的,而不是具体的数值。这种符号解可以在后续

的计算中继续使用,具有更高的灵活性。

【个人ps:因为是求解符号表达式的解,得到的变量自然也就是符号变量】

 如果需要数值解,可以使用 double 函数将符号解转换为数值形式。

至此,符号变量的使用,符号的替换及符号的运算等相关的内容学习完。

有问题请在评论区留言或者是私信我,回复时间不超过一天。 

接下来就要开始学习matlab相关的程序设计基础语句。

相关文章:

Matlab学习03-符号的替换及运算(接上一篇)

在上一篇的学习中&#xff0c;我知道了符号变量的声明&#x1f447; Matlab学习02-matlab中的数据显示格式及符号变量-CSDN博客 接下来开始学习符号运算相关的内容&#xff0c;并学习最为核心的matlab程序设计。之前的学习都是为了程 序设计做铺垫&#xff0c;程序设计又是为了…...

Windows中API-磁盘管理笔记

硬盘是由一组堆积的盘片组成类似于圆柱体组成&#xff0c;每个盘片的数据都以电磁方式存储在同心圆或轨道中&#xff0c;轨道的最小可寻址单元是扇区&#xff1b;基本磁盘&#xff1a;最常用于windows的存储类型&#xff0c;指的是**包含分区的磁盘。**在基本磁盘上只能创建和删…...

010 操作符详解 上

写代码的实质是在写方法体 —— 刘铁猛 操作符概览 操作符本质 操作符的本质是函数的“简记法” 操作符 简写Add函数 34 等同Add(3,4)操作符不能脱离与它关联的数据类型可以说操作符就是与固定数据类型关联的一套算法的简记法 如下图所示算法的简记法 操作符的优先级 可以使…...

【贪心算法】(第十篇)

目录 加油站&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 单调递增的数字&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 加油站&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCode&a…...

029.爬虫专用浏览器-抓取跨域#document下的内容

一、iframe下的#document是什么 #document 是一个特殊的 HTML 元素&#xff0c;表示 <iframe> 元素内部的文档对象。当你在 HTML 页面中嵌入一个 <iframe> 元素时&#xff0c;浏览器会创建一个新的文档对象来表示 <iframe> 内部的内容。这 个文档对象就是 #…...

SIP 业务举例之 Call Hold(呼叫保持)

目录 1. Call Hold(呼叫保持)简介 2. 信令流程 呼叫保持 呼叫恢复开始 恢复通话完成 3. 本例 Call Hold 建立了几个 Dialog? 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习…...

eks节点的网络策略配置机制解析

参考链接 vpc-cni网络策略最佳实践&#xff0c;https://aws.github.io/aws-eks-best-practices/security/docs/network/#additional-resourcesvpc cni网络策略faq&#xff0c;https://github.com/aws/amazon-vpc-cni-k8s/blob/0703d03dec8afb8f83a7ff0c9d5eb5cc3363026e/docs/…...

【C】用c写贪吃蛇

1.输入正确的账号密码及其用户名&#xff0c;登录成功进入贪吃蛇游戏界面&#xff0c; 2.随机生成蛇头★、食物▲的位置(x,y)&#xff0c;并使用□打印地图 3.使用w s a d按键&#xff0c;完成蛇头的上下左右移动 4.蛇头碰撞到食物后&#xff0c;吃下食物变成蛇身的一部分●…...

qt QLineEdit详解

一、概述 QLineEdit 是 Qt 框架中用于创建单行文本输入框的类。它非常适合用于接收用户输入&#xff0c;例如用户名、密码或其他简单的文本信息。它提供了许多有用的编辑功能&#xff0c;支持多种输入模式和文本限制&#xff0c;并支持撤销、重做、剪切、粘贴以及拖放等功能。…...

DevEco Studio的使用 习题答案<HarmonyOS第一课>

一、判断题 1. 如果代码中涉及到一些网络、数据库、传感器等功能的开发,均可使用预览器进行预览。 正确(True)错误(False) 错误(False)回答正确 2. module.json5文件中的deviceTypes字段中,配置了phone,tablet,2in1等多种设备类型,才能进行多设备预览。 正确(True)…...

鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题

1. TCP数据传输粘包简介 在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中&#xff0c;我们演示了TCP数据粘包的表现&#xff0c;如图所示&#xff1a; 随后解释了粘包背后的可能原因&#xff0c;并给出了解决TCP传输粘包问题的两种思路&#xff0c;第一…...

【华为路由】OSPF多区域配置

网络拓扑 设备接口地址 设备 端口 IP地址 RTA Loopback 0 1.1.1.1/32 G0/0/0 10.1.1.1/24 RTB Loopback 0 2.2.2.2/32 G0/0/0 10.1.1.2/24 G0/0/1 10.1.2.1/24 RTC Loopback 0 3.3.3.3/32 G0/0/0 10.1.2.2/24 G0/0/1 10.1.3.1/24 RTD Loopback 0 4.4.4…...

【C++初阶】一文讲通C++内存管理

文章目录 1. C/C内存分布2. C语言中动态内存管理方式3. C内存管理方式3. 1 new/delete操作内置类型3. 2 new和delete操作自定义类型 4. new与delete的原理4. 1 operator new与operator delete函数4. 2 内置类型4. 3 自定义类型 5. 定位new表达式(placement-new)6. malloc/free和…...

Vue学习笔记(九、简易计算器)

在这个案例中&#xff0c;我们使用v-model分别双向绑定了n1、n2操作数&#xff0c;op操作选项和result计算结果&#xff0c;同时用绑定了等号按钮事件。 由于是双向绑定&#xff0c;当input和select通过外部输入内容时&#xff0c;vm内部的数值也会改变&#xff0c;所以calcula…...

Maven 不同环境灵活构建

需求: 使用 Maven根据不同的构建环境&#xff08;如开发、测试、生产&#xff09;来定义不同的配置&#xff0c;实现灵活的构建管理。 需要Demo项目的可以参考&#xff1a;我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件&#xff0c;所以使用 spring.profile…...

第三十篇:TCP连接断开过程,从底层说明白,TCP系列五

上一篇《第二十九篇&#xff1a;图解TCP三次握手&#xff0c;看过不会忘&#xff0c;从底层说清楚&#xff0c;TCP系列四》说了TCP的三次握手&#xff0c;接下来我将讲解TCP四次挥手。 既然有连接就有断开&#xff0c;谈到这里&#xff0c;有的同学可能会想&#xff0c;不就是…...

代码随想录算法训练营第七天| 哈希表理论基础 454.四数相加II 383.赎金信 15.三数之和 18.四数之和

454. 四数相加 II 题目 给定四个包含整数的数组 A, B, C, D&#xff0c;计算有多少个元组 (i, j, k, l) 使得 A[i] B[j] C[k] D[l] 0。 解题思路 先计算数组 A 和 B 的所有组合和&#xff0c;并存入哈希表 map 中&#xff0c;键为组合和&#xff0c;值为该和出现的次数…...

搜维尔科技:Manus新品发布Metagloves Pro专业版,专为高精度需求的客户打造,尤其是人形机器人产业与人机工效研究使用

manus新品发布Metagloves Pro专业版&#xff0c;专为高精度需求的客户打造&#xff0c;尤其是人形机器人产业与人机工效研究使用 搜维尔科技&#xff1a;manus新品发布Metagloves Pro专业版&#xff0c;专为高精度需求的客户打造&#xff0c;尤其是人形机器人产业与人机工效研究…...

Spring Boot实现的动态化酒店住宿管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理酒店客房管理系统的相关信息成为必然。开发…...

数字IC后端实现Innovus |给各种IP子模块添加port buffer和antenna diode万能脚本

我们之前分享过在hierarchical flow后端实现中为了确保顶层flatten时timing signoff和physical signoff看到的情况和模块级看到的情况一致&#xff0c;我们会在模块io port添加io port buffer&#xff08;主要是timing&#xff0c;antenna一致性&#xff09;。实际上在芯片级我…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

HTML版英语学习系统

HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具&#xff0c;使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章&#xff0c;系统朗读帮助练习听力和发音&#xff0c;适合跟读练习&#xff0c;模仿学习&#xff1b;实时词典查询 - 双…...