1

How can I do something like double a polynomial?

I have this:

b <- function(ftn){2*ftn}
b(function(x) x)

But I get Error in 2 * ftn : non-numeric argument to binary operator

Is there some sort of x <-2x replacement I can do?

Sorry I'm a complete beginner.

4

1 に答える 1

2

xはい。ただし、値を取得し、変換を呼び出しftnて適用する無名関数を返すことでそれを行います。例f(x) ↦ 2f(x):

> doublePoly <- function(ftn) { function(x) { 2 * ftn(x) } }
> f <- function(x) {x^2 + 1}
> g <- doublePoly(f)
> c(f(1), g(1))
[1] 2 4
> c(f(3), g(3))
[1] 10 20

この手法を使用して、任意の変換を行うことができます。たとえば、 を掛けることができます1+x

mult.1plusx <- function(ftn) { function(x) { (1+x) * ftn(x) } }

exp(x)または、関数の対数に追加します。

exp.plus.log <- function(ftn) { function(x) { exp(x)  + log(ftn(x)) } }
于 2012-04-05T02:16:32.037 に答える