MATLAB符号运算之分式化简(基础)
MATLAB常见的化简函数如下:
pretty(f) 将符号表达式化简成与⾼等数学课本上显⽰符号表达式形式类似
collect(f) 合并符号表达式的同类项
horner(f) 将⼀般的符号表达式转换成嵌套形式的符号表达式
factor(f) 对符号表达式进⾏因式分解
expand(f) 对符号表达式进⾏展开
matlab定义函数表达式simplify(f) 对符号表达式进⾏化简,它利⽤各种类型的代数恒等式,包括求和、
积分、三⾓函数、指数函数以及 Bessel 函数等来化简符号表达式
下⾯进⾏实现,环境为MATLAB2020b 实时编辑器
代码为求取 使⽤理想PR控制器控制的逆变器的传递函数
实时编辑器不使⽤分号结尾可以⽅便的查看运⾏结果
syms L_k r C_f positive real
syms s
G_L =1/(s*L_k+r)
syms T_s positive real
G_PWM =1/(1.5*T_s*s+1)
syms k_p k_r omega_r positive real
G_PR = k_p+2*k_r*s/(s^2+omega_r^2)
G_ref = G_PR*G_PWM*G_C*G_L/(G_PR*G_PWM*G_C*G_L+G_C*G_L+1)
G_dis = G_C/(G_PR*G_PWM*G_C*G_L+G_C*G_L+1)
simplify(G_ref,1000)%化简为乘积的形式
pretty(G_ref)%此情况下与 simplify结果相同,但结果不如 simplify 易读
collect(G_ref)%合并符号表达式的同类项,由于没有指定⾃变量,猜测取最⾼阶数的符号为⾃变量
%horner(G_ref)%输⼊应为多项式,此处不适⽤,注释掉
factor(G_ref)%对符号表达式进⾏因式分解,得到的结果适合⼿动进⾏拉普拉斯逆变换或傅⾥叶逆变换。expand(G_ref)%对符号表达式进⾏展开,猜测展开成分⼦阶数增⼤的形式
simplify(G_dis,1000)
仅展⽰化简部分的结果:
除了上述的化简函数,函数在化简过程中也起着不可忽视的作⽤。
限于⼩⽩的见识,只了解这些符号函数的化简⽅式,请各位⼤佬补充,指正。