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

如何在Julia中利用根轨迹法求解特定增益K对应的根数值

Julia中用根轨迹法求特定增益下的根数值

首先,你提供的代码没有符合ControlSystems库中根轨迹分析的标准形式,需要先将方程整理为根轨迹的标准特征方程形式:1 + K'·G₀(x) = 0,再进行后续计算。

步骤1:整理方程

你的目标方程是:

1 + Kᵇ / (x^(b-1)·(x-a)) = 0

可改写为根轨迹标准形式:

1 + K'·[1/(x^(b-1)·(x-a))] = 0

其中K' = Kᵇ,G₀(x) = 1/(x^(b-1)·(x-a))是待分析的开环传递函数。

步骤2:使用ControlSystems库计算根轨迹对应增益的根

以下是完整可运行代码:

using ControlSystems, LinearAlgebra

# 定义参数
K = 100
a = 5
b = 10

# 构造开环传递函数G₀(s) = 1/(s^(b-1)*(s-a))
num = [1]
# 分母多项式:s^(b-1)*(s-a) 展开后的系数
den = poly(vcat(zeros(b-1), [a]))
G₀ = tf(num, den)

# 计算对应增益K' = K^b的根
K_prime = K^b
roots_at_K = rlocusgain(G₀, K_prime)[1]

# 输出结果
println("对应增益K=$K的根:")
display(roots_at_K)

步骤3:直接验证(可选)

也可以直接求解等价的多项式方程xᵇ - a·x^(b-1) + Kᵇ = 0,结果一致:

# 构造多项式系数:x^b - a*x^(b-1) + K^b
poly_coeffs = vcat([1], [-a], zeros(b-2), [K^b])
roots_direct = roots(poly_coeffs)

println("\n直接求解多项式的根:")
display(roots_direct)

关键说明

  • rlocusgain(G, K)函数会返回对应增益K下的闭环系统极点(即特征方程的根),这正是你需要的结果。
  • 确保ControlSystems库已正确安装,若未安装可先运行using Pkg; Pkg.add("ControlSystems")。

内容的提问来源于stack exchange,提问作者Kanishk Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:20