[MATLAB]符号计算

article/2025/9/18 23:09:08

符号计算

  • 一、数值微积分
    • 1.1 数值计算与符号计算的区别
    • 1.2 符号对象
    • 1.3 符号常量
    • 1.4 符号变量
      • 1.4.1 符号变量的创建
      • 1.4.2 创建符号矩阵
      • 1.4.3 自由符号变量
    • 1.5 符号表达式
    • 1.6 符号计算的运算符
    • 1.7 符号运算中的函数运算
    • 1.8 符号计算与数值计算的区别
  • 二、符号数字及表达式
    • 2.1 数值数字变符号数字
    • 2.2 符号数字变数值数字
      • 2.2.1 符号数值变数值数字
      • 2.2.2 符号矩阵转化为数值矩阵
      • 2.2.3 符号计算精确度转化函数vpa(x,n)
    • 2.3 化简各种表达式simplify
    • 2.4 符号表达式的置换操作
      • 2.4.1 子表达式置换操作subexpr(自动替换)
      • 2.4.2 子表达式置换操作subs(人为操作)
  • 三、符号微积分
    • 3.1 符号表达式F的极限limit
    • 3.2 符号表达式F的求导diff
    • 3.3 符号表达式F的积分int
    • 3.4 级数求和symsum
    • 3.5 泰勒级数taylor
  • 四、符号方程求解
    • 4.1 符号方程


一、数值微积分

1.1 数值计算与符号计算的区别

数值计算:必须先对变量赋值,然后才能参与运算,运算结果是数值
符号计算:无须事先对变量赋值,而将所得到的结果以标准的符号形式来表示
符号计算的特点

  1. 运算对象可以是没有赋值的符号变量
  2. 以推理解析的方式进行运算,因此不受计算误差累积所带来的困扰

1.2 符号对象

任何符号对象都必须借助专门的sym或syms定义

syms % 是定义符号变量
sym % 是将字符或者数字转换为字符
sys('a+b') % 就是将a+b转化为符号表达式

任何包含符号对象的表达式、方程也一定是符号对象

1.3 符号常量

当数值常量作为sym()的输入参量时,就建立了符号常量
虽然看上去是一个数值量,但已经是一个符号对象了

1.4 符号变量

符号变量是内容可变的符号对象
符号变量的命名规则和数值变量的命名规则相同

1.4.1 符号变量的创建

  1. 单个符号变量创建函数sym
x = sym('a') % 符号变量x的值为a,默认为复数(flag)
x = sym('value', 'flag') % 符号变量x的值为value,flag为数值域(复数、实数、正数)
real -> 实数
positive -> 正数
  1. 多个符号变量创建函数syms
syms x a b real

1.4.2 创建符号矩阵

>> A = sym('[a,b;c,d]')
A =[ a, b]
[ c, d]>> syms a b c d
>> B = [a, b ; c, d]B =[ a, b]
[ c, d]>> B = [a b ; c d]B =[ a, b]
[ c, d]

1.4.3 自由符号变量

解题围绕该变量进行
ax²+bx+c = 0
默认自由符号变量为x

1.5 符号表达式

  1. 符号表达式是由符号常量、符号变量、符号函数运算符以及专用函数连接起来的符号对象
  2. 符号表达式包括:符号函数与符号方程
  3. 区别:符号函数不带等号,符号方程带等号

1.6 符号计算的运算符

关系运算符只有:

==~=

1.7 符号运算中的函数运算

  1. 三角函数和双曲函数
    除atan2外语数值运算相同
  2. 指数和对数函数
    没有log2和log10
  3. 复数运算
    没有提供相角的命令
  4. 矩阵代数命令
    与数值运算相同

在这里插入图片描述

>> syms a11 a12 a21 a22
>> A = [a11 a22 ; a21 a22]A =[ a11, a22]
[ a21, a22]>> det(A) % 计算行列式的值ans =a11*a22 - a21*a22>> A' % 计算转置ans =[ conj(a11), conj(a21)]
[ conj(a22), conj(a22)]>> eig(A) % 计算特征值ans =a11/2 + a22/2 - (a11^2 - 2*a11*a22 + a22^2 + 4*a21*a22)^(1/2)/2a11/2 + a22/2 + (a11^2 - 2*a11*a22 + a22^2 + 4*a21*a22)^(1/2)/2>> 

1.8 符号计算与数值计算的区别

(1)数值计算保留8位有效位数,每一次数值计算有一定的截断误差,重复的多次数值计算就可能会造成很大的累积误差;符号计算不进行数值计算,无截断误差。
(3)符号计算的时间较长,而数值计算速度快。
(4)数值计算中必须先对变量赋值;符号计算无须事先对变量赋值,但必须先定义,计算结果以标准的符号表达式形式给出。

二、符号数字及表达式

2.1 数值数字变符号数字

S = sym(A)
Sc = sym(A, flag)
flag:
有理分数'r'
十进制数'd'
浮点数'f'
估计误差'e'

2.2 符号数字变数值数字

2.2.1 符号数值变数值数字

number = double(number_sys)

2.2.2 符号矩阵转化为数值矩阵

B = eval(A)

2.2.3 符号计算精确度转化函数vpa(x,n)

vpa(x,n)

x是符号或者数值,有效位数是n位(默认是32)

2.3 化简各种表达式simplify

simplify(S)

将S转化为最简短形式
在这里插入图片描述

>> syms x;
>> f=(1/x^3+6/x^2+12/x+8)^(1/3);
>> simplify(f)ans =((2*x + 1)^3/x^3)^(1/3)

2.4 符号表达式的置换操作

2.4.1 子表达式置换操作subexpr(自动替换)

[RS,ssub]=subexpr(S,ssub)

从表达式S中自动提取公因子,记为ssub;
并将ssub置换S中的因子因子,重写S为RS

2.4.2 子表达式置换操作subs(人为操作)

R=subs(S,Old,New) 

新符号变量New替代原来符号表达式S中的变量Old
数值代替所有符号变量则结果转化为数值数据。

>> syms x y
>> ss=x-sin(x)-1/sin(x);
>> subs(ss, sin(x), y)ans =x - y - 1/y

多重替换

R=subs(S,{Old1, Old2…},{New1, New2…}) 

三、符号微积分

3.1 符号表达式F的极限limit

limit(F,x,a) % 默认自变量x趋近于a的极限

在这里插入图片描述

>> syms k t
>> ss = sin(k*t) / (k*t);
>> limit(ss, t, 0)ans =1>> syms k x
>> ss = (1-1/x)^(k*x);
>> limit(ss, x, inf)ans =exp(-k)

3.2 符号表达式F的求导diff

diff(F,v,n) % 自变量v的n阶导

在这里插入图片描述

>> syms x t
>> f=[t^3-exp(x),t/x;t*cos(x),log(x)]f =[ t^3 - exp(x),    t/x]
[     t*cos(x), log(x)]>> diff(f,x,1)ans =[   -exp(x), -t/x^2]
[ -t*sin(x),    1/x]>> diff(f,t,2)ans =[ 6*t, 0]
[   0, 0]>> diff(diff(f, t, 1), x, 1)ans =[       0, -1/x^2]
[ -sin(x),      0]

在这里插入图片描述

>> syms x y
>> g=(x^3*y-5*y)/(2*x^2+7);
>> gy = diff(g, y, 1);
>> subs(gy, [x, y], [1, 2]) %1,2去替换x,yans =-4/9

3.3 符号表达式F的积分int

int(F,v,a,b) % 自变量v从a到b的定积分
int(F,v) % 自变量v的不定积分

在这里插入图片描述

>> syms x
>> int(x*log(x), x, 1, 10)ans =50*log(10) - 99/4

在这里插入图片描述

>> syms a b x
>> f = [a*x, b*x; 1/x, sin(x)];
>> int(f, x)ans =[ (a*x^2)/2, (b*x^2)/2]
[    log(x),   -cos(x)]

在这里插入图片描述

>> syms x y z
>> f = x^2 + y^2 + z^2;
>> int(int(int(f,x),y),z)ans =(x*y*z*(x^2 + y^2 + z^2))/3

3.4 级数求和symsum

symsum(F,v,a,b) % 变量v从a到b的和
symsum(F) % 默认自变量x的区间[0, v-1]求和

在这里插入图片描述

>> syms n
>> f = 1 / (2*n-1)f =1/(2*n - 1)>> r = symsum(f, n, 1, 100);
>> double(r) % 将符号数字转化为数值数字ans =3.2843

3.5 泰勒级数taylor

r=taylor(f,v,a,'Order',n) % 表达式f对自变量v在a处的n阶泰勒展开式。

在这里插入图片描述

>> syms x
>> taylor(exp(x), x, 100, 'order', 5)ans =exp(100) + exp(100)*(x - 100) + (exp(100)*(x - 100)^2)/2 + (exp(100)*(x - 100)^3)/6 + (exp(100)*(x - 100)^4)/24

四、符号方程求解

4.1 符号方程

字符串型
s=solve(‘eq1’,’eq2’,,’eqn’,’var1’,’var2’,,’varn’) 
符号型
s=solve(exp1, exp2,, expn,var1,var2,,varn)

‘eq1’,…,’eqn’:字符串表达的方程 ;
exp1,…,expn:符号表达方程 ;
’var1’,…,’varn’:求解变量名, 省略时symvar确定n个变量;
S:方程组的解,是一个架构数组
若字符串表达的方程 eqn 中不含等号,则表示解方程 f=0
在这里插入图片描述

 [x,y,z] = solve('s+y+z=1', 'x-y+z=2', '2*x-y-z=1',x,y,z)x =1 - s/2y =-(3*s)/4z =1 - s/4

http://chatgpt.dhexx.cn/article/2Y50I593.shtml

相关文章

MATLAB符号运算

在数学、物理学及力学等各种学科和工程应用中,经常还会遇到符号运算的问题。在MATLAB中,符号运算是为了得到更高精度的数值解,但数值的运算更容易让读者理解,因此在特定的情况下,分别使用符号或数值表达式进行不同的运…

matlab 运算符

1、字符串 字符串是用单引号来标示的,例如:SI Have a Dream.,赋值号之后在单引号内的字符即是一个字符串,而S是一个字符串变量。 2、运算符 MATLAB 运算符分为算术运算符、关系运算符和逻辑运算符。 1、算术运算符 矩阵算术运算符 运算符…

将stylus 样式 转换成sass,scss

因为有一个项目使用的是 stylus. 后来的项目使用了 scss, 但是很多样式代码都可以共用的, 就是格式不太一样 要是一点一点来转化 就累死了 就想着网上找到一个工具也可以 能实现快速转换 没想到还真有 npm install -g stylus-converter mac sudo npm install -g s…

@import ‘./common/stylus/mixins.styl‘引起的一系列错误

import ./common/stylus/mixins.styl’引起的一系列错误 环境&#xff1a;vue-cli 4 代码&#xff1a; <template><div><h1>App 组件</h1><button class"btn btn1">按钮1</button><button class"btn btn2">按…

stylus的使用

欢迎访问我的博客地址 : 博客地址 stylus的使用 前提条件是已经有了vue项目&#xff0c;如果没有&#xff0c;请先建立&#xff0c;具体方法看这里https://cn.vuejs.org/v2/guide/installation.html 安装stylus 建立好项目后我们来安装stylus npm install -D stylus-loader s…

CSS预处理框架——Stylus

目录 内容介绍一、特征二、选择器&#xff08;Selectors&#xff09;  1、缩排 :book:  2、规则集  3、父级引用  4、消除歧义 三、变量&#xff08;Variables&#xff09;  1、变量 :mag:  2、标识符&#xff08;变量名&#xff0c;函数等&#xff09;  3、属性…

引入tinymce-vue后调试器报错 Refused to apply styl

今天在使用tinymce-vue的时候&#xff0c;遇到这些报错&#xff1a; 其中橙色框部分是因为没有引入对应插件导致的&#xff08;code , lineheight , indent2em&#xff09;;再我们下载的包中其实已经有了这些插件&#xff0c;只是页面没有引入&#xff0c;我们只需要页面引入就…

html list-style的作用,list-style是什么意思?list-style样式属性详解

本篇文章给大家带来的内容是关于list-style是什么意思?list-style样式属性详解&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。 一、list-style作用与用处 list-style是设置列表li的样式。比如li前面为阿拉伯数字、圆点、实…

.styl格式的CSS样式文件是什么文件

.styl格式的CSS样式文件是什么文件 Stylus 是一个 基于Node.js的CSS的预处理框架 。可以说是一种新型语言&#xff0c;其本质上做的事情与sass/less等类似。Stylus 比less更强大&#xff0c;而且基于nodejs&#xff1b;比sass更符合我们的思路。 最近研究了一下vue.js项目的高…

python中pip模块卸载并重装

** python中pip模块卸载并重装 ** 1、卸载已有的pip python -m pip uninstall pip2、重新安装 将https://bootstrap.pypa.io/get-pip.py中的内容复制下来&#xff0c;保存文件名为get-pip.py&#xff0c;之后cmd进入命令行输入如下命令即可&#xff1a; python get-pip.py

pip的安装和卸载

待安装系统环境 系统&#xff1a;macOS 10.15.5 依赖&#xff1a;Python 2.7.16 查看本机python版本的方法 $ python --versionPython 2.7.16 检测是否安装pip方法 $ pip-bash: pip: command not found command not found的提示说明你还没有安装pip 安装 安装好Python…

python中 pip不慎卸载了,重新安装方法

pip不慎卸载了&#xff0c;重新安装方法 今天不小心把pip给删除了&#xff0c;然后就搜怎么安装。弄了半天才弄好&#xff0c;这边记录一下&#xff1a; 1.下载安装文件 官方网站给出了安装的方法https://packaging.python.org/tutorials/installing-packages/#use-pip-for-…

pip 批量安装和卸载package

文章目录 1、pip批量安装package2、pip批量卸载package3、pip换国内源 1、pip批量安装package 将需要安装的包保存在aa.txt中 cd到aa.txt所在目录&#xff0c;运行&#xff1a; $ pip install -r aa.txt2、pip批量卸载package 将需要卸载的包保存在aa.txt中 cd到aa.txt所在…

两种方法彻底删除pip下载的所有第三方库,第二种最快

快速删除pip所有库 前言第一种第二种方法 前言 昨天有小伙伴在群里问怎么删除所有第三方库&#xff0c;已经太久没人问这种问题了&#xff0c;这让我突然意识到还是有很多小伙伴都是处于初学阶段的&#xff0c;于是今天给大家分享一下两种快速删除第三方库的方法&#xff0c;帮…

python pip 卸载环境内所有的包

那么如何一次性删除所有的包呢&#xff1f;首先需要执行以下代码&#xff1a; pip freeze>modules.txt 这时候就能够把所有的第三方模块的模块名称以及第三方模块的版本号等等信息保存在了这个 modules.txt文件中&#xff0c;之后的操作就是对这个文件进行操作了。 执行如…

pip被卸载了,如何再重新安装

今天不小心把pip给删除了&#xff0c;然后就搜怎么安装。弄了半天才弄好&#xff0c;这边记录一下&#xff1a; 首先这个网站给出了安装的方法https://packaging.python.org/tutorials/installing-packages/#use-pip-for-installing 全英文&#xff0c;看不懂&#xff1f;那就…

Windows下卸载pip的方法

一、卸载命令 在cmd中输入 python -m pip uninstall pip 二、执行命令后&#xff0c;弹出确认提示&#xff0c;输入y&#xff0c;给与确认 三、cmd中输入pip&#xff0c;查看是否安装卸载成功

不小心将 pip 卸载了,重新安装pip

打开 python 安装目录 下的 Scripts 文件夹&#xff0c;在空白处shift鼠标右键&#xff0c;选择在此处打开命令窗口&#xff0c; 在弹出的窗口中执行命令 easy_install.exe pip 即可。 如果 python 安装目录下 的 Scripts 目录中有没有 easy_install.exe 参见 http://blo…

Ubuntu16.04 安装 卸载 pip

实验环境 Ubuntu16.04&#xff1b;VMware15&#xff1b; 问题描述 笔者在虚拟机上安装好Ubuntu16.04&#xff0c; 一段时间之后重新打开准备编译python程序&#xff0c;在安装所需包时发现&#xff0c;pip pip3&#xff0c;指向的都是python2.7&#xff1b; hadoopubuntu:~…

pip 批量完全卸载包

pip 批量完全卸载包 创作背景问题分析解决方法代码详解改 BUG结尾 创作背景 因为我本机环境中安装的第三方库太多了&#xff0c;所以今天我准备把它们都卸载了&#xff0c;但因为太多了&#xff0c;所以不可能手动一个一个来&#xff0c;于是我便写了个小脚本&#xff0c;本文…