[R] how to fit gauss beam?
Thomas Hunger
hto at arcor.de
Mon Sep 4 16:14:50 CEST 2006
Hello,
I am having a hard time fitting a gauss beam using R. In
gnutplot I did something like
$ w(z) = w0 * sqrt(1+(z/z0)**2)
$ fit w(z) 'before_eom.txt' using 1:2 via w0, z0
to obtain w0 and z0. Now I want to do the same in R. I tried
a linear model like this (r = radius, z = distance):
beam <- function(z) {
sum(sqrt(1 + z**2))
}
lm(r ~ I(beam(z)), data = before_eom)
Which gives nonsensical answers ...
Then I tried a nonlinear model:
d <- read.table ("before_eom.tab", header=T)
z <- d$d
r <- d$minor * 1e-6
beam<- function(p) {
M <- 1.1
sum((r-M*p[1]*sqrt(1 + (z/p[2])**2))^2)
}
out <- nlm(beam, p=c(400, 0.1), hessian=TRUE)
out$estimate
This is very sensitive to the starting values and gives
nonsensical answers as well...
Is there a simple way to translate the gnuplot fit into R?
Thanks,
Thomas
More information about the R-help
mailing list