Как построить функцию интегралов с верхними пределами как другую функцию в R?

Морские волны

Я хотел бы построить интеграл функции с переменным верхним пределом в R. Однако верхний предел - это не «чистая» координата x, а ее расчет. Я изо всех сил пытаюсь передать вычисленную координату x моей функции графика. Используя ggplot2, я зашел так далеко – спасибо Томасу и мнелу :

library(ggplot2)

#sample function
f_a   <- function(a) { 2 * a }

#set up integration
int_f <- Vectorize( function( f = f_a , lower = 0, upper , ... ){
            integrate( f , lower , upper , ...)[['value']] } , 'upper' )

#plot it
ggplot( data.frame( b = 0 ) , aes( x = b ) ) + 
    stat_function( fun = int_f , args = list( f = f_a , lower = 0 ) ) +
    xlim( 0 , 4 )

При этом я получаю график интегралов с b в качестве верхнего предела. Дело в том, что мои верхние пределы являются функцией b, скажем: c(b). Мои попытки с сопоставлениями и другими настройками int_f потерпели неудачу так же, как и мои запросы здесь, в stackoverflow.

Было бы замечательно, если бы кто-нибудь из этого сообщества показал мне, как решить эту проблему.


person Nebukor    schedule 17.04.2020    source источник


Ответы (1)


Сам узнал. Смущающе дешевое решение (с c() в качестве функции для верхнего предела):

...

int_f <- Vectorize( function( f = f_a , lower = 0, upper , ... ){
            integrate( f , lower , c(upper) , ...)[['value']] } , 'upper' )
...

Надеюсь, это поможет кому-то!

person Nebukor    schedule 17.04.2020