[英]Return integrated function using R
假設我在R中定義了以下函數:
> f <- function(x) 0.5*sin(x)*(x>=0)*(x<=pi)
我可以這樣做以將其在0和pi之間進行積分:
> Integrate <- function(f,a,b) integrate(Vectorize(f),a,b)$value
> F <- Integrate(f,0,pi)
但是,如果我想評估並返回F的一些值,則會出現此錯誤:
> F(c(-100,0,1,2,pi,100))
Error in F(c(-100, 0, 1, 2, pi, 100)) :
function "F" is not found
我可以理解這是由於以下事實:我的積分<-函數(f,a,b)返回一個常數C,這是f在a和b之間積分的結果,但是我怎么能返回F為一個能夠將其值作為向量求值並將其繪制的函數?
像在這種情況下,對於小於0的任何值,F應該給0;對於大於pi的任何值,F應該給1,並且可以在它們之間變化。
謝謝。
編輯:只是為了更清楚地總結一下:如何在[a,b]中定義函數f(x),如果x在[a,b]中將給我f(x),如果xb是0?
嘗試將函數調用包裝在一個sapply
並讓Integrate返回一個函數。
Integrate <- function(f, a, b) function(x) if (x < a) 0 else if (x > b) 1 else integrate(Vectorize(f), a, x)$value
F <- Integrate(f, 0, pi)
sapply(c(-100,0,1,2,pi,100), F)
給
[1] 0.0000000 0.0000000 0.2298488 0.7080734 1.0000000 1.0000000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.