Matlab学习之5——符号运算

说明

Matlab的版本为Matlab R2018b;学习的主要内容是Matlab相关的视频网课,可以把这理解为学习的笔记。

1、Matlab当中的符号函数

用matlab实现符号计算有以下几种途径

  1. 调用matlab已经开发好的各种功能函数进行符号运算
  2. 利用matlab保留的maple.m 和mpa.m 两个函数与Maple接口
  3. 使用matlab提供的符号函数计算器功能

2、创建符号函数

在生成符号表达式时

  1. 符号运算过程中,变量都以字符形式保存和运算
  2. 符号表达式包括符号函数和符号方程,前者不包括等号,后者必须带等号
  3. 最简单的创建方法和字符串变量的生成方法相同
  4. 对空格非常敏感,符号表达式内部不要随便加空格
  5. 由于符号表达式实际上时符号矩阵,所以也可以用str2sym命令创建符号表达式
% 创建符号函数
f = 'log(x)';

% 创建符号方程
e = 'y=a*x^2+b*x+c';

% 创建符号微分方程
d = 'Dy-y=x';

% 用str2sym命令创建符号表达式
f1 = str2sym('sin(x)');

% 用syms命令创建符号函数,但不能创建符号方程
syms x
f2 = sin(x)+cos(x);

3、符号与数值之间的转换

  1. 符号运算的目的时得到精确的数值解时,需要进行数值转换
  2. digits,vpa两个函数可以进行数值转换
  3. 旧版本中的numeric数值转换函数依旧有效
% 设置有效数字为D的近似解精度
% digits(D);

% 符号表达式S在digits函数设置下精度的数值解
% 符号表达式S在digits(D)精度下的数值解
% vpa(S);
% vpa(S, D);

% 将不含自由变量的符号表达式转换为数值形式
% 等价于double(sym(S));
% numeric(S);

% 将符号表达式中的OLD变量替换为NEW变量
% subs(S, OLD, NEW);

x = sym('x');
f=x-cos(x);
f1 = subs(f, x, 'pi');
digits(25);
vpa(f1)
double(f1)

4、符号函数的运算

4.1 复合函数运算compose

syms x y z t u m;
f=1/(1+x^2);
g=sin(y);
h=x^t;
p=exp(-y/u);

% 传入f(x),g(y)双参数,返回f(g(y))
compose(f, g)

% 传入f(x),g(y),z三参数,返回f(g(z))
compose(f, g, t)

% 传入h(x, t), g(y), x, z四参数,指定x为h(x, t)中要被替换的变量
% 最终返回h(g(x), t)
compose(h, g, x, z)
compose(h, g, t, z)

% 传入h(x, t), p(y, u), x, y ,z五参数,指定x为h(x, t)中的变量
% 指定y为p(y, u)中要被替换的变量,并返回h(p(z,u),t)
compose(h, p, x, y, z)
compose(h, p, t, u, z)

4.2 反函数的运算

syms x y;
f=x^2+y;
finverse(f)
finverse(f, y)

5、符号函数的化简

5.1 因式分解

% 将符号函数S因式分解
% factor(S);
% 分解大于252次方的整数
% factor(sym'N');
sym('x');
factor(x^9-1)
factor(sym('12345678901234567890'))

5.2 符号矩阵的展开

syms x y;
expand((x+1)^3)
expand(sin(x+y))

5.3 同类式合并

% 同类项合并,然后降幂排列
% collect(S)
% 合并S中V的同幂项系数
% collect(S, V)
syms x y;
collect(x^2*y+y*x-x^2-2*x)

5.4 求符号表达式的最简形式

% 返回显式表达式S的长度最短的简化形式
% simple(S)
% R为返回的简化形式,HOW为简化过程中使用的主要方法
% [R, HOW] = simple(S)返回的R为简化形式,HOW为简化过程中使用的主要方法
% simplify()符号简化函数
syms x;
simplify(sin(x)^2+cos(x)^2)

5.5 分数通分

% [N, D] = numden(A);
syms x y;
[n, d] = numden(x/y+y/x);

5.6 化简为秦九昭型

horner(x^3-6*x^2+11*x-6)

6、符号微积分

6.1 符号函数求极限

% 求F符号函数中x变量趋于a时的极限
% limit(F, x, a);
% 独立变量趋近于a时F的极限
% limit(F, a)
% 求a为0时的极限值
% limit(F)
% 限定取左极限
% limit(F, x, a, 'left')
syms x a t h;
limit(sin(x)/x)
limit(1/x, x, 0, 'right')
limit((1+2*t/x)^(3*x), x, inf)

6.2 符号函数积分

% 积分函数int
% 计算S的不定积分
% int(S)
% 计算对S当中v的不定积分
% int(S, v)
% 求S默认变量在(a,b)上的定积分
% int(S, a, b)
% 求S中v变量在(a,b)上的定积分
% int(S, v, a, b)
syms x x1 alpha u t;
A = [cos(x*t),sin(x*t);
    sin(x*t),cos(x*t)];
int(A, t)
int(x1*log(1+x1), 0, 1)

6.3 符号函数微分和差分

% 默认求一阶微分
% diff(S)
% 对特定的变量微分
% diff(S, 'v')或者diff(S, sym('v'))
% 指定阶数n求微分
% diff(s, n)
% 指定变量和阶数求微分
% diff(S, 'v', n)
syms x t;
diff(sin(x^2))
diff(t^6, 6)

6.4 求梯度

% [FX, FY]  = gradient(F)
% [FX, FY] = gradient(F, H)
% [FX, FY] = gradient(F, HX, HY)
% [FX, FY, FZ] = gradient(F)
% [FX, FY, FZ] = gradient(F, HX, HY, HZ)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值