我是靠谱客的博主 碧蓝百褶裙,最近开发中收集的这篇文章主要介绍MATLAB确认对象符号怎么打,MATLAB自学笔记(十九):符号对象和符号表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、MATLAB符号计算概述

MATLAB符号计算是通过集成在MATLAB中的符号数学工具箱(Symbolic Math Toolbox)来实现的

这个工具箱是建立在Maple基础上,当进行MATLAB符号运算时,他就会请求Maple软件去计算并将结果返回给MATLAB

其主要功能包括

符号表达式的计算与复合、化简

符号矩阵的运算

符号微积分

符号函数画图

符号代数方程求解

符号微分方程求解

支持符号运算并返回指定的精度结果

二、符号对象和符号表达式

符号数学工具箱中定义了一个新的数据类型,叫做sym类

sym类的实例就是符号对象,它是一种数据结构,可以用来存储代表符号的字符串的复杂数据结构

符号表达式是符号变量或常量的组合,在某些情况下,符号变量和符号常量也可以被认为是符号表达式,其创建方式仍是使用函数sym

1.符号对象的创建命令

作为符号对象的符号常量、符号变量、符号函数及符号表达式,可以使用函数命令sym()、syms()规定和创建,利用class()函数可以测试建立的操作对象为何种操作对象类型

1.函数命令sym()

variable = sym(A, flag)

S = sym(‘A’, flag)

命令公式是由A来创建一个符号对象varable,其类型为sym。若A(不带单引号)是一个数字、数值矩阵或数学表达式,则输出结果是将数值结果对象转换成的符号对象。若A(带单引号)是一个字符串,输出结果则是将字符串转换成的符号对象

flag为转换符号对象的格式

A不带引号时

d:最接近的十进制浮点精确表示

e:带(数值计算时)估计误差的有理表示

f:十六进制浮点表示

r:为默认值时,最接近有理表示的形式

A带引号时

positive:限定A为正的符号变量类型

real:限定A为实型符号变量类型

2.函数命令syms()

syms a b c flag

该命令可以建立3个或多个符号变量。flag同上

2.符号对象的创建

1.创建符号常量

Python

>> r = sym(2/3,'d')

r =

0.66666666666666662965923251249478

1

2

3

4

5

>>r=sym(2/3,'d')

r=

0.66666666666666662965923251249478

2.创建符号变量

Python

>> y = sym('x','positive')

y =

x

>> class(y)

ans =

sym

1

2

3

4

5

6

7

8

9

10

11

>>y=sym('x','positive')

y=

x

>>class(y)

ans=

sym

3.创建符号表达式

符号表示式分为两类:不带等号的称为符号函数,带等号的称为符号方程

Python

>> f = sym('a*x^4 + b*x^3 + c*x^2 + d*x + e')

警告: Support of strings that are not valid variable names or define a number will be removed in a future release. To create symbolic expressions, first create

symbolic variables and then use operations on them.

> In sym>convertExpression (line 1536)

In sym>convertChar (line 1441)

In sym>tomupad (line 1198)

In sym (line 177)

f =

a*x^4 + b*x^3 + c*x^2 + d*x + e

1

2

3

4

5

6

7

8

9

10

11

>>f=sym('a*x^4 + b*x^3 + c*x^2 + d*x + e')

警告:Supportofstringsthatarenotvalidvariablenamesordefineanumberwillberemovedinafuturerelease.Tocreatesymbolicexpressions,firstcreate

symbolicvariablesandthenuseoperationsonthem.

>Insym>convertExpression(line1536)

Insym>convertChar(line1441)

Insym>tomupad(line1198)

Insym(line177)

f=

a*x^4+b*x^3+c*x^2+d*x+e

警告内容为:在将来的版本中,将删除无效变量名或定义数字的字符串的支持。要创建符号表达式,首先创建符号变量,然后在它们上使用操作。

Python

>> e = sym('x^2 = 1')

e =

x^2 == 1

1

2

3

4

5

>>e=sym('x^2 = 1')

e=

x^2==1

Python

>> syms a b c d e x

>> f = a*x^4 + b*x^3 + c*x^2 + d*x + e

f =

a*x^4 + b*x^3 + c*x^2 + d*x + e

>> class(f)

ans =

sym

1

2

3

4

5

6

7

8

9

10

11

12

>>symsabcdex

>>f=a*x^4+b*x^3+c*x^2+d*x+e

f=

a*x^4+b*x^3+c*x^2+d*x+e

>>class(f)

ans=

sym

4.创建符号矩阵

Python

>> syms x y;

>> m = [1, 2+x 1; 2+x, 1, 3+y; 3+y, 1,0]

m =

[ 1, x + 2, 1]

[ x + 2, 1, y + 3]

[ y + 3, 1, 0]

1

2

3

4

5

6

7

8

>>symsxy;

>>m=[1,2+x1;2+x,1,3+y;3+y,1,0]

m=

[1,x+2,1]

[x+2,1,y+3]

[y+3,1,0]

注意,此处MATLAB不会自动补全矩阵,例子中的0元素需要手动输入,不输入则会报错

3.符号计算中的运算符与函数

与数值计算中作用相同

1.算术运算符号

+、 -、 *、 /、 、 ^

.* 、 ./ 、 . 、 .^

‘        .’

2.关系运算符

==

~=

3.指数、对数函数

sqrt、 exp、 expm

log2、 log10

4.三角函数、双曲函数及其反函数

除atan2函数只能用于数值计算之外,其他的三角函数、双曲函数及其反函数都可用,且用法、作用一致

5.复数函数

共轭(conj)、实部(real)、虚部(imag)、模(abs),与数值计算一致

6.矩阵代数函数

符号计算中,常用的矩阵代数函数有:diag、 triu、 tril、 inv、 det、 rank、 rref、 null、 colspace、 poly、 expm、 eig、 svd

除svd函数之外,其余函数与数值计算一致

4.符号表达式的变量确定

findsym函数可以帮助用户查找一个符号表达式中的符号变量

findsym(S)

findsym(S, N)

返回符号表达式中所有符号变量;N为需要返回符号变量的个数,其返回顺序符合定义顺序

Python

>> syms a b c d e x

>> f = a*x^4 + b*x^3 + c*x^2 + d*x + e

f =

a*x^4 + b*x^3 + c*x^2 + d*x + e

>> findsym(f,2)

警告: FINDSYM will be removed in a future release. Use SYMVAR instead.

> In sym/findsym (line 27)

ans =

x,e

1

2

3

4

5

6

7

8

9

10

11

12

13

14

>>symsabcdex

>>f=a*x^4+b*x^3+c*x^2+d*x+e

f=

a*x^4+b*x^3+c*x^2+d*x+e

>>findsym(f,2)

警告:FINDSYMwillberemovedinafuturerelease.UseSYMVARinstead.

>Insym/findsym(line27)

ans=

x,e

警告内容:FIFSEM将在将来的版本中被删除。用SimVar代替。

5.符号精度计算

符号计算的显著特点是:由于计算过程中不会出现舍入误差,因此可以得到任意精度的数值解

若需要得到精确结果,需要牺牲计算时间与储存空间,用符号计算来获得足够高的计算精度

digits(d):调用该函数后的近似解的精度变成d位有效数字。d默认值为32位

vpa(A,d):求符号解A的近似值,该近似解的有效位数由d决定

double(A):把符号矩阵或任意精度表示的矩阵A转换为双精度矩阵

Python

>> sym x;

>> f = sym(' 2*x^2 + 3*x -4');

>> s = solve(f)

s =

41^(1/2)/4 - 3/4

>> digits(4);

>> vpa(s)

ans =

0.8508

>> vpa(s,6)

ans =

0.850781

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

>>symx;

>>f=sym(' 2*x^2 + 3*x -4');

>>s=solve(f)

s=

41^(1/2)/4-3/4

>>digits(4);

>>vpa(s)

ans=

0.8508

>>vpa(s,6)

ans=

0.850781

赞赏作者

喜欢 (1)or分享 (0)

最后

以上就是碧蓝百褶裙为你收集整理的MATLAB确认对象符号怎么打,MATLAB自学笔记(十九):符号对象和符号表达式的全部内容,希望文章能够帮你解决MATLAB确认对象符号怎么打,MATLAB自学笔记(十九):符号对象和符号表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部