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

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相关的程序设计基础语句。


http://www.kler.cn/news/367822.html

相关文章:

  • 【PHP】ThinkPHP获取请求的域名及前缀
  • 论文阅读(二十六):Dual Attention Network for Scene Segmentation
  • 【2024最新】渗透测试工具大全(超详细),收藏这一篇就够了!
  • Python | Leetcode Python题解之第509题斐波那契数
  • Docker Redis集群3主3从模式
  • IDEA关联Tomcat——最新版本IDEA 2024
  • Python记录-字典
  • 深入解析 MySQL 数据库:防止脏读
  • 获取 Excel 文件中的所有工作表名称,可以通过 OleDbConnection 获取表架构
  • Java 中的正则表达式详解
  • qt EventFilter用途详解
  • 第 24 章 - Elasticsearch 索引生命周期管理
  • k8s知识点总结
  • HttpClient4.3 关于https 中SSL证书请求问题
  • 对角线遍历矩阵模板
  • Git使用问题汇总附带解决方法(持续更新)
  • Pr 视频效果:波形变形
  • 可编辑60页PPT | 大数据基础知识培训课件
  • 禅道源码部署
  • 全能大模型GPT-4o体验和接入教程
  • vim的使用方法
  • 基于Java(SSM框架)+MySQL开发的小型英语学习网站
  • 高级sql技巧
  • 【利用Seaborn进行高级数据可视化】创建美观且信息丰富的图表!
  • Axios get请求数组参数移除默认的[]
  • Python 判断键是否存在字典中(新手入门、实战案例)