使用 R 减少方程式

Reducing equations using R

我有这个用于简化大型系统的小片段:

# set up the multipliers
g1 = (s+9)/((s)*(s+6)*(s+12)*(s+14))
g2 = ((6)*(s+9)*(s+17))/((s+12)*(s+32)*(s+68))
h1 = 13
h2 = 1/(s+7)

# reduce the system in parts
s1 = (g2)/(1 + (g2)*(h1))
s2 = (s1)*(g1)
s3 = (s2)/(1 + (s2)*(h2))

# now we have a unity feedback
g = s3
show(g)

g 应该 是进行上述操作的简化方程。但是,当我 运行 代码时出现了一堆错误:

Error : object 's' not found
Error : object 's' not found
Error : object 's' not found
Error : object 'g2' not found
Error : object 's1' not found
Error : object 's2' not found
Error : object 's3' not found
Error : error in evaluating the argument 'object' in selecting a method for function 'show': Error: object 'g' not found

我没有正确使用方程式吗?

编辑:我的意图是将 s 作为自由变量

为了评估您的第一行代码,必须有一个已定义的对象 s

听起来您的目标是创建一个从单个输入 s 输出 g 的函数。下面的代码将您的计算包装在一个名为 make_g:

的函数中
make_g <- function(s){

  # set up the multipliers
  g1 = (s+9)/((s)*(s+6)*(s+12)*(s+14))
  g2 = ((6)*(s+9)*(s+17))/((s+12)*(s+32)*(s+68))
  h1 = 13
  h2 = 1/(s+7)

  # reduce the system in parts
  s1 = (g2)/(1 + (g2)*(h1))
  s2 = (s1)*(g1)
  s3 = (s2)/(1 + (s2)*(h2))

  # now we have a unity feedback
  g = s3

  g

}

现在,您可以使用您喜欢的 s 的任何值来调用函数:

make_g(s = 1)