使用R减少方程

时间:2015-03-16 18:03:48

标签: r math

我已经获得了这个缩小大型系统的小片段:

# 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作为自由变量

1 个答案:

答案 0 :(得分:2)

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

听起来你的目标是创建一个从单个输入g输出s的函数。下面的代码将您的计算包装在一个名为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)