The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
 All Forums
 Origin Forum
 Origin Forum
 fitting a curve by exponential growth

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Anti-Spam Code:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkUpload FileInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
TryItOnceBa Posted - 02/11/2008 : 5:37:05 PM
Origin Version: Pro8 SR1
Operating System: Windows XP

I'm seeking help on this problem:

I'm trying to fit a y(x) data curve that appears to be in the form of exponential growth if x is above a threshold value of x0, like the following Origin function (expgrow1):

y = y0 + A1*exp((x-x0)/t1)

This appears to be the correct function, because if drawn in log-linear fashion, y(x) looks quite linear for x>x0; while for 0<x<x0, y fluctuates near a small constant value y0.

The problem is: there are four adjustable parameters in the above fitting function, making it hard for me to find the correct initial values. I've tried several fitting runs and they all failed. I'm mostly interested in finding x0 and it's standard error.

Is there a simpler way to fit this curve? I'm considering redraw the curve as log(y) vs. x and use a linear curve fitting. Then the question is how to find out the intersection value x0, maybe I should do another linear fit for the part of 0<x<x0, and calculate the crossing point of these two fitting lines as x0? I'm concerned about how to determine the proper standard error if doing it this way, because the "flat" line for 0<x<x0 would be very noisy since y0 is very small before turning on.

I really appreciate your comments and suggestions!
1   L A T E S T    R E P L I E S    (Newest First)
larry_lan Posted - 02/14/2008 : 04:22:19 AM
Hi:

Note that all the exponential functions are over-parameterized, so there may be multiple initial values for every parameters.

I did not actually fit such curve, maybe you can try this first. To fit a segmental function, you can define a function like:

if (x < x0) y = a+b*x;
else y = y0 + A1*exp((x-x0)/t1);


Then you can use some code before the function definition to calculate the x0 (or manually calculate the value and then fix this parameter in NLFit dialog). The idea is, the inflexion appears in y=0, if you calculate the 2nd derivative value of the curve. To find the inflexion, you need to:

1. Smooth the curve to reduce noise, or fit it by 2nd, 3rd polynomial function to create a smooth curve.
2. Look for the first x where y = 0. Actually, we calculate the 2nd derivative from discrete data, you may see there are no y = 0 points. So if abs(y-0) < "some value", you can treat it as an inflexion.

Hope it helps!

Thanks
Larry
OriginLab Technical Services

The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000