Regression-gradients {cyclones} | R Documentation |
Use an n-order polynomial fit to model a data series. Ths polynomial then provides the basis for the calculus: derivations and integrations. One way of estimating slopes in the terrain or the geostrophic winds components from sea level pressure fields.
coefFit
fits the coeficients of a power series
y= a0 + a1 x + a2 x^2 + a3 x^3 + ...
, where
x = -1,...,+1
. Reference: R.E. Benestad (2003) What can present climate models tell us about climate change? Climatic Change Vol 59, 311-332
coefDeriv
computes the first derivative of a power series
y= a0 + a1 x + a2 x^2 + a3 x^3 + ...
using the results from coefFit
so that
dy/dx= a1 + 2 a2 x + 3 a3 x^2 + ...
. (Reference:e.g. G. Stephenson (1961), Mathematical methods for science students, Logman Scientific & Technical, p. 86).
coefInt
integrates a series
y= a0 + a1 x + a2 x^2 + a3 x^3 + ...
using the
results from coefFit
so that
integral(y)=a0 x + 1/2 a1 x^2 + 1/3 a2 x^3 + 1/4 a3 x^4 + ... + const
.
geoGrad
computes gradients of the topography.The topolography data
file can be obtained from http://ferret.pmel.noaa.gov/NVODS/servlets/dataset.
testReg.cal
is a test-function for coefFit
,
coefDeriv
and coefInt
.
derivFFT
uses FFT to compute the first derivative. Anolagous to dX
integrFFT
uses FFT to integrate a series and is the (pseudo) inverse of
derivFFT
.
testFFTcalc
is a test function for derivFFT
and integrFFT
.
coefFit(y,x=NULL,n=length(y),method="lm") coefDeriv(y) coefInt(y,c1=0) geoGrad(maxhar = 35, fname = "data/etopo5_scandinavia.Rdata", x.rng = c(-10, 35), y.rng = c(50, 73), plot = FALSE) testReg.cal(i.y=240,N=50) derivFFT(y) integrFFT(y) testFFTcalc()
y |
A vector. |
x |
A vector of index values (e.g. time or longitude). |
n |
Number of harmonics to fit |
method |
Regression model for fitting the harmonics |
c1 |
first coefficient: the constant term |
maxhar |
number of harmonix (see dX ) |
i.y |
|
N |
|
x.rng |
longitude range |
y.rng |
latitude range |
fname |
Name of topology file |
plot |
Plot the results |
R.E. Benestad
## Not run: # Polynomial series calculus. (testReg.cal) library(clim.pact) load("data/etopo5_scandinavia.Rdata") y <- ROSE[i.y,] a <- coefFit(y,n=N) da <- coefDeriv(a) a.2 <- coefInt(da,c1=a$coefs[1]) newFig() plot(ETOPO5X,y,type="s",lwd=3,xlab="Longitude (degE)",ylab="m.a.s.l.", main=paste("Transect: ",round(ETOPO5Y[i.y],1),"degE")) polygon(c(ETOPO5X,ETOPO5X[1320],ETOPO5X[1]), c(da$y.deriv/quantile(da$y.deriv,0.9)*quantile(y,0.7),0,0),col="blue") lines(ETOPO5X,y,type="s",lwd=4) lines(ETOPO5X,a$y.hat,col="red",lty=2,lwd=2) lines(ETOPO5X,a.2$y.int,col="steelblue",lty=1) # FFT-based calculus (testFFTcalc) x <- seq(-3,3,length=100) y <- 3*cos(5*x) + 0.3*sin(18*x) - 1.4*sin(3*x) + 0.15*sin(23*x) plot(x,y,type="l",lwd=3) grid() dydx <- deriv.fft(y) y2 <- integr.fft(dydx) lines(x,y2,col="red",lty=2,lwd=2) grid() newFig() plot(x,Im(dydx),type="l",lwd=3) grid() lines(x,rep(0,length(x)),col="grey") ## End(Not run)