<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 주어진 데이터 집합의 곡선 아래에서 영역을 찾으려고합니다. 이전 게시에서는 분석> 모델링> 비선형을 사용한 후 영역을 얻는 데 도움이되는 일부 jsl 스크립트를 발견하고 Gompertz 함수를 사용하여 방정식을 얻었습니다. 문제는 방정식을 찾은 후에 코드를 실행하려고하면 충돌이 발생한다는 것입니다. 아래 코드와 도움이나 제안을 주셔서 감사합니다
전역 삭제 ();
xmin = 0;
xmax = 120;
정지 = 0.000000001;
pdf = function ({x}, 1.16929740059737 * Exp (-Exp (0.46956698638041-0.00339164235623826 * x))));
// {x}는 프로그램을 중단시키는 것으로 보이지만 코드가 없으면 오류가 있습니다.
간격 = 1;
마지막 = 0;
새로운 = 0;
플래그 = 0;
while (flag == 0,
간격 = 간격 + 1;
증가분 = (xmax-xmin) / 간격;
총 = 0;
for (i = 1, i <= 간격, i ++,
if (i == 1, x = xmin);
if (i> 1, x = x + increment);
total = total + ((pdf (x)) / 2) * 증분;
);
마지막 = 새로운;
새로운 = 합계;
diff = abs (last-new);
if (diff <= stop, flag = 1);
);
쇼 (간격);
쇼 (전체);
당신의 가치는 꽤 작습니다. 그것을 조금 올리는 것을 고려해 볼 수도 있지만, 실제로는 얼마나 많은 유효 자릿수를 수렴 하느냐에 달려 있습니다. 또한 사용 {기본 지역} 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 ) * 증가 ;
) ;
마지막 = 새로운 ;
새로운 = 합계 ;
diff = 애비 ( 마지막 - 새로운 ) ;
만약 ( diff <= 중지 , 깃발 = 1 ) ;
// print (간격);
만약 ( 모드 ( 간격 , 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"