<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 与えられたデータセットの曲線の下の領域を見つけようとしています。前回の投稿で、analyse>モデリング>非線形を使用し、次にGompertz関数を使用して方程式を取得した後に、面積を取得するのに役立つjslスクリプトを見つけました。問題は、方程式を見つけた後に実行しようとするとコードがクラッシュすることです。下記はコードであり、ヘルプや提案をありがとうございます。
グローバルの消去();
x min = 0。
x max = 120。
stop = 0.000000001;
pdf = function({x}、1.16929740059737 * Exp(-Exp(0.46956698638041 - 0.00339164235623826 * x)));
// {x}がプログラムをクラッシュさせているように見えますが、それがなければ、そのコード行にエラーがあります。
interval = 1;
last = 0;
new = 0;
フラグ= 0。
while(flag == 0、
interval = interval + 1;
増分=(xmax-xmin)/間隔。
合計= 0。
(i = 1、i <= interval、i ++、
(i == 1、x = x min)である場合。
(i> 1、x = x +増分)である場合。
合計=合計+((pdf(x))/ 2)*増分。
;
最後=新しい。
新規=合計。
diff = abs(最新);
if(diff <= stop、flag = 1);
;
表示(間隔)。
表示(合計)。
あなたのstopの価値はかなり小さいです。 あなたはそれを少し上げることを検討するかもしれません、しかしそれは本当にあなたが収束したい有効数字の桁数に依存します。 また使う {デフォルトローカル} JMPを混乱させないために、関数内でバツ 。 これが私の修正です:
クリアグローバル () ;
xmin = 0 ;
xmax = 120 ;
やめる = 0.000000001 ;
pdf = 関数 ( { バツ } 、 {デフォルトローカル} 、
1.16929740059737 * 経験値 ( - 経験値 ( 0.46956698638041 - 0.00339164235623826 * バツ ) )
) ;
// {x}がプログラムをクラッシュさせるようですが、それがないと、そのコード行にエラーがあります。
間隔 = 1 ;
最終 = 0 ;
新しい = 0 ;
旗 = 0 ;
しながら ( 旗 == 0 、
間隔 = 間隔 + 1 ;
インクリメント = ( xmax - xmin ) / 間隔 ;
合計 = 0 ;
にとって ( 私 = 1 、私 <= 間隔 、私 ++、
もし ( 私 == 1 、バツ = xmin ) ;
もし ( 私 > 1 、バツ = バツ + インクリメント ) ;
合計 = 合計 + ((( pdf ( バツ )) / 2 ) * インクリメント ;
) ;
最終 = 新しい ;
新しい = 合計 ;
差分 = 腹筋 ( 最終 - 新しい ) ;
もし ( 差分 <= やめる 、旗 = 1 ) ;
// print(interval);
もし ( mod ( 間隔 、 1000年 ) == 0 、
印刷する ( チャー ( 間隔 ) || ":" || チャー ( 差分 ) || "合計:" || チャー ( 合計 )) ;
)
) ;
見せる ( 間隔 ) ;
見せる ( 合計 ) ;
結果はここに示されています。 実行を停止するために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"