turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- JMP User Community
- :
- Discussions
- :
- Discussions
- :
- Finding the area beneath the curve

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Aug 16, 2012 2:34 PM
(1005 views)

I am trying to find the area beneath a curve of a given data set. In a previous posting I found some jsl script that helps get the area after using analyze>modeling>non-linear and then using a Gompertz function to get the equation. The problem is the code crashes when I try to run it after I have found that equation. Below is the code and thanks for any help or suggestions

Clear Globals();

xmin=0;

xmax=120;

stop=0.000000001;

pdf=function( {x} , 1.16929740059737 * Exp( -Exp( 0.46956698638041 - 0.00339164235623826 * x ) ) );

//*it appears that {x} is what crashes the program, but without it, that line of code has errors*

intervals=1;

last=0;

new=0;

flag=0;

while(flag==0,

intervals=intervals+1;

increment=(xmax-xmin)/intervals;

total=0;

for(i=1, i<=intervals, i++,

if(i==1, x=xmin);

if(i>1, x=x+increment);

total=total + ((pdf(x))/2)*increment;

);

last=new;

new=total;

diff=abs(last-new);

if(diff<=stop, flag=1);

);

show(intervals);

show(total);

1 REPLY

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Get Direct Link
- Email to a Friend
- Report Inappropriate Content

Aug 17, 2012 5:40 AM
(915 views)

Your value of stop is pretty small. You might consider raising it a bit, but that really depends on how many significant digits you want to converge on. Also use **{default local}** in your function so as not to confuse JMP about **x**. Here's my modification:

Clear Globals**()**;

xmin = **0**;

xmax = **120**;

stop = **0.000000001**;

pdf = Function**(** **{**x**}**,** {default local}**,

**1.16929740059737** * Exp**(** -Exp**(** **0.46956698638041** - **0.00339164235623826** * x **)** **)**

**)**;

//it appears that {x} is what crashes the program, but without it, that line of code has errors

intervals = **1**;

last = **0**;

new = **0**;

flag = **0**;

While**(** flag == **0**,

intervals = intervals + **1**;

increment = **(**xmax - xmin**)** / intervals;

total = **0**;

For**(** i = **1**, i <= intervals, i++,

If**(** i == **1**, x = xmin **)**;

If**(** i > **1**, x = x + increment **)**;

total = total + **((**pdf**(** x **))** / **2)** * increment;

**)**;

last = new;

new = total;

diff = Abs**(** last - new **)**;

If**(** diff <= stop, flag = **1** **)**;

//print(intervals);

if **(**mod**(**intervals, **1000)** == **0**,

print**(**char**(**intervals**)** || ": " || char**(**diff**)** || " Total: " || char**(**total**))**;

**)**

**)**;

Show**(** intervals **)**;

Show**(** total **)**;

Results are shown here. I hit the ESC key to stop execution.

**"1000: 0.0000050154411717074 Total: 19.0754942945052"**

**"2000: 0.0000012532594197978 Total: 19.0779995336205"**

**"3000: 0.0000005569154488683 Total: 19.0788346249656"**

**"4000: 0.0000003132397878858 Total: 19.0792521728205"**

**"5000: 0.0000002004643206988 Total: 19.0795027022319"**

**"6000: 0.0000001392066906192 Total: 19.0796697221303"**

**"7000: 0.0000001022719047228 Total: 19.0797890222006"**

**"8000: 0.0000000783009035388 Total: 19.0798784973311"**

**"9000: 0.0000000618661744056 Total: 19.0799480891457"**

**"10000: 0.0000000501117192186 Total: 19.0800037626261"**

**"11000: 0.0000000414136884785 Total: 19.0800493136749"**