MATLAB的符号运算变量如何创建?
将符号运算怎么转化为数值运算,可以用eval()函数。
>> syms t x
>> y=int(sin(t)/t,0,x);
>> x=0:pi/100:2*pi;
>> plot(x,eval(y))
运行结果
不能的,符号变量不能构成矩阵或向量进行数值运算。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
Math Toolbox
符号运算的功能
符号表达式,符号矩阵的创建
符号线性代数
因式分解,展开和简化
符号代数方程求解
符号微积分
符号微分方程
一,符号运算的基本操作
什么是符号运算
与数值运算的区别
※ 数值运算中必须先对变量赋值,然后才能参与运算.
※ 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达.
特点:
运算对象可以是没赋值的符号变量
可以获得任意精度的解
Symbolic Math Toolbox——符号运算工具包通过调用Maple软件实现符号计算的.
maple软件——主要功能是符号运算,
它占据符号软件的主导地位.
2. 符号变量与符号表达式
f = 'sin(x)+5x'
f —— 符号变量名
sin(x)+5x—— 符号表达式
' '—— 符号标识
符号表达式一定要用' ' 单引 号括起来matlab才能识别.
' ' 的内容可以是符号表达式,也可以是符号方程.
例:
f1='a x^2+b x+c' —— 二次三项式
f2= 'a x^2+b x+c=0' —— 方程
f3='Dy+y^2=1' ——微分方程
※符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算
3.符号矩阵的创建
数值矩阵A=[1,2;3,4]
A=[a,b;c,d] —— 不识别
用matlab函数sym创建矩阵(symbolic
的缩写)
命令格式:A=sym('[ ]')
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义
※ 需用' '标识
例如:A = sym('[a , 2*b ; 3*a , 0]')
A =
[ a, 2*b]
[3*a, 0]
这就完成了一个符号矩阵的创建.
注意:符号矩阵的每一行的两端都有方
括号,这是与 matlab数值矩阵的
一个重要区别.
用字符串直接创建矩阵
模仿matlab数值矩阵的创建方法
需保证同一列中各元素字符串有相
同的长度.
例:A =['[ a,2*b]'; '[3*a, 0]']
A =
[ a, 2*b]
[3*a, 0]
符号矩阵的修改
a.直接修改
可用 , 键找到所要修改的矩阵,直接修改
b.指令修改
用A1=sym(A, , ,'new') 来修改.
用A1=subs(A, 'new', 'old')来修改
A1=subs(S, 'old' ,'new')
例如:A =[ a, 2*b]
[3*a, 0]
A1=sym(A,2,2, '4*b')
A1 =[ a, 2*b]
[3*a, 4*b]
A(2,2)='4*b'
A3 = [ a, 2*b]
[3*a, 4*b]
A2=subs(A1, 'c', 'b')
A2 =[ a, 2*c]
[3*a, 4*c]
符号矩阵与数值矩阵的转换
将数值矩阵转化为符号矩阵
函数调用格式:sym(A)
A=[1/3,2.5;1/0.7,2/5]
A =
0.3333 2.5000
1.4286 0.4000
sym(A)
ans =
[ 1/3, 5/2]
[10/7, 2/5]
将符号矩阵转化为数值矩阵
函数调用格式: numeric(A)
A =
[ 1/3, 5/2]
[10/7, 2/5]
numeric(A)
ans =
0.3333 2.5000
1.4286 0.4000
二,符号运算
符号矩阵运算
数值运算中,所有矩阵运算操作指
令都比较直观,简单.例如:a=b+c;
a=a*b ;A=2*a^2+3*a-5等.
而符号运算就不同了,所有涉及符
号运算的操作都有专用函数来进行
符号矩阵运算的函数:
symadd(a,d) —— 符号矩阵的加
symsub(a,b) —— 符号矩阵的减
symmul(a,b) —— 符号矩阵的乘
symdiv(a,b) —— 符号矩阵的除
sympow(a,b) —— 符号矩阵的幂运算
symop(a,b) —— 符号矩阵的综合运算
例1:f= '2*x^2+3*x-5'; g= 'x^2+x-7';
h= symadd(f,g)
h=
3*x^2+4*x-12
例2:f='cos(x)';g= ' sin(2*x)';
symop(f,'/',g,'+',f,'*',g)
ans =
cos(x)/sin(2*x)+cos(x)*sin(2*x)
例1:f= 2*x^2+3*x-5; g= x^2+x-7;
>> syms x
>> f=2*x^2+3*x-5; g= x^2+x-7;
>> h=f+g
h = 3*x^2+4*x-12
例2:f=cos(x);g= sin(2*x);
>> syms x
>> f=cos(x);g=sin(2*x);
>> f/g+f*g
ans =
cos(x)/sin(x)+cos(x)*sin(x)
符号运算函数:
symsize —— 求符号矩阵维数
charploy —— 特征多项式
determ —— 符号矩阵行列式的值
eigensys —— 特征值和特征向量
inverse —— 逆矩阵
transpose —— 矩阵的转置
jordan —— 约当标准型
simple —— 符号矩阵简化
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
数值类型 matlab的浮点算术运算
有理数类型 maple的精确符号运算
vpa类型 maple的任意精度算术
运算
浮点算术运算
1/2+1/3 --(定义输出格式format long)
ans =
0.83333333333333
符号运算
sym(1/2)+(1/3)
ans =
5/6 --精确解
任意精度算术运算
digits(n) —— 设置可变精度,缺省16位
vpa(x,n) —— 显示可变精度计算
digits(25)
vpa(1/2+1/3)
ans =
.8333333333333333333333333
vpa(5/6,40)
ans =
.8333333333333333333333333333333333333333
a=sym('[1/4,exp(1);log(3),3/7]')
a =
[ 1/4,exp(1)]
[log(3), 3/7]
vpa(a,10)
ans =
[.2500000000, 2.718281828]
[1.098612289, .4285714286]
3. 符号微积分与积分变换
diff(f) — 对缺省变量求微分
diff(f,v) — 对指定变量v求微分
diff(f,v,n) —对指定变量v求n阶微分
int(f) — 对f表达式的缺省变量求积分
int(f,v) — 对f表达式的v变量求积分
int(f,v,a,b) — 对f表达式的v变量在(a,b)
区间求定积分
int('被积表达式','积分变量','积分上限',
'积分下限')—— 定积分
——缺省时为不定积分
mtaylor(f,n) —— 泰勒级数展开
ztrans(f) —— Z变换
Invztrans(f) —— 反Z变换
Laplace(f) —— 拉氏变换
Invlaplace(f) —— 反拉氏变换
fourier(f) —— 付氏变换
Invfourier(f) —— 反付氏变换
例1.计算二重不定积分
F=int(int('x*exp(-x*y)','x'),'y')
F=
1/y*exp(-x*y)
例2.计算 f='x*exp(-x*10)'的Z变换
F=ztrans(f)
F=
z*exp(-10)/(z-exp(-10))^2
>> syms x y
>> F=int(int(x*exp(-x*y),x),y)
F =
1/y*exp(-x*y)
>> syms x
>> f=x*exp(-x*10);
>> F=ztrans(f)
>> F=ztrans(x*exp(-x*10);
F =
z*exp(-10)/(z-exp(-10))^2
例3. 计算指数函数eAt.
用拉氏反变换法计算eAt的公式为:
eAt = L-1[(SI-A)-1]
系统矩阵A=
eAt =
结果:
>> a=[0 1;-2 -3];
>> syms s
>> b=(s*eye(2)-a)
b =
[ s, -1]
[ 2, s+3]
>> B=inv(b)
[ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)]
[ -2/(s^2+3*s+2), s/(s^2+3*s+2)]
>> b11=ilaplace(sym(b,1,1));b(1,1)=b11;
>> b12=ilaplace(sym(b,1,2));b(1,2)=b12;
>> b21=ilaplace(sym(b,2,1));b(2,1)=b21;
>> b22=ilaplace(sym(b,2,2));b(2,2)=b22;
>> b
b =
[ -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t)]
[ -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t)]
4.符号代数方程求解
matlab符号运算能够解一般的线性方程,非线性方程及一般的代数方程,代数方程组.当方程组不存在符号解时,又无其他自由参数,则给出数值解.
命令格式:
solve(f) —— 求一个方程的解
Solve(f1,f2, …fn) —— 求n个方程的解
例1. f = ax2+bx+c 求解
f='a*x^2+b*x+c';
solve(f) —— 对缺省变量x求解
ans =
[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
计算机
格式
一般格式
例2. 符号方程cos(x)=sin(x)
tan(2*x)=sin(x)求解
f1=solve('cos(x)=sin(x)'),
f1 =
1/4*pi
solve(f , 'b' ) —— 对指定变量b求解
ans =
-(a*x^2+c)/x
f3= matlab4.2的解
[ 0]
[ pi]
[ atan(1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))]
[ atan(-1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))]
[ atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))+pi]
[ -atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))-pi]
f2=solve('tan(2*x)=sin(x)')
f2 = matlab4.2的解
[ 0]
[acos(1/2+1/2*3^(1/2))]
[acos(1/2 -1/2*3^(1/2))]
numeric(f3)
ans =
0
3.1416
0 + 0.8314i
0 - 0.8314i
1.9455
-1.9455
numeric(f2)
ans =
0
0 + 0.8314i
1.9455
matlab4.2与6.1的对比
例3. 解方程组 x+y+z=1
x-y+z=2
2x-y-z=1
g1='x+y+z=1',g2='x-y+z=2',g3='2*x-y-z=1'
f=solve(g1,g2,g3)
f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')
f =
z = 5/6, y = -1/2, x = 2/3
f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')
f =
x: [1x1 sym] f.x
ans =2/3
y: [1x1 sym] f.y
ans =-1/2
z: [1x1 sym] f.z
ans =5/6
[x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')
x = 2/3
y =-1/2
z =5/6
5. 符号微分方程求解
—— 用一个函数可以方便地得到微
分方程的符号解
符号微分方程求解指令:dsolve
命令格式:dsolve(f,g)
f —— 微分方程,可多至12个微分方程的求
解;g为初始条件
默认自变量为 'x',可任意指定自变量't', 'u'等
微分方程的各阶导数项以大写字母D表示
或
或
或
y的一阶导数—— Dy
y的二阶导数—— D2y
y的 n 阶导数—— Dny
[y1,y2…]=dsolve(x1,x2,…xn) —— 返回 微分方程的解
一阶微分方程
dsolve('Dx=y','Dy=x','x(0)=0','y(0)=1')
ans =
x(t) = sin(t), y(t) = cos(t)
二阶微分方程
dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')
ans =
cos(a*x)
例3.
y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')
ans =
exp(-x)*cos(x)+exp(-x)*sin(x)
ezplot(y) —— 方程解y(t)的时间曲线图
求该方程的解
三,maple函数——符号运算的扩展
maple——是专门进行数学运算的软件工具,
具有超强的符号运算能力,提供了
几乎包括所有数学领域的专用函数
matlab——依赖于maple的内核与函数库,扩
展了自己的符号运算功能.
matlab还设计了对maple库函数的调用功能
使得已有的maple数学功能,可以扩充matlab
中,作为自身符号运算能力的扩展.
1. maple内核访问函数
可以访问maple内核的matlab函数:
maple ——— 访问maple内核函数
mapleinit —— maple函数初始化
mpa ———— maple函数定义
mhelp ——— maple函数帮助命令
procread —— maple函数程序安装
. maple 的调用格式
maple('表达式')
—— 将表达式送至maple内核,
返回符号表达式结果.
maple ('函数',变量1,变量2)
——调用maple函数,传递给定
变量.
例1. 展开5阶 bernoulli 多项式,计算 x=3 时bernoulli 数.
a=maple('bernoulli(5,x)')
a =
-1/6*x+5/3*x^3+x^5-5/2*x^4
a=maple('bernoulli(5,3)')
a =
85
例2. 化简三角函数式sin2x+cos2x
a=maple('simplify(sin(x)^2+cos(x)^2);')
a =
1
例4. 求f(t)=e-3tsint的拉式变换
f=maple('laplace(exp(-3*t)*sin(t),t,s);')
f =
1/((s+3)^2+1)
例4. 寻找二次多项式的完全平方
f (x) = x2+2x+2
a=maple('completesquare(x^2+2*x+2)')
a =
completesquare(x^2+2*x+2)
将工具包装入内存
maple('with(student);')
a=maple('completesquare(x^2+2*x+2)')
a =
(x+1)^2+1
maple软件中的所有函数,在初始化时并没有完全装入内存,可用readlib指令把库函数读入内存,或用with指令将应用工具包装入内存.
调用格式
maple('readlib(函数名);')
maple('with(工具包名);')
例5.求sin(x2+y2)在x=0,y=0处泰勒级数展开式,8阶截断.
maple('mtaylor(sin(x^2+y^2),[x=0,y=0],8)')
ans =
mtaylor(sin(x^2+y^2),[x = 0, y = 0],8)
maple('readlib(mtaylor);')
maple('mtaylor(sin(x^2+y^2),[x=0,y=0],8)')
ans =
x^2+y^2-1/6*x^6-1/2*y^2*x^4-1/2*y^4*x^2-1/6*y^6
2. mpa —— maple变量定义
任何一个matlab定义的函数f,可使用mpa语句直接调用,还可把 f 定义成maple变量v.
maple的工作空间与matlab工作空间是相互独立的, 所以f 与v是属于不同工作空间中的变量
mpa的调用格式:
mpa('v',f)
mpa v f
f为matlab工作空间中已存在的变量
例. 电磁力计算公式为
试I=0.5,x=0.1邻域展开泰勒级数,3阶截
断,令常数 ,
1.直接调用
maple('readlib(mtaylor);')
maple('mtaylor(k*I^2/x^2,[I=0.5,x=0.1],3);')
2.定义符号函数f(matlab6.1无map函数)
f='k*I^2/x^2';
maple('mtaylor(f,[I=0.5,x=0.1],3);')
ans =
mtaylor(f,[I = .5, x = .1],3)
mpa('u',f)
maple('mtaylor(u,[I=0.5,x=0.1],3);')
ans =
25.*k-.50e3*k*(x-.1)+.10e3*k*(I-.5)+7500.000000000000*k*(x-.1)^2+.1e3*k*(I-.5)^2-.20e4*k*(I-.5)*(x-.1)
注意:matlab符号运算时,可以识
别matlab定义的符号变量,但在调
用 maple 函数时,需将matlab变量
定义为maple变量后,所调用的函
数方可识别和执行
3.mhelp —— maple函数帮助命令
mhelp 是协助检索maple库函数的专用命令
调用格式:mhelp 相关词条
例如:
mhelp intro — maple介绍
mhelp maple — maple命令格式
mhelp tutorial —maple入门
mhelp index —maple检索
工具词条
函数词条
mhelp index 用于工具包检索
library ——maple标准库函数
packages —— 应用工具包
libmisc —— 其它库函数
statements —— maple语句描述
expressions —— maple表达式
datatypes —— maple数据格式
tables —— maple表格和阵列
procedures —— maple程序
misc —— maple其它应用
一般帮助文本主要包括以下部分
FUNCTION—— 函数功能说明
CALLING SEQUENCE—— 调用格式
PARAMETERS —— 调用参数说明
SYNOPSIS —— 语法说明
EXAMPLES —— 应用举例
SEE ALSO —— 相关词条
4.maple库函数
maple库函数共分四类
maple内部函数:驻留函数任何条件
下都可调用
mhelp index[internal]
maple的外部函数—读库定义部分:
调用时先执行读库命令,因此与内部函
数一样可直接调用
mhelp index[external]
maple的外部函数—读库装入部分
maple其余外部函数需要在使用前执行maple('readlib(函数名);')命令将其装入内存
mhelp index[libmisc]
maple的惰性函数—不能直接调用,还需一些函数如mod,evala,evalf 等才能调用
mhelp index[intert]
小 结
本节介绍了matlab语言的符号运算
功能,通过学习应该掌握:
掌握如何创建,修改符号矩阵
掌握符号运算功能
maple函数调用
mhelp检索
由线性代数我们知道A非奇异时,A的行列式不为0,此时方程的解是唯一的。
>> syms x %定义 x 为符号
>> y=x^3 %建立
y =
x^3
matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic
Math Toolbox
符号运算的功能
符号表达式,符号矩阵的创建
符号线性代数
因式分解,展开和简化
符号代数方程求解
符号微积分
符号微分方程
一,符号运算的基本操作
什么是符号运算
与数值运算的区别
※ 数值运算中必须先对变量赋值,然后才能参与运算.
※ 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达.
特点:
运算对象可以是没赋值的符号变量
可以获得任意精度的解
Symbolic Math Toolbox——符号运算工具包通过调用Maple软件实现符号计算的.
maple软件——主要功能是符号运算,
它占据符号软件的主导地位.
2. 符号变量与符号表达式
f = 'sin(x)+5x'
f —— 符号变量名
sin(x)+5x—— 符号表达式
' '—— 符号标识
符号表达式一定要用' ' 单引 号括起来matlab才能识别.
' ' 的内容可以是符号表达式,也可以是符号方程.
例:
f1='a x^2+b x+c' —— 二次三项式
f2= 'a x^2+b x+c=0' —— 方程
f3='Dy+y^2=1' ——微分方程
※符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算
3.符号矩阵的创建
数值矩阵A=[1,2;3,4]
A=[a,b;c,d] —— 不识别
用matlab函数sym创建矩阵(symbolic
的缩写)
命令格式:A=sym('[ ]')
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义
※ 需用' '标识
例如:A = sym('[a , 2*b ; 3*a , 0]')
A =
[ a, 2*b]
[3*a, 0]
这就完成了一个符号矩阵的创建.
注意:符号矩阵的每一行的两端都有方
括号,这是与 matlab数值矩阵的
一个重要区别.
用字符串直接创建矩阵
模仿matlab数值矩阵的创建方法
需保证同一列中各元素字符串有相
同的长度.
例:A =['[ a,2*b]'; '[3*a, 0]']
A =
[ a, 2*b]
[3*a, 0]
符号矩阵的修改
a.直接修改
可用 , 键找到所要修改的矩阵,直接修改
b.指令修改
用A1=sym(A, , ,'new') 来修改.
用A1=subs(A, 'new', 'old')来修改
A1=subs(S, 'old' ,'new')
例如:A =[ a, 2*b]
[3*a, 0]
A1=sym(A,2,2, '4*b')
A1 =[ a, 2*b]
[3*a, 4*b]
A(2,2)='4*b'
A3 = [ a, 2*b]
[3*a, 4*b]
A2=subs(A1, 'c', 'b')
A2 =[ a, 2*c]
[3*a, 4*c]
符号矩阵与数值矩阵的转换
将数值矩阵转化为符号矩阵
函数调用格式:sym(A)
A=[1/3,2.5;1/0.7,2/5]
A =
0.3333 2.5000
1.4286 0.4000
sym(A)
ans =
[ 1/3, 5/2]
[10/7, 2/5]
将符号矩阵转化为数值矩阵
函数调用格式: numeric(A)
A =
[ 1/3, 5/2]
[10/7, 2/5]
numeric(A)
ans =
0.3333 2.5000
1.4286 0.4000
二,符号运算
符号矩阵运算
数值运算中,所有矩阵运算操作指
令都比较直观,简单.例如:a=b+c;
a=a*b ;A=2*a^2+3*a-5等.
而符号运算就不同了,所有涉及符
号运算的操作都有专用函数来进行
符号矩阵运算的函数:
symadd(a,d) —— 符号矩阵的加
symsub(a,b) —— 符号矩阵的减
symmul(a,b) —— 符号矩阵的乘
symdiv(a,b) —— 符号矩阵的除
sympow(a,b) —— 符号矩阵的幂运算
symop(a,b) —— 符号矩阵的综合运算
例1:f= '2*x^2+3*x-5'; g= 'x^2+x-7';
h= symadd(f,g)
h=
3*x^2+4*x-12
例2:f='cos(x)';g= ' sin(2*x)';
symop(f,'/',g,'+',f,'*',g)
ans =
cos(x)/sin(2*x)+cos(x)*sin(2*x)
例1:f= 2*x^2+3*x-5; g= x^2+x-7;
>> syms x
>> f=2*x^2+3*x-5; g= x^2+x-7;
>> h=f+g
h = 3*x^2+4*x-12
例2:f=cos(x);g= sin(2*x);
>> syms x
>> f=cos(x);g=sin(2*x);
>> f/g+f*g
ans =
cos(x)/sin(x)+cos(x)*sin(x)
符号运算函数:
symsize —— 求符号矩阵维数
charploy —— 特征多项式
determ —— 符号矩阵行列式的值
eigensys —— 特征值和特征向量
inverse —— 逆矩阵
transpose —— 矩阵的转置
jordan —— 约当标准型
simple —— 符号矩阵简化
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
数值类型 matlab的浮点算术运算
有理数类型 maple的精确符号运算
vpa类型 maple的任意精度算术
运算
浮点算术运算
1/2+1/3 --(定义输出格式format long)
ans =
0.83333333333333
符号运算
sym(1/2)+(1/3)
ans =
5/6 --精确解
任意精度算术运算
digits(n) —— 设置可变精度,缺省16位
vpa(x,n) —— 显示可变精度计算
digits(25)
vpa(1/2+1/3)
ans =
.8333333333333333333333333
vpa(5/6,40)
ans =
.8333333333333333333333333333333333333333
a=sym('[1/4,exp(1);log(3),3/7]')
a =
[ 1/4,exp(1)]
[log(3), 3/7]
vpa(a,10)
ans =
[.2500000000, 2.718281828]
[1.098612289, .4285714286]
3. 符号微积分与积分变换
diff(f) — 对缺省变量求微分
diff(f,v) — 对指定变量v求微分
diff(f,v,n) —对指定变量v求n阶微分
int(f) — 对f表达式的缺省变量求积分
int(f,v) — 对f表达式的v变量求积分
int(f,v,a,b) — 对f表达式的v变量在(a,b)
区间求定积分
int('被积表达式','积分变量','积分上限',
'积分下限')—— 定积分
——缺省时为不定积分
mtaylor(f,n) —— 泰勒级数展开
ztrans(f) —— Z变换
Invztrans(f) —— 反Z变换
Laplace(f) —— 拉氏变换
Invlaplace(f) —— 反拉氏变换
fourier(f) —— 付氏变换
Invfourier(f) —— 反付氏变换
例1.计算二重不定积分
F=int(int('x*exp(-x*y)','x'),'y')
F=
1/y*exp(-x*y)
例2.计算 f='x*exp(-x*10)'的Z变换
F=ztrans(f)
F=
z*exp(-10)/(z-exp(-10))^2
>> syms x y
>> F=int(int(x*exp(-x*y),x),y)
F =
1/y*exp(-x*y)
>> syms x
>> f=x*exp(-x*10);
>> F=ztrans(f)
>> F=ztrans(x*exp(-x*10);
F =
z*exp(-10)/(z-exp(-10))^2
例3. 计算指数函数eAt.
用拉氏反变换法计算eAt的公式为:
eAt = L-1[(SI-A)-1]
系统矩阵A=
eAt =
结果:
>> a=[0 1;-2 -3];
>> syms s
>> b=(s*eye(2)-a)
b =
[ s, -1]
[ 2, s+3]
>> B=inv(b)
[ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)]
[ -2/(s^2+3*s+2), s/(s^2+3*s+2)]
>> b11=ilaplace(sym(b,1,1));b(1,1)=b11;
>> b12=ilaplace(sym(b,1,2));b(1,2)=b12;
>> b21=ilaplace(sym(b,2,1));b(2,1)=b21;
>> b22=ilaplace(sym(b,2,2));b(2,2)=b22;
>> b
b =
[ -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t)]
[ -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t)]
4.符号代数方程求解
matlab符号运算能够解一般的线性方程,非线性方程及一般的代数方程,代数方程组.当方程组不存在符号解时,又无其他自由参数,则给出数值解.
命令格式:
solve(f) —— 求一个方程的解
Solve(f1,f2, …fn) —— 求n个方程的解
例1. f = ax2+bx+c 求解
f='a*x^2+b*x+c';
solve(f) —— 对缺省变量x求解
ans =
[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
计算机
格式
一般格式
例2. 符号方程cos(x)=sin(x)
tan(2*x)=sin(x)求解
f1=solve('cos(x)=sin(x)'),
f1 =
1/4*pi
solve(f , 'b' ) —— 对指定变量b求解
ans =
-(a*x^2+c)/x
f3= matlab4.2的解
[ 0]
[ pi]
[ atan(1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))]
[ atan(-1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))]
[ atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))+pi]
[ -atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))-pi]
f2=solve('tan(2*x)=sin(x)')
f2 = matlab4.2的解
[ 0]
[acos(1/2+1/2*3^(1/2))]
[acos(1/2 -1/2*3^(1/2))]
numeric(f3)
ans =
0
3.1416
0 + 0.8314i
0 - 0.8314i
1.9455
-1.9455
numeric(f2)
ans =
0
0 + 0.8314i
1.9455
matlab4.2与6.1的对比
>> syms x %定义 x 为符号
>> y=x^3 %建立
y =
x^3
sym syms,例如syms a b c d
同楼上 想学matlab可以买本书
matlab 中的符号运算入门
在MATLAB中,符号运算的入门对于理解和使用此工具至关重要。首先,基本的运算符包括矩阵的加减乘除和幂运算,如“+”用于矩阵相加,“*”用于乘法,而“^”则是求幂操作。对于元素对元素的运算,MATLAB提供了“.*”、”.\\"、“.\/”和“.\\”,它们分别对应数组乘法、左除、右除和幂运算。矩阵的转置...
matlab怎么使用符号
1、以前版本的matlab符号计算引擎用的是mapud,安装maple符号计算工具箱后,可利用 symengine符号计算引擎。2、程序确有问题,没法运行,主要是函数嵌套与赋值出现不协调。3、利用 symengine符号计算引擎错误。4、语句输入到命令行试过了,没有问题,也不会报错,可能打错字了。
matlab sym是什么意思?
matlab sym是Matlab的一种工具箱,它允许用户进行符号运算。符号计算在科学计算和工程计算领域的重要性越来越受到重视。因为符号计算不仅简化了数学公式的表示方式,而且允许进行高阶的数学分析和推导。所以,matlab sym工具箱为学术研究和工程计算提供了丰富的符号计算工具和方法。matlab sym的特点 matlab sym...
matlab中符号运算和数值运算的区别是什么?
MATLAB 用单引号来定义字符串。例如在指令窗口输入:A= ’hello, this is a string’ ,则会输出 A=hello, this is a string 二、 定义符号变量与符号表达式 在 MATLAB 指令窗口,输入的数值变量必须提前赋值,否则会提示出错。只有符号变量可以在没有提前赋值的情况下合法地出现在表达式中,但是符号...
matlab中,什么时候符号运算要加点号?
向量的乘、除、幂运算需要在运算符前加点号。在matlab里是矩阵乘法。A.*B是A和B里的各项各自相乘,如果A或B其中一个变量是标量(1X1矩阵),则A*B和A.*B结果相同。其他运算同理,基本上来说,如果不是在做矩阵的乘除,其实最好全部都加上点。
matlab学习—符号计算
Matlab学习 - 符号计算概览Matlab的符号计算功能强大,主要涉及符号对象、矩阵与函数、微积分、方程求解以及作图。首先,符号对象包括定义和精度控制,数据类型转换是关键。对于符号矩阵,MATLAB支持常见的运算符如inv、.\/、.\\等,符号函数的计算也相当便捷。在微积分部分,极限和级数的计算通过特定公式进行,...
Matlab7中的符号运算函数
可以使用sym来进行,比如:% By lyqmath clc; clear all; close all;syms x y z = x^2 + y结果 z = x^2 + y >> 也就是说可以直接进行符号运算了
matlab符号运算
用合并同类项命令:>> syms k >> collect((6.4*k - 0.5992)*(k - 3.41) + 24.39)ans = (32*k^2)\/5 - (28029*k)\/1250 + 3304159\/125000
MATLAB的符号运算变量如何创建?
simple —— 符号矩阵简化2. 任意精度的数学运算 在symbolic中有三种不同的算术运算:数值类型 matlab的浮点算术运算有理数类型 maple的精确符号运算vpa类型 maple的任意精度算术运算浮点算术运算1\/2+1\/3 --(定义输出格式format long)ans =0.83333333333333符号运算sym(1\/2)+(1\/3)ans =5\/6 --精确解任意精度...
关于MATLAB符号运算的问题
1、MATLAB的符号运算是借助于其它符号运算内核完成的,2008a之前是用Maple,2008b之后用MuPad,不同版本对符号运算的具体支持可能存在差别,例如,你说的第一个问题,我在6.5和2007b、2013a等几种版本下测试,用这两种写法都可以得到相同的结果:[x y]=solve(eq1,eq2,x,y)[x y]=solve(eq1,...
慎弘生白: 如下面的例子,未定义就会出错.符号变量定义方法例如: sym x 或者 syms x ,两者有区别也有共同点.
荆州市13371017137: 创建符号变量有几种方法?并举例说明 - ?
慎弘生白: 创建道符号变量的几种方法: MATLAB提供了两种创建符号变量和表达式内的函数:sym和syms. sym用于创建一个符号变量或表达式,用容法如x=sym('x') 及 f=sym('x+y+z'),syms用于创建多个符号变量,用法如syms x y z. f=sym('x+y+z') 相当于 syms x y z f= x+y+z
荆州市13371017137: 如何在matlab中创建符号矩阵 - ?
慎弘生白: 符号变量要用SYMS来声明,MATLAB中将其识别为一个常量,就像一个给了值的常数一样.因为MATLAB是不能识别符号的,声明以后系统就把符号变量当作一个常量对待.例如在S变换中,就要声明S为符号变量,不然,系统不能识别S.知道了符号变量的作用,矩阵的就不用我多说了吧.在一个参数取多个值时,可定义为符号变量,这样的最后求得的表达式中就只有这些变量,然后,只需把所取数值依次代入表达式中就可求得结果,可以大大减少计算量.
荆州市13371017137: MATLAB如何定义自定义数目的符号变量 - ?
慎弘生白: 一般不建议这样做,用元胞数组更好一些: n = input('n? '); x = cell(n,1); x{4} = 12;这样 x{4} 就被赋值成 12 了.没被赋值过的,比如 x{1},就是一个空矩阵 []. 你的要求也能做到,比如都初始始化成 0 可以这样: n = input('n? '); for i = 1:neval(strcat('x', num2str(i), '=0;')); end但效率会低一些,变量名是 x1, x2 这样后面用的话,循环写起来也更麻烦.
荆州市13371017137: matlab 怎样 创建复数类型的符号变量 - ?
慎弘生白: 先定义两个实数的变量,然后将其表示成复数形式,比如定义两个变量a,b,那么复数可以表示成a+b*j
荆州市13371017137: MATLAB 2016 A解方程时出现如图所示的两个警告,似乎想让我创建一个叫symbolic的变量,请问该如何创建? - ?
慎弘生白: MATLAB 中用 solve 函数解方程历史上经历几次变化:1、如题主这样,使用字符串作为输入参数,到目前为止还是可以使用的,但会发出警告,意思是将来不再支持这种做法,建议修改为使用符号表达式的做法.2、较为通行的做法是,先定...
荆州市13371017137: matlab中怎么创建符号函数? - ?
慎弘生白: MATLAB中,syms函数用于创建符号对象. 语法格式: syms arg1 arg2 ... 是 arg1 = sym('arg1'); arg2 = sym('arg2'); ... 的简便写法 syms arg1 arg2 ... real 是 arg1 = sym('arg1','real'); arg2 = sym('arg2','real'); ... 的简便写法 syms arg...
荆州市13371017137: matlab习题:用什么语句创建x和y两个符号变量 - ?
慎弘生白: 1syms x y 或者1 2x=sym('x') y=sym('y')
荆州市13371017137: matlab 中 如何定义 符号变量 - ?
慎弘生白: 与C语言不同,一般变量在M文件或者command window中随用随声明
荆州市13371017137: Matlab如何定义符号变量 - ?
慎弘生白: 呵呵 早将问题说明白点不就少费神了些吗可以的 Matlab中提供了符号傅里叶变化函数不过使用前 符号变量一定要定义或者转换,否则Matlab不认的