Matlab基础(5)——符号运算

Matlab基础系列教程传送门:
Matlab基础(0)——命令行常用指令
Matlab基础(1)——基础知识
Matlab基础(2)——向量与多项式
Matlab基础(3)——元胞与结构体
Matlab基础(4)——矩阵
Matlab基础(5)——符号运算

Matlab进阶系列教程传送门
Matlab绘图(1)——二维绘图

文章目录

  • Matlab基础(5)——符号运算
    • 创建符号表达式
    • 符号矩阵运算
    • 符号运算
    • 代入/计算结果

符号运算是数值计算的扩展,在运算过程中以符号表达式或符号矩阵为运算对象,实现了符号计算和数值计算的相互结合,使应用更灵活。

创建符号表达式

创建符号表达式,需要先创建符号变量,再使用它们编写表达式。

使用关键字syms创建符号变量:

syms a b c  % 一次可以创建多个变量,变量之间只能用空格衔接
syms A [3 4]  % 创建符号矩阵
% A =
%
% [ A1_1, A1_2, A1_3, A1_4]
% [ A2_1, A2_2, A2_3, A2_4]
% [ A3_1, A3_2, A3_3, A3_4]syms 'A%d%d' [2 2]  % 可以通过占位符%d来改变默认格式
% A =
%
% [ A11, A12]
% [ A21, A22]syms M 3  % 3阶方阵
% M =
%
% [ M1_1, M1_2, M1_3]
% [ M2_1, M2_2, M2_3]
% [ M3_1, M3_2, M3_3]

先将变量创建好,才能将含有该变量字符串转化为符号表达式

syms x
str = 'x^3+2*x+1';  % 不识别2x,即*不可省略
S = eval(str);  % 将字符串转化为符号表达式
% S =
%
% x^3 + 2*x + 1

也可以通过多项式部分提到的函数ploy2sym(p),将系数向量转化为符号表达式

P = [1 2 2 1];
S = poly2sym(P);
% S =
%
% x^3 + 2*x^2 + 2*x + 1

可以通过函数sym(A)将矩阵AAA转化为符号表达式sym格式。只有符号表达式可以与符号表达式计算,数值表达式无法直接与符号表达式进行计算。

A = ones(2,3);
S = sym(A)  % 2*3 sym
% S =
%
% [ 1, 1, 1]
% [ 1, 1, 1]

使用sym()函数处理数值表达式时,应从尽量小的单位入手,以免产生精度上的误差,如

>> sym(1/1234567)  % 错误ans =7650239286923505/9444732965739290427392>> 1/sym(1234567)  % 正确ans =1/1234567% ------------------------------------------------>> sym(exp(pi))  % 错误ans =6513525919879993/281474976710656>> exp(sym(pi))  % 正确ans =exp(pi)

符号矩阵运算

转置

Matlab默认符号属于复数,在使用'求转置时,会自动求出共轭转置。因此若只想求转置,应该使用.'

syms 'A%d%d' [2 3]
% A =
%
% [ A11, A12, A13]
% [ A21, A22, A23]B = A.'
% B =
%
% [ A11, A21]
% [ A12, A22]
% [ A13, A23]

行列式

syms 'A%d%d' 2
% A =
%
% [ A11, A12]
% [ A21, A22]d = det(A)
% d =
%
% A11*A22 - A12*A21

求逆

inv(A);  % A必须是方阵,结果用A中元素表示

求秩

rank(A);  % 返回一个整数

其他

函数 说明
inv(A) 求矩阵的逆,结果用AAA中的元素表示
rank(A) 求矩阵的秩,返回一个整数
eig(A) 求特征值、特征向量
svd(A) 奇异值分解
jordan(A) Jordan标准形运算

符号运算

因式分解

使用函数factor(S)实现

S = poly2sym([1 3 2]);  % S = X^2+3*x+2
factor(S)
% ans =
%
% [ x + 2, x + 1]

也可用于质因数分解

S = sym(276);
factor(S)  % [2 2 3 23]

表达式展开

syms x
S = eval('(x+1)*(x+2)');
expand(S)  % x^2 + 3*x + 2

也可以用于三角函数、指数函数、对数函数的展开

syms x y
S = eval('sin(x+y)');
expand(S)  % cos(x)*sin(y) + cos(y)*sin(x)

表达式化简

syms x
S = eval('sin(x)^2+cos(x)^2');
simplify(S)  % x+1

分式通分

syms x y
S = eval('1/x+1/y');
[n, d] = numden(S)
% n - 分子 n=x+y
% d - 分母 d=x*y

代入/计算结果

通过函数subs(S,old,new)实现,返回值仍是sym类型。

syms F m a Ff
str = 'Ff+F';
S = eval(str);
S = subs(S,F,a*m)  % 用a*m代换F
% S =
%
% Ff + a*mres = subs(S,[a m Ff],[2 10 15])  % 分别给[a m Ff]赋值为[2 10 15]
% res =
%
% 35

Matlab基础(5)——符号运算相关推荐

  1. Matlab系列之符号运算(上)

    Matlab系列之符号运算 前言 创建符号对象 基本操作 符号变量的基本操作 符号表达式的基本操作 四则运算 多项式的操作 符号表达式化简 符号表达式的替换 反函数求解 复合函数 更多精彩等你发现~ ...

  2. MATLAB学习之符号运算

    创建符号变量 数值与符号的转换 数值矩阵转换为符号矩阵 符号替换 本文介绍MATLAB中的符号运算: 1. 创建符号变量 符号常量是不含变量的符号表达式,用 sym 命令来创建符号常量. sym('常 ...

  3. MATLAB基础——设置符号变量sym,syms,symfun,symvar

    在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算:如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数.变量.表达式)进行运算和处理. 这类函数 ...

  4. matlab中两个符号矩阵相加,MATLAB矩阵分析及符号运算.ppt

    MATLAB矩阵分析及符号运算 第三讲 MATLAB的符号运算 -- matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic Math Toolbox 符 ...

  5. matlab数值与符号运算

    matla数值与符号运算 1. 多项式计算 主函数 clc clear close %多项式 x^4-12*x^3+25*x+116 p=[1 -12 0 25 116]%多项式求值函数 polyva ...

  6. matlab 无穷符号,MATLAB强大的符号运算

    符号对象(Symbolic Objects 不同于普通的数值计算)是Matlab中的一种特殊数据类型,它可以用来表示符号变量.表达式以及矩阵,利用符号对象能够在不考虑符号所对应的具体数值的情况下能够进 ...

  7. MATLAB数值计算与符号运算

    符号计算 存放的是精确数据,耗存储空间 ,运行速度慢,但结果精度高: 数值计算则是以一定精度来计算的,计算结果有误差,但是运行速度快. 转载于:https://www.cnblogs.com/shaw ...

  8. MATLAB的符号运算基础

    在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算:如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数.变量.表达式)进行运算和处理.MATLA ...

  9. matlab中exp(liangx),Matlab基础知识

    <Matlab基础知识>由会员分享,可在线阅读,更多相关<Matlab基础知识(122页珍藏版)>请在人人文库网上搜索. 1.Lxy, China Jiliang Univer ...

  10. MATLAB08:符号运算

    pdf版本笔记的下载地址: MATLAB08_符号运算(访问密码:3834) MATLAB08:符号运算 创建符号变量 创建符号数字 创建符号变量 符号运算 符号表达式的化简与代入 符号表达式的化简 ...

最新文章

  1. pytorch shape[1]的解释
  2. python代码大全p-【python】10分钟教你用python一行代码搞点大新闻
  3. ThinkPHP的field方法的用法总结
  4. 4_InfluxDB学习之InfluxDB的基本概念、InfluxDB中独有的概念(Point,series),InfluxDB学习之InfluxDB的基本操作,InfluxDB操作方式,crud
  5. centos7 校正linux系统时间_基于centos7系统部署NTP服务及配置时间定时同步
  6. 新闻发布项目——接口类(BaseDao)
  7. php 附近的距离,PHP查询附近的人及其距离的实现方法_PHP
  8. Qt创建ui界面/界面关联类和LNK2001
  9. 猫途鹰(tripadvisor.cn/)美国地区的酒店、景点、餐厅数据(82万条)
  10. 微信小程序金额千分位
  11. AUTOCAD——制作剪裁图块
  12. Debian 7 安装metasploit
  13. 自定义联系人快速索引栏
  14. 香港坚固金业的黑幕,属于非法投资平台。
  15. 部署Openstack-train版
  16. [时间序列分析][1]--平稳性,白噪声的检验
  17. bodipy荧光染料BDP R6G maleimide/马来酰亚胺,CAS:2183473-32-5
  18. Lottie- 让Android动画实现更简单
  19. MATLAB打开nc文件并读取nc文件数据
  20. php 实现订单打印,电子商城实现订单打印

热门文章

  1. Scientific Reports|比较转录组分析揭示了杀菌剂氰烯菌酯对尖孢镰刀菌的抗性调控机制和杀菌活性
  2. 自动控制原理第2章——自动控制系统的数学模型(思维导图)
  3. win10易升_win10上跑Ubuntu不用虚拟机不用双系统!
  4. 华为网络工程师认证需要哪些学习资料?
  5. c++的vector初始化
  6. ip地址块的聚合,计算其聚合后的可用地址数
  7. 【计算机网络】IP地址
  8. 微信用户扫码登录和登录退出的业务逻辑实现(java版)
  9. github Desktop工具桌面版汉化教程
  10. 目标检测算法YOLO3论文解读