MATLAB符号变量的创建和简单运算 您所在的位置:网站首页 matlab工作区sym MATLAB符号变量的创建和简单运算

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

2024-07-11 14:30| 来源: 网络整理| 查看: 265

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

文章目录 MATLAB符号变量的创建和简单运算1、符号变量1. 1 符号变量的创建1.2 符号方程的创建3 符号矩阵的创建 2、符号运算2.1 简单运算2.2 表达式的整理2.3 因式分解2.4 多项式展开2.5 合并2.6 计算分子与分母2.7 让结果显示的更加自然

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的展开结果粘贴过去,运行 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有