Fitting data with very large x values in Mathematica

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 2K views
acusick
Messages
8
Reaction score
0
I have some (x,y) data with x in the range of 1e10 and 1e13, y is between 0 and 1. I am fitting this data using several theoretical models to gain an understanding of underlying mechanisms (by which model fits best).

Using NonlinearModelFit in Mathematica, I get memory failures and cannot complete the fitting. As a solution, I scaled down the x values by 10^10 so the range is now from about 1 to 1000, and that is now OK with Mathematica. So I just get my functions and scale the constants to get back up to where the x values should be and it is fitting my data well. Now I have a problem shifting the function to where my x values are because it is more complicated mathematically. The function is:

f = 1 - Exp[ -R*G^(m-1)*(x)^m ]

Where I'm fitting R, G, and m and my variable is x. So this question is in 2 parts:

1: Is there a way I can get Mathematica to take my very large x values and have it fit this and similar function models? Is there a trick to this? Or are the values just too large to do the fitting to data?

2. If not possible, if I scale my x values down 10^10 as a solution, how may I shift the R, G, and M values accordingly in this case to get it back up to the x values that will fit my data?

So far I have not been able to do this mathematically and feel maybe it is not possible with an equation in this form... But not sure! Here's what I got so far: The solution of the fitting is in this form:

Exp[-a*x^b]

So scaling to accept my x values I get:

Exp[-a*{x*10^-10}^b]

Exp[-a*x^b*10^(-10b)]

But this does not seem to be working to scale properly... Any ideas? Thanks.
 
Physics news on Phys.org
Instead of using the exponential function for the independent variable, why don't you use a logarithm? Log(x) will be between 10 and 13, which seems eminently practical, given the range of y values.
 
Instead of fitting f = 1 - Exp[ -R*G^(m-1)*(x)^m ], try to fit y= -R*G^(m-1)*(x)^m where y=ln(1-f)