последовательная оценка входных параметров - PullRequest
1 голос
/ 26 августа 2011

Благодаря оценке аргументов функции R можно задавать непротиворечивый набор входных параметров и автоматически рассчитывать остальные параметры.

Рассмотрим следующую функцию, связывающую концентрацию, массу, объем и молярнуювес для разбавления в химии,

concentration <- function(c = m / (M*V), m = c*M*V, V = m / (M*c), M = 417.84){

  cat(c("c=", c*1e6, "micro.mol/L\n",
          "m=", m*1e3, "mg\n",
          "M=", M, "g/mol\n",
          "V=", V*1e3, "mL\n"))
  ## mol/L, g, g/mol, L
 invisible(list(c=c, m=m, M=M, V=V))

}

Есть ли способ указать только одно из уравнений и дать R вычислить другие по инверсии?Я понимаю, что это ограничивается простыми линейными отношениями, поскольку инверсию обычно нельзя выразить аналитически.

concentration <- function(c = m / (M*V), m, V, M = 417.84){

 ## { magic.incantation }
 ## mol/L, g, g/mol, L
 invisible(list(c=c, m=m, M=M, V=V))

}

1 Ответ

2 голосов
/ 26 августа 2011

Возможно, вы захотите взглянуть на пакет BB и, в частности, на функцию BBsolve ().BBsolve выполняет обратное вычисление Ньютона-Рафсона для уравнения, которым вы его кормите.Как это происходит :-), я написал и опубликовал функцию «ktsolve», которая позволяет вам вводить набор уравнений и некоторое подмножество переменных, и он будет возвращать значения других переменных.(Он назван в честь коммерческого пакета TK! Solver).Если вы хотите попробовать его, вы можете получить его по номеру http://witthoft.com/ktsolve.R (или http://witthoft.com/rtools.html и нажать на ссылку там).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...