Matlab符号数学(Symbolic Math with MATLAB)MATLAB解方程

本文详细介绍了如何使用Matlab进行符号数学运算,包括创建符号变量、定义和解方程、画函数图像,以及涉及的微积分操作如求导、积分等。此外,还展示了在机械臂和蹦极项目中的应用,利用符号数学进行建模和分析。
摘要由CSDN通过智能技术生成

创建符号变量

用符号而不是数值表示数字。

存储数字符号

% 你可以把一个数存储为数值格式,就像我们经常做的那样
x = 3;
% 你也可以把这个数存储为符号格式,使用sym()函数
xsym = sym(3);
% 数值和符号的区别在于,你定义了一个x,它的值是数字3;你用一个符号xsym来表示数字3
% 当使用数值格式存储的时候,matlab会根据它存储数字的精度,自动四舍五入
% 当使用符号格式存储的时候,他只是代表这个数字的一个符号,会保留这个数字最原始的样子
y = 2/3
ysym = sym(2/3)

在这里插入图片描述
在这里插入图片描述

符号变量

符号变量的名字是对应于我们常用的数值变量(x=3)的。

% 使用syms命令定义符号变量
syms a b c x
% 对符号变量执行计算的输出不再是数值,而是符号表达式
x+3
x^2
sqrt(x)

在这里插入图片描述

用符号变量表示数学表达式

创建符号表达式

只需要保证你所用到的变量都是符号变量就可以了。

syms x
expr = x^2+5*x+6

syms a b c
y = a*x^2+b*x+c

z = expr*pi
x = expr*4+5*y

给定义的符号变量带入值

使用subs()函数完成这一功能。v = subs(expression,variable,value)
所有可能出现的关于subs()函数的使用情况都在下面了

syms x a b c
expr = x^2 + x + 1
y = a*x^2 + b*x + c

s = subs(expr, x, 2)

ys = subs(y, a, 3)

ymult = subs(y, [a b c], [3 2 1])

subs(y, a, [1 2 3])

在这里插入图片描述

画表达式图像

可以使用fplot(expression)函数,画出表达式的图像。fplot()的使用与plot()一样。基本的使用情况都在下面给出

syms x
yLinear = (3/2)*x + 4
yCubic = x^3/8-2*x+3
fplot(yLinear)
hold on
fplot(yCubic)
hold off

在这里插入图片描述

定义和解符号方程

定义符号方程

使用“==”定义符号方程。

syms x
eqn = x^2-4==0	% 把x^2=0这个符号方程,存储在eqn中。

syms m v g h const
KE = (1/2)*m*v^2
PE = m*g*h
consE = KE+PE==const

在这里插入图片描述

解符号方程

使用solve(equation, variable)函数,从方程equation中解出变量variable的表达式。而且还可以解方程组,使用方法见下代码。

syms x a b c
eqn = x/3 + 2 == 7	% 定义一个符号方程eqn
xsol = solve(eqn,x)	% 解这个方程中的变量x

eqn2 = x^2 - 4 == 0
xsol2 = solve(eqn2,x)	% 如果是方程有多个根,会返回一个列向量

syms a b
eqnMult = a*b == 12
eqnAdd = a + b == 7
quadsol = solve(a*x^2+b*x+c==0,x)	% 如果是方程有多个根,会返回一个列向量

[asol, bsol] = solve([eqnMult, eqnAdd], [a, b])	% 也可以解方程组
sol =  solve([eqnMult eqnAdd],[a b])	% 如果只定义一个输出,会返回一个结构体

注意:无论这个方程的解是一个数还是一个含有未知参量的表达式,这个解都是一个sym,而不是一个数值。

函数处理与化简

有一些函数可以处理变量和系数。
newexpression = expand(expression)函数能实现对函数表达式的展开。
newexpression = simplify(expression)函数能找到更简洁的表达式。
f = factor(expression)函数能够对表达式分解因子。

设置条件

规定符号变量的取值范围

使用assume(variable, assumption)函数可以规定符号变量variable的取值范围。
使用asmp = assumptions(variable)函数能够查看符号变量variable的取值范围

syms x	% 定义符号变量x
y = x^3-8;
fplot(y)	% 可以看到图像中只有一个零点

eqn = y==0
sol = solve(eqn, x)	% 而实际求解却又三个根,一个实数两个复数

assume(x, 'real');	% 将x的取值范围设置为实数
check = assumptions(x)	% 查看x的取值范围

realsol = solve(eqn, x)	% 重解x,根只剩一个实数根

% 清除对x的限制,因为只有使用assumptions函数才会显示其取值范围
% 在计算过程中并不会显示x的取值范围,所以不需要是,一定记得清除
assume(x, 'clear')	

在这里插入图片描述

设置多个条件

使用solve()函数可以同时对多个变量设置限定条件。使用solveAlso()函数还可以在原有限制条件上追加新的条件。

syms a b
pyth = a^2 + b^
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值