簡體   English   中英

使用R返回集成函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM