You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:53:35