MATLAB的符号计算

所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。
例如,在符号变量运算过程中pi就用pi表示,而不是具体的近似数值3.14或3.14159。使用符号变量进行运算能最大限度减少运算过程中因舍入造成的误差。符号变量也便于进行运算过程的演示。

一、符号计算基础

(一) 定义符号变量
参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用sym函数、syms函数将运算量定义为符号型数据。引用符号运算函数时,用户可以指定函数执行过程中的变量参数;若用户没有指定变量参数,则使用默认的变量作为函数的变量参数。

1、sym函数
 sym函数的主要功能是创建符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。用sym函数创建符号变量的一般格式为:

                x = sym(‘x’)

   其目的是将’x’创建为符号变量,以x作为输出变量名。每次调用该函数,可以定义一个符号变量。

a=sym(‘a’); %定义‘a’为符号运算量,输出变量名为a
b=sym(‘b’);
x=sym(‘x’);
y=sym(‘y”);
[x,y]=solve(‘a*x-b*y=1’, ‘a*x+b*y=5’, ‘x’, ‘y’)
                                %以a,b为符号常数,x,y为符号变量
即可得到方程组的解:
x =3/a
y =2/b

 (一) 定义符号变量

【例2】已知一复数表达式 z=x+i*y, 试求其共轭复数,并求该表达式与其共轭复数乘积的多项式。
   为了使乘积表达式x^2+y^2非负,这里,把变量x和y定义为实数。
x=sym(‘x’,’real’);
y=sym(‘y’,’real’);

z=x+i*y; %定义复数表达式
conj(z); %求共轭复数
expand(z*conj(z)) %求表达式与其共轭复数乘积的
                              多项式
ans =
x^2+y^2
若要去掉’x’的属性,可以使用下面语句
     x = sym(‘x’,’unreal’) 
将’x’创建为纯格式的符号变量。

2、syms函数
syms函数的功能与sym函数类似。syms函数可以在一个语句中同时定义多个符号变量,其一般格式为:
          syms arg1 arg2 …argN 
用于将rg1, arg2,…,argN等符号创建为符号型数据。

(二)默认符号变量
在数学表达式中,一般习惯于使用排在字母表中前面的字母作为变量的系数,而用排在后面的字母表示变量。例如:
         f=ax2+bx+c
表达式中的a,b,c通常被认为是常数,用作变量的系数;而将x看作自变量。

例如,数学表达式
         f=xn
         g=sin(at+b)
根据数学式中表示自变量的习惯,默认a,b,c为符号常数,x为符号变量。
若在MATLAB中表示上述表达式,首先用syms 函数定义a,b,n,t,x为符号对象。在进行导数运算时,由于没有指定符号变量,则系统采用数学习惯来确定表达式中的自变量,默认a,b,c为符号常数,x,t为符号变量。
即 :   对函数f求导为:df/dx
            对函数g求导为:dg/dt

(四) 生成符号函数
将表达式中的自变量定义为符号变量后,赋值给符号函数名,即可生成符号函数。例如有一数学表达式:

其用符号表达式生成符号函数fxy的过程为:
     syms a b c x y              %定义符号运算量
     fxy=(a*x^2+b*y^2)/c^2      %生成符号函数
生成符号函数fxy后,即可用于微积分等符号计算。

【例4】定义一个符号函数 fxy=(a*x2+b*y2)/c2 ,分别求该函数对x、y的导数和对x的积分。
syms a b c x y            %定义符号变量
fxy=(a*x^2+b*y^2)/c^2;  %生成符号函数
diff(fxy,x)             %符号函数fxy对x求导数
ans =2*a*x/c^2
diff(fxy, y)            %符号函数fxy对y求导数
ans =2*b*y/c^2
int(fxy, x)             %符号函数fxy对x求积分
ans =1/c^2*(1/3*a*x^3+b*y^2*x)

 (五)标准代数运算

很多标准的代数运算可以在符号表达式上执行,函数symadd、symsub、symmul和symdiv为加、减、乘、除两个表达式,sympow将一个表达式上升为另一个表达式的幂次。

f= ' 2*x^2+3*x-5 '   %  define the symbolic expression
>>f=
 2*x^2+3*x-5
>> g= ' x^2-x+7 '
g=
 x^2-x+7

>> symadd(f,g)  %  find an expression for f+g
 ans= 3*x^2+2*x+2
>> symsub(f,g)  %  find an expression for f-g
ans= x^2+4*x-12
>> symmul(f,g)  %  find an expression for f*g
ans= (2*x^2+3*x-5)*(x^2-x+7)
>> symdiv(f,g)  %  find an expression for f/g
ans= (2*x^2+3*x-5)/(x^2-x+7)
>> sympow(f, ' 3*x ' )  %  the same as sym(A)^sym(B)
ans= (2*x^2+3*x-5)^3*x

 

 

时间: 2024-09-22 08:55:58

MATLAB的符号计算的相关文章

MATLAB 数据分析方法(第2版)1.2 MATLAB基础概述

1.2 MATLAB基础概述   1.2.1 MATLAB的影响   MATLAB源于Matrix Laboratory,即矩阵实验室,是由美国Mathworks公司发布的主要面对科学计算.数据可视化.系统仿真以及交互式程序设计的高科技计算环境.自1984年该软件推向市场以来,历经30多年的发展与竞争,现已成为适合多学科.多种工作平台的功能强大的大型软件.MATLAB应用广泛,其中包括信号处理和通信.图像和视频处理.控制系统.测试和测量.计算金融学及计算生物学等众多应用领域.在国际学术界,MAT

MATLAB符号计算

1.  建立符号对象 建立符号变量和符号常量MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同. (1) sym函数 sym函数用来建立单个符号量,一般调用格式为:符号量名=sym('符号字符串')该函数可以建立一个符号量,符号字符串可以是常量.变量.函数或表达式.应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同.下面的命令用于比较符号常量与数值常量在代数运算时的差别. (2) syms函数 函数sym一次只能定义一个符号变量,使用

《MATLAB/Simulink系统仿真超级学习手册》——1.2 MATLAB简介

1.2 MATLAB简介 MATLAB/Simulink系统仿真超级学习手册 MATLAB是MATRIX LABORATORY的简称,它是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分. 1.2.1 MATLAB发展史 20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB. 1.正式走向市场

MATLAB 数据分析方法(第2版)1.3 MATLAB基本语法

1.3 MATLAB基本语法   1.3.1 数据类型   MATLAB中的基本数据类型有15种,主要是整型.浮点.逻辑.字符.日期和时间.结构数组.单元格数组以及函数句柄等.不论数据是怎样的类型,在计算机程序中总是以常量与变量的形式出现.   1.常量   在程序执行过程中,其值不能被改变的量为常量.MATLAB中的常量也称为数值量,简单地可理解为具体的数值.例如:   1)整型常量:如12.78.109.   2)实数(浮点)型常量:如5.+5.-5.55.0.0056.6.5e-5.100

《MATLAB R2012a超级学习手册》一1.1 MATLAB介绍

1.1 MATLAB介绍 MATLAB R2012a超级学习手册 MATLAB是一种高效的工程计算语言,它将计算.可视化和编程等功能集于一个易于使用的环境. 1.1.1 MATLAB的产品构架 MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算.控制系统.信息处理等领域的分析.仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞

《MATLAB神经网络超级学习手册》——1.2 MATLAB的特点及应用领域

1.2 MATLAB的特点及应用领域 MATLAB神经网络超级学习手册 MATLAB有两种基本的数据运算量:数组和矩阵,二者单从形式上不好区分.每一个变量可能被当作数组,也可能被当作矩阵,这要依靠所采用的运算法则或运算函数来定. 在MATLAB中,数组与矩阵的运算法则和运算函数是有区别的.但不论是MATLAB的数组还是MATLAB的矩阵,都已经改变了一般高级语言中使用数组的方式和解决矩阵问题的方法. 在MATLAB中,矩阵运算是把矩阵视为一个整体来进行,基本上与线性代数的处理方法一致.矩阵的加减

《MATLAB R2012a超级学习手册》一导读

前言 MATLAB R2012a超级学习手册 MathWorks公司在1984年推出了一套高性能的数值计算和可视化软件--MATLAB.MATLAB全称"矩阵实验室"(Matrix Laboratory),是由著名的线性代数软件包LINPACK和特征值计算软件包EISPACK中的子程序为基础发展而成的一种开放式程序设计语言. MATLAB集数值计算.矩阵运算和可视化图形于一体,可方便地应用于算法开发.数据采集.数学建模.系统仿真.数据分析.科学和工程绘图.应用软件开发等方面.MATLA

初学者怎么选择神经网络环境?对比MATLAB、Torch和TensorFlow

初学者在学习神经网络的时候往往会有不知道从何处入手的困难,甚至可能不知道选择什么工具入手才合适.近日,来自意大利的四位研究者发布了一篇题为<神经网络初学者:在 MATLAB.Torch 和 TensorFlow 中的快速实现(Neural Networks for Beginners A fast implementation in Matlab, Torch, TensorFlow)>的论文,对 MATLAB.Torch 和 TensorFlow 这三种神经网络工具进行了介绍和比较.机器之心

《MATLAB 7.0从入门到精通(修订版)》——导读

前 言 MATLAB是Mathworks公司于1984年推出的一套高性能的数值计算的可视化软件,它集数值分析.矩阵运算.信号处理和图形显示于一体,可方便地应用于数学计算.算法开发.数据采集.系统建模和仿真.数据分析和可视化.科学和工程绘图.应用软件开发等方面.MATLAB之所以能够被广泛应用,是因为它将科研工作者从乏味的Fortran.C编程中解放出来,使他们真正把精力放在科研和设计的核心问题上,从而大大提高了工作效率.在MATLAB环境中描述问题及编制求解问题的程序时,用户可以按照符合人们的科