Scilab入门遇部分分式分解无结果问题求解决方案
Scilab部分分式分解问题解决方法
你的代码中pfss函数已经完成了部分分式分解,但直接disp(d)只会输出返回值的类型信息,不会展开显示具体的分式项。以下是解决步骤和修改后的代码:
原代码与输出
原代码:
num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3; den = 22952.25 + 4117.77*%s + 490.63*%s^2 + 33.06*%s^3 + %s^4; // degree(den)>degree(num) h2 = syslin('c',num/den) disp(h2) d = pfss(h2) disp(d)
原输出:
22801 +4406.18s +382.37s^2 +21.02s^3 -------------------------------------------- 22952.25 +4117.77s +490.63s^2 +33.06s^3 +s^4 (1) : [1x1 rational] of s (2) : [1x1 rational] of s
解决方法一:正确遍历pfss返回的分式列表
pfss返回的是一个列表,每个元素对应一组极点的部分分式项(共轭极点会被组合成实系数二次分式)。需要逐个提取并格式化显示:
修改后的代码:
num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3; den = 22952.25 + 4117.77*%s + 490.63*%s^2 + 33.06*%s^3 + %s^4; h2 = syslin('c',num/den) disp("原传递函数:") disp(h2) d = pfss(h2) disp("分解后的部分分式:") // 遍历列表并格式化显示每一项 for i = 1:length(d) disp("第"+string(i)+"项:") pretty(d(i)) end
运行后会输出展开后的具体分式,比如共轭极点对应的二次分式和实极点对应的一次分式。
解决方法二:使用residue函数获取留数与极点
如果你需要更直观的数值参数(留数、极点),可以用residue函数,它直接返回留数、极点和直接项:
示例代码:
num = 22801+4406.18*%s + 382.37*%s^2 + 21.02*%s^3; den = 22952.25 + 4117.77*%s + 490.63*%s^2 + 33.06*%s^3 + %s^4; [r,p,k] = residue(num, den)
r:留数数组p:极点数组k:直接项(因分母次数高于分子,此处为空)
你可以根据这些数值手动写出部分分式,比如对于实极点p_i和留数r_i,对应项为r_i/(s-p_i);对于共轭极点对,可组合成实系数二次分式。
内容的提问来源于stack exchange,提问作者cayito_arcade
相关产品推荐
相关产品推荐

