计算一般可分为解析计算和数值计算,解析计算是连续的求解过程,而数值计算则是离散的求解过程。在matlab中,原则上只要数学上能解析计算的,采用matlab符号计算就能够精确求解。
1、符号的创建
(a) 符号常量的创建
符号常量是不含变量的符号表达式。在MATLAB中,使用sym指令来建立符号常量。 一般调用形式为:sym('常量') 。
例1.1
a=sym('sin(2)')
a =
sin(2)
sym命令还可以把数值转换成某种格式的符号常量,调用形式为:sym(常量,参数)。说明:参数可以选择为'd'、'f'、'e'或'r'四种格式,可省略。
例1.2 把常量转换为符号常量
a = sym(sin(2),'r')
a =
4095111552621091
---------------------------
4503599627370496
(b) 符号变量的创建
符号变量即为含有变量的符号表达式,sym可用于定义符号变量,但sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。 syms函数的一般调用格式为:
syms 变量1 变量2 … 变量n
注意:符号变量之间用空格而不要用逗号或分号分隔。
例1.3
syms x y
y = sin(x) + cos(x)
2、符号表达式的建立
符号表达式是代表数字、函数和变量的字符串或字符串数组,它不要求变量要预先定义的值。符号表达式包含符号函数和符号方程,其中符号函数没有等号,而符号方程必须带有等号。符号表达式主要有下面三种方式:
① 用单引号建立符号表达式
例2.1
f = 'a*x^2+bx+c=0'
f =
'a*x^2+bx+c=0'
② 用sym建立符号表达式
例2.2
f1 = sym('a*x^2+b*x+c')
f1 =
a*x^2+b*x+c
③ 使用已经定义的符号变量来组成符号表达式
例2.3
syms a b c x
%创建多个符号变量
f2 = a*x^2+b*x+c
%创建符号表达式
f2 =
a*x^2+b*x+c
或者,
syms('a','b','c','x')
f3 = a*x^2+b*x+c; %创建符号表达式
3、符号运算
(a) 运算符
MATLAB采用了重载(Overload)技术,使得用来构成符号表达式的运算符,无论在拼写还是在使用方法上,都与数值计算中的算符完全相同,如“+”,“-”,“*”,“\”,“/”,“^”等。符号对象的比较中,没有“>”、“≥”,“<”,“≤”的概念,而只有是否“等于”的概念,即“==”与“~=”。如果要判断两个符号数值的大小一般来说有两种办法,一种是利用double将其转化成数值型的,另一种是利用sort+“==”或“~=”。
例3.1
a = sym('2');
b = sym('3');
double(a)<double(b)
ans =
1
sa = sort([b,a])
sa =
[2, 3]
a == sa(1)
ans =
1
(b) 极限、导数和级数的符号计算
例3.2 极限
。
clc;
clear;
% 求极限
syms n;
% limit函数用于求极限运算。
% 若y=f(x),limit(y)表示x→0时的极限,
% limit(y,x,a)表示x→a时的极限
limit( n^(n+1/2) /( exp(n)*gamma(n+1)), n,inf)
ans =
1/(2*pi)^(1/2)
例3.3 导数
求
的导数,
。
syms a t x;
f = [a, t*log(x); sqrt(t), x^2+3*x];
% 矩阵f对t的一阶导数
dfdt = diff(f,t);
dfdt =
[0, log(x); 1/(2*t^(1/2)), 0 ];
% 矩阵f对x的二阶导数
dfdx2 = diff(f,2);
dfdx2 =
[0, -t/x^2; 0, 2 ];
% 求二阶混合导数
dfdtdx = diff(diff(f,t),x);
dfdtdx =
[0, 1/x;0, 0];
例3.4 级数
syms k;
f1 = symsum( (k-2)/2^k, k, 3, inf);
f1 =
1/2
A = [1/(2*k+1)^2, (-1)^k/3^k];
f2 = symsum(A, k, 1, inf);
f2 =
[pi^2/8 - 1, -1/4]
温馨提示
如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。