<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 我試圖找到給定數據集曲線下面的區域。在之前的帖子中,我發現了一些jsl腳本,它有助於在使用analyze> modeling>非線性之後獲得該區域,然後使用Gompertz函數來獲得等式。問題是當我在找到這個等式後嘗試運行它時代碼崩潰了。以下是代碼,感謝您的任何幫助或建議
Clear Globals();
XMIN = 0;
XMAX = 120;
停止= 0.000000001;
pdf = function({x},1.16929740059737 * Exp(-Exp(0.46956698638041 - 0.00339164235623826 * x)));
// 似乎{x}是崩潰程序的東西,但沒有它,那行代碼就有錯誤
間隔= 1;
最後= 0;
新= 0;
標誌= 0;
而(標誌== 0,
間隔=間隔+ 1;
增量=(XMAX-XMIN)/間隔;
總= 0;
for(i = 1,i <= interval,i ++,
if(i == 1,x = xmin);
if(i> 1,x = x + increment);
total = total +((pdf(x))/ 2)*增量;
);
最後=新的;
新=總;
DIFF = ABS(最後新);
if(diff <= stop,flag = 1);
);
顯示(時間間隔);
顯示(總);
你的停止價值非常小。 您可能會考慮提高它,但這實際上取決於您想要收集多少有效數字。 也用 {默認本地} 在你的功能,以免混淆JMP X 。 這是我的修改:
清除全球 () ;
XMIN = 0 ;
XMAX = 120 ;
停 = 0.000000001 ;
PDF格式 = 功能 ( { X } , {默認本地} ,
1.16929740059737 * EXP ( - EXP ( 0.46956698638041 - 0.00339164235623826 * X ) )
) ;
//似乎{x}是崩潰程序的東西,但沒有它,那行代碼就有錯誤
間隔 = 1 ;
持續 = 0 ;
新 = 0 ;
旗 = 0 ;
而 ( 旗 == 0 ,
間隔 = 間隔 + 1 ;
增量 = ( XMAX - XMIN ) / 間隔 ;
總 = 0 ;
對於 ( 一世 = 1 ,一世 <= 間隔 ,一世 ++,
如果 ( 一世 == 1 , X = XMIN ) ;
如果 ( 一世 > 1 , X = X + 增量 ) ;
總 = 總 + (( PDF格式 ( X )) / 2 ) * 增量 ;
) ;
持續 = 新 ;
新 = 總 ;
DIFF = 阿布斯 ( 持續 - 新 ) ;
如果 ( DIFF <= 停 ,旗 = 1 ) ;
//打印(間隔);
如果 ( MOD ( 間隔 , 1000 ) == 0 ,
打印 ( 燒焦 ( 間隔 ) || “:” || 燒焦 ( DIFF ) || “總計:” || 燒焦 ( 總 )) ;
)
) ;
節目 ( 間隔 ) ;
節目 ( 總 ) ;
結果顯示在這裡。 我點擊ESC鍵停止執行。
“1000:0.0000050154411717074總計:19.0754942945052”
“2000:0.0000012532594197978總計:19.0779995336205”
“3000:0.0000005569154488683總計:19.0788346249656”
“4000:0.0000003132397878858總計:19.0792521728205”
“5000:0.0000002004643206988總計:19.0795027022319”
“6000:0.0000001392066906192總計:19.0796697221303”
“7000:0.0000001022719047228總計:19.0797890222006”
“8000:0.0000000783009035388總計:19.0798784973311”
“9000:0.0000000618661744056總計:19.0799480891457”
“10000:0.0000000501117192186總計:19.0800037626261”
“11000:0.0000000414136884785總計:19.0800493136749”