MATLAB符号变量的创建和简单运算

2023-11-11

声明:本文章中数据来自清风老师数学建模课程

MATLAB符号变量的创建和简单运算

1、符号变量

1. 1 符号变量的创建

使用syms创建符号变量

syms x  		%  创建一个符号变量,sym是symbolic的缩写
syms a b c		%  创建多个符号变量

在这里插入图片描述

1.2 符号方程的创建

方法一:先创建符号变量后创建符号方程

syms a x		% 创建符号变量
y = a*x+x^2		% 创建符号方程

方法二:str2sym命令创建,在MATLAB 2017b后可以使用

y = str2sym('a*x+x^2') 

创建符号方程后,y的类型在工作区中观察到为1x1sym

3 符号矩阵的创建

%% 符号矩阵的创建
syms alpha
M = [cos(alpha)  -sin(alpha);
       sin(alpha)  cos(alpha)]

在这里插入图片描述

2、符号运算

了解如何符号变量后,我们可以使用符号变量进行一些简单的运算、多项式运算、分式运算等等

2.1 简单运算

%% 简单运算
syms a b c d e
y = a + b
% a + b
x = c - d
% c - d
y1 = x*y
% (a + b)*(c - d)
y2 = y1/y
% c - d
y3 = y1^3
% (a + b)^3*(c - d)^3
y4 = sqrt(y3)   
% ((a + b)^3*(c - d)^3)^(1/2)
y5 = exp(y4)
% exp(((a + b)^3*(c - d)^3)^(1/2))

2.2 表达式的整理

有时候我们的表达式是可以继续通分化简的,这时我们可以使用simplify命令来进行通分化简。如:

%% 符号表达式的整理
clear;clc

% 化简
syms a
y=(cot(a/2)-tan(a/2))*(1+tan(a)*tan(a/2))
simplify(y)
% 2/sin(a)

2.3 因式分解

使用MATLAB中的factor命令可以对整数或者多项式进行因式分解

%% 因式分解
factor(12) % 对常数进行因式分解 
%      2     2     3
syms m n x
y = -24*m^2*x-16*n^2*x
factor(y)
% [ -8, x, 3*m^2 + 2*n^2]
y1=m^3-n^3
factor(y1)
% [ m - n, m^2 + m*n + n^2]		% 立方差公式的因式分解 
y2 = m^2-n^2
factor(y2)
% [ m - n, m + n]				% 平方差公式的因式分解

2.4 多项式展开

使用expand将因式展开为多项式

%% 多项式展开
syms a x
y = a*(x^2-a)^2+(x-2)
expand(y)
% a^3 - 2*a^2*x^2 + a*x^4 + x - 2

2.5 合并

使用collect命令可以进行类似合并同类项的操作

%% 合并
syms x y
z = (x+y)^2*y+5*y*x-2*x^3
% expand(z)   - 2*x^3 + x^2*y + 2*x*y^2 + 5*x*y + y^3
collect(z,x)
% y*x^2 - 2*x^3 + (2*y^2 + 5*y)*x + y^3
collect(z,y)
% y^3 + 2*x*y^2 + (x^2 + 5*x)*y - 2*x^3

2.6 计算分子与分母

使用numden来计算分式的分子和分母
返回值为两个[z1,z2],其中z1为分子,z2为分母

%% 计算分子与分母
% [z1,z2] = numden(2.5)  % 会报错,因为numden的输入变量不能是数值,只能是符号变量
% ans = sym(2.5);  % sym函数可以将数值2.5转换为符号
[z1,z2] = numden(sym(2.5)) % 对常数计算分子与分母
% z1 = 5
% z2 = 2
syms x y
z = 1/x*y+x/(x^2-2*y)
[z1,z2] = numden(z)  %z1分子,z2分母
% z1 = - x^2*y - x^2 + 2*y^2
% z2 = x*(- x^2 + 2*y)

2.7 让结果显示的更加自然

看下面命令

syms x y
M = (1/x*y+x/(x^2-2*y)-x^2/(3+y)^2)^2;
expand(M)  

通过expand命令对M进行展开,结果为:

y^2/x^2 + x^4/(y^4 + 12*y^3 + 54*y^2 + 108*y + 81) + (2*x^3)/(- x^2*y^2 - 6*x^2*y - 9*x^2 + 2*y^3 + 12*y^2 + 18*y) - (2*y)/(- x^2 + 2*y) + x^2/(x^4 - 4*x^2*y + 4*y^2) - (2*x*y)/(y^2 + 6*y + 9)

看到这样的结果你是不是非常绝望呢??????????????????
如果我们要把这样的结果转化为人们习惯的书写方式放到论文中,是不是会崩溃呢??????
其实我们可以利用MATLAB提供的mupad工具箱(一个商用计算机代数系统,“Multi Processing Algebra Data Tool”的缩写)来帮助我们
方法:在MATLAB中的命令行中输入mupad,回车打开工具箱,然后将上面M的展开结果复制到里面,回车就OK了
在这里插入图片描述
在这里插入图片描述

当然你可能会遇到这样的情况:
在这里插入图片描述
这是说明在后序的发行版本中可能会将该工具箱移除,建议我们使用通过新建实时脚本来解决。

创建实时脚本
在这里插入图片描述
将M的展开结果粘贴过去,运行
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB符号变量的创建和简单运算 的相关文章

  • 考虑预分配速度[重复]

    这个问题在这里已经有答案了 我正在做以下事情 for i 1 m index 0 for j 1 n index index values i j 2 j 1 if j 1 symbol chip chip values index 1 e
  • 图像处理方面的空间和时间表征有什么区别?

    我是学习图像处理的初学者 我对空间和时间表征的概念有点困惑 那么 对于空间表征来说 是不是像一张二维地图 包含了一些关于地图的统计信息呢 就时间特征而言 值是相对于时间的吗 这意味着什么以及我们为何关心 谢谢 当您在不同时间拍摄一系列图像时
  • 如何在matlab中使矩阵图平滑

    就像上图一样 怎样才能让画面更流畅呢 或者缩小y轴的范围 数据来自二维矩阵 然后我用plot data 请随意提出任何想法 平滑线条的一种方法涉及样本点之间数据的非线性插值 当你这样做时plot x y o http www mathwor
  • MATLAB 子图标题和轴标签

    我有以下脚本来最终绘制 4 x 2 子图 files getAllFiles preliminaries n size files cases cell 1 n m cell 1 n for i 1 1 n S load files i c
  • GO TO 语句 - Fortran 到 Matlab

    我一直在努力将此网格搜索代码从 Fortran 转换为 Matlab 但是我无法正确合并 GO TO 语句 我正在尝试使用 while 循环 但我认为我需要其他东西来结束搜索 任何帮助将不胜感激 vmax 1 0E 15 amax G 1
  • 使用正常数据直方图与直接公式进行熵估计(matlab)

    假设我们已经绘制了n 10000标准正态分布的样本 现在我想使用直方图计算其熵来计算概率 1 计算概率 例如使用matlab p x hist samples binnumbers area x 2 x 1 sum p p p area b
  • MATLAB;具有 2+ 个/分割图例的饼图 R2017b

    我正在创建一个饼图 理想情况下希望图例水平显示在顶部和 或底部 然而 在几乎所有情况下 这是不可能的 因为图例超出了数字 因此 我理想情况下希望将图例分成两个 或更多 子图例并单独放置它们 我知道这不是 MATLAB 中的内置功能 我使用的
  • 当 MATLAB 变得非常非常忙时,如何中断它?

    我正在运行一个长时间的模拟MATLAB http en wikipedia org wiki MATLAB我意识到我需要停下来重新运行 然而 MATLAB 确实对这种计算很感兴趣 并且它停止了响应 如何在不终止 MATLAB 的情况下中断此
  • MATLAB 图形渲染:OpenGL 与 Painters?

    当谈到使用哪个渲染器来处理 MATLAB 图形或何时它很重要时 我一无所知 但我遇到过某些示例 其中does matter plot 0 0 ko markersize 50 linewidth 8 set gcf renderer ope
  • OpenCV功能类似于matlab的“查找”

    我正在寻找 openCV 中的一个函数来帮助我制作图像蒙版 例如在 MATLAB 中 B A or B 零 大小 A B A 10 c 有些功能可以让你通过mask向他们提出论据 按照您描述的方式创建面具 我认为您正在追求Cmp 或 Cmp
  • 了解 Matlab 中的 DEL2 函数以便用 C++ 对其进行编码

    为了用 C 编写 DEL2 matlab 函数 我需要了解该算法 我已经成功地为不在边界或边缘上的矩阵元素编写了函数 我已经看过几个有关它的主题 并通过输入 edit del2 或 type del2 来阅读 MATLAB 代码 但我不明白
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • 如何在 MATLAB 中为 4 个子图创建一个通用图例?

    如何在 MATLAB 中为 4 个子图创建一个通用图例 如下所示 又快又脏 hSub subplot 3 1 1 plot 1 1 1 1 1 1 1 1 hLegend legend hello i am legend subplot 3
  • 如何使用 MATLAB 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • Matlab 中的多行匿名函数? [复制]

    这个问题在这里已经有答案了 是否可以在 Matlab 中创建多行匿名函数 没有合适的例子在文档中 http www mathworks com help matlab matlab prog anonymous functions html
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 对多个属性使用一种设置方法 MATLAB

    我有几个属性基本上使用相同的属性set method classdef MyClass properties A B end methods function mc MyClass a b Constructor mc A a mc B b

随机推荐

  • Callable接口详解

    Callable接口详解 Callable 返回结果并且可能抛出异常的任务 优点 可以获得任务执行返回值 通过与Future的结合 可以实现利用Future来跟踪异步计算的结果 Runnable和Callable的区别 1 Callable
  • pg_dump实例详解

    本文转自 http blog chinaunix net uid 354915 id 3504632 html 一 pg dump的用法 数据库的导入导出是最常用的功能之一 每种数据库都提供有这方面的工具 例如Oracle的exp imp
  • 密封类(sealed class)

    密封类 使用关键字 sealed 密封类里面可以有若干个子类 这些子类如果要继承密封类 则必须和密封类在同一个文件里 sealed class LicenseStatus2 单例继承密封类 object UnQualified Licens
  • 转-如何绘制业务流程图(二)

    转自 http blog jobbole com 22509 本来写完上篇 我发现没有太多必要单纯讨论这一部分内容 因为对于很多人来讲 缺的不是具体的做法 而是做这件事情的意义以及目标性的明确 一旦对这件事情的意义和目标有深刻认同 那自然会
  • JavaScript 扁平化数组转成Tree

    有时候我们得到的数据结构并不是想要的 这个时候就需要对得到的数据进行处理了 比如 我们拿到的是扁平化的数组 但我们要应用在 tree 树形组件或级联选择器组件中 这样的组件要求数据结构是具有层级递进关系的 tree 结构 或者我们并不需要层
  • 【JVM类加载及字节码技术】类加载阶段——加载、链接(一)

    类在JVM中的流程分析 类加载 1 加载 2 链接 2 1 验证 2 2 准备 2 3 解析 总结 类加载 类的生命周期 加载 gt 验证 gt 准备 gt 解析 gt 初始化 gt 使用 gt 卸载 加载阶段 加载 链接阶段 验证 准备
  • DTCC2023第十四届中国数据库大会分享:MySQL性能诊断平台:利用eBPF技术实现高效的根因诊断

    主题 8月16 18日 DTCC2023第十四届中国数据库大会在北京国际会议中心召开 17日下午在云原生数据库开发与实践分论坛 我将带来分享 MySQL性能诊断平台 利用eBPF技术实现高效的根因诊断 敬请期待 欢迎大家提前试用我们发布的产
  • 5种CSS3鼠标悬停图片显示文字信息

    下载地址 5种CSS3鼠标悬停图片显示文字信息是一款鼠标悬停特效 含5种不同风格的鼠标悬停图片显示文字信息 dd
  • 用Double-DQN方法解决简单迷宫寻路问题

    环境描述 25 25离散的栅格图 起点左上角 终点右下角 障碍物1 1随机分布 动作空间维度2 向右 向下 每次移动奖励 1 遇到障碍物或移动出环境奖励 100 到终点奖励20 注 针对这个任务期望SARSA Q learning等方法能够
  • Android中控件AutoCompleteTextView的使用方法和一些属性

    版权声明 本文为博主原创文章 未经博主允许不得转载 AutoCompleteTextView一些属性
  • “数据压缩实验之LZW 编解码算法实现与分析”实验报告_201810413045_陈诚

    文章目录 1 实验项目名称 2 实验目的 3 什么是LZW编解码算法与它的原理 3 1 LZW编解码算法介绍 3 2 LZW编解码算法原理 3 2 1 编码流程图及为了便于理解和期末复习举实例说明 3 2 2 解码流程图及举实例说明 重点说
  • 并发无锁队列学习之一

    Anker 工作学习笔记 关注云计算 网络安全 软件定义网络 博客园 新随笔 管理 随笔 169 文章 2 评论 403 并发无锁队列学习之一 开篇 1 前言 队列在计算机中非常重要的一种数据结构 尤其在操作系统中 队列典型的特征是先进先出
  • SDUc++课结课大作业:基于qt类库c++实现简单的音乐播放器

    2021年11月的项目 版本一 功能简单 UI界面难看 代码架构拉跨 没有核心内容 技术含量低 2022年6月21日准备重构一下代码 让架构清晰一点 加点多线程和网络通信的内容 然后这次打算在visual studio下开发了 因为之前把那
  • 【零基础学QT】第八章 文件操作,网络文件传输实验

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏目录 零基础学QT 文章导航篇 专栏资料 https pan baidu com s 192A28BTIYFHmixRcQwmaHw 提取码 qtqt 点
  • java通过ssh远程调用服务器

    1 在大数据时代 服务器使用的频率难免上升 工作中难免会出现频繁使用的时候 有些场景不方便切换到服务器去操作 比如调用一个服务器的命令 但是要在程序里执行 当然不能手动去执行啦 所以java调用ssh就尤为重要 首先 添加maven依赖
  • Visual Stdio调试IDAPython脚本

    1 安装VS插件PTVS 这一步与第2步中安装版本应该一致 否则最后调试时会连不上 https github com Microsoft PTVS 2 安装python模块PTVSD pip install ptvsd 3 写如下代码ptv
  • SQL注入绕waf(安全狗)

    SQL注入绕waf 前言 感觉自己注入绕waf有点拉跨 于是自己搭建了一个环境练习绕waf 环境 我是用phpstudy sql lib 安全狗最新版本 正常访问 恶意语句 被拦截 注入检测 首先进行注入检测 判断是否有注入 id 1 直接
  • MyBatis基础知识

    MyBatis 优点 支持自定义 Sql 存储过程以及高级映射 MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型 接 口和 Java POJO Pl
  • 分支循环语句练习和友尽模拟器的综合应用

    目录 一 循环语句练习 1 计算 n的阶乘 2 计算 1 2 3 10 二 分支循环综合练习 3 在一个有序数组中查找具体的某个数字n 4 编写代码 演示多个字符从两端移动 向中间汇聚 5 编写代码实现 模拟用户登录情景 并且只能登录三次
  • MATLAB符号变量的创建和简单运算

    声明 本文章中数据来自清风老师数学建模课程 文章目录 MATLAB符号变量的创建和简单运算 1 符号变量 1 1 符号变量的创建 1 2 符号方程的创建 3 符号矩阵的创建 2 符号运算 2 1 简单运算 2 2 表达式的整理 2 3 因式