R :Интегрировать :Достигнуто максимальное количество подразделений, ошибка округления

Я столкнулся с интересной, но довольно раздражающей проблемой.

Я пытаюсь интегрировать функцию, рассчитанную на основе набора данных. Данные можно найти здесь:Ссылка на sample.txt .

Я начинаю с подгонки строки к моим данным. это можно сделать линейно с approxfunили нелинейно -с splinefun. В моем примере ниже я использую последний. Теперь, когда я пытаюсь интегрировать подобранную функцию, я сталкиваюсь с ошибкой

  • maximum number of subdivisions reached

, но когда я увеличиваю подразделение, я получаю

  • roundoff error

Из значений в моем примере кода вы можете видеть, что для этого конкретного набора данных порог равен 754 ->755.

У моего коллеги нет проблем с интеграцией этого набора данных в Matlab. Есть ли способ манипулировать моими данными для интеграции? Есть ли другой метод численного интегрирования в R?

enter image description here

data<-read.table('sample.txt',sep=',')
colnames(data)<-c('wave','trans')
plot(data$wave,data$trans,type='l')

trans<- -1 * log(data$trans)
plot(data$wave,trans,type='l')

fx.spline<-splinefun(data$wave,trans)

#Try either
Fx.spline<-integrate(fx.spline,min(data$wave),max(data$wave))
#Above: Number of subdivision reached
Fx.spline<-integrate(fx.spline,min(data$wave),max(data$wave),subdivisions=754)
#Above: Number of subdivision reached
Fx.spline<-integrate(fx.spline,min(data$wave),max(data$wave),subdivisions=755)
#Above: Roundoff error

7
задан Martin H 4 May 2012 в 16:48
поделиться