akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: type TDummyArray = array[1..1] of double; {filon_cos} function filon_cos(const numPoints: integer; const t: double; var pX; var pF ): double; { 1 F2 - F1 cos(t*X2) - cos(t*X1) Ii = --- * [ F2 * sin(t*X2) - F1 * sin(t*X1) + ------- * --------------------- ] t X2 - X1 t } var i: integer; sum, tmp: double; h, Xi, Xi1, Fi, Fi1: double; F: TDummyArray absolute pF; X: TDummyArray absolute pX; begin i := 2; h := X[i] - X[1]; sum := 0.e0; for i := 1 to numPoints-1 do begin Xi := X[i]; Xi1 := X[i+1]; Fi := F[i]; Fi1 := F[i+1]; tmp := cos(t*Xi1) - cos(t*Xi); tmp := tmp * (Fi1 - Fi); tmp := tmp / h; //(Xi1 - Xi); tmp := tmp / t; tmp := tmp + Fi1 * sin(t*Xi1) - Fi * sin(t*Xi); sum := sum + tmp; end; Result := sum / t; end; {/filon_cos} {filon_sin} function filon_sin(const numPoints: integer; const t: double; var pX; var pF ): double; { 1 F2 - F1 sin(t*X2) - sin(t*X1) Ii = --- * [ F1 * cos(t*X1) - F2 * cos(t*X2) + ------- * --------------------- ] t X2 - X1 t } var i: integer; sum, tmp: double; h, Xi, Xi1, Fi, Fi1: double; F: TDummyArray absolute pF; X: TDummyArray absolute pX; begin i := 2; h := X[i] - X[1]; sum := 0.e0; for i := 1 to numPoints-1 do begin Xi := X[i]; Xi1 := X[i+1]; Fi := F[i]; Fi1 := F[i+1]; tmp := sin(t*Xi1) - sin(t*Xi); tmp := tmp * (Fi1 - Fi); tmp := tmp / h; //(Xi1 - Xi); tmp := tmp / t; tmp := tmp + Fi * cos(t*Xi) - Fi1 * cos(t*Xi1); sum := sum + tmp; end; Result := sum / t; end; {/filon_sin} | | Всего записей: 24122 | Зарегистр. 06-12-2002 | Отправлено: 21:45 27-11-2008 | Исправлено: akaGM, 21:51 27-11-2008 |
|