| findmaxtulip {RootsExtremaInflections} | R Documentation |
Implementation of Tulip Extreme Finding Estimator (TEFE) algorithm for a planar curve
Description
For a curve that can be classified as 'tulip' a fast computation of its maximum is performed by applying Tulip Extreme Finding Estimator (TEFE) algorithm of [1].
Usage
findmaxtulip(x, y, concave = TRUE)
Arguments
x |
A numeric vector for the independent variable without missing values |
y |
A numeric vector for the dependent variable without missing values |
concave |
Logical input, if TRUE then curve is supposed to have a maximum (default=TRUE) |
Details
If we want to compute minimum we just set concave=FALSE and proceed.
Value
A named vector with next components is returned:
j1 the index of x vextor that is the left endpoint of final symmetrization interval
j1 the index of x vextor that is the right endpoint of final symmetrization interval
chi the estimation of extreme as x-abscissa
Note
Please use function classify_curve if you have not visual inspection in order to find the extreme type. Do not use that function if curve shape is not 'tulip', use either symextreme or findextreme.
Author(s)
Demetris T. Christopoulos
References
[1]Demetris T. Christopoulos (2019). New methods for computing extremes and roots of a planar curve: introducing Noisy Numerical Analysis (2019). ResearchGate. http://dx.doi.org/10.13140/RG.2.2.17158.32324
See Also
classify_curve, symextreme, findmaxbell, findextreme
Examples
#
f=function(x){100-(x-5)^2}
x=seq(0,12,by=0.01);y=f(x)
plot(x,y,pch=19,cex=0.5)
cc=classify_curve(x,y)
cc$shapetype
## 1] "tulip"
a<-findmaxtulip(x,y)
a
## j1 j2 chi
## 1 1001 5
abline(v=a['chi'])
abline(v=x[a[1:2]],lty=2);abline(h=y[a[1:2]],lty=2)
points(x[a[1]:a[2]],y[a[1]:a[2]],pch=19,cex=0.5,col='blue')
#
## Same curve with noise from U(-1.5,1.5)
set.seed(2019-07-26);r=1.5;y=f(x)+runif(length(x),-r,r)
plot(x,y,pch=19,cex=0.5)
cc=classify_curve(x,y)
cc$shapetype
## 1] "tulip"
plot(x,y,pch=19,cex=0.5)
a<-findmaxtulip(x,y)
a
## j1 j2 chi
## 1.000 1002.000 5.005
abline(v=a['chi'])
abline(v=x[a[1:2]],lty=2);abline(h=y[a[1:2]],lty=2)
points(x[a[1]:a[2]],y[a[1]:a[2]],pch=19,cex=0.5,col='blue')
#