Интерполяция функции для CASIO fx-9750G Plus

| рубрика «Программы» | автор basvic
Метки: , ,

Навеяно книгой Меёса. Написал программу интерполяции во время поездки в маршрутке.

В начале по запросу вводится массив значений функции, взятых через N от 3 до 255 равных интервалов аргумента в виде:

{x0, x1,...,xN-1}

Затем программа запрашивает значение аргумента, любое вещественное в пределах от 0 до (N-1) и выдает результат, после чего запрашивает следующее... Бесконечный цикл в общем.

Программа на первом и последнем интервале выполняет интерполяцию по 3-м точкам, а на всех остальных интервалах - по 5 точкам. Может в будущем доделаю ещё вывод на экран графика интерполируемой функции.

Программа может работать без переделок не только на CASIO fx-9750G Plus, но и на всех более поздних моделях графических калькуляторов (9750GA, 9750GII, 9850G+, 9860G, Algebra FX-2, и т.п.)

%Header Record
Format:TXT
Communication SW:0
Data Type:PG
Capacity:485
File Name:INTERPOL
Group Name:
Password:
Option1:NL
Option2:
Option3:
Option4:
%Data Record
"INPUT {SAMPLES}"?\->\List 1
\Do
"TIME"?\->N
\Dim \List 1\->X
\If X<3
\Then \Stop
\IfEnd
\If N>X
\Then \Stop
\IfEnd
\If N>1.5\ And X-N>1.5\ And X\>=5
\Then \Int N-2\->I
\Frac N\->N
\If I=\(-)1
\Then 0\->I
N-1\->N
\IfEnd
\If X-I=4
\Then I-1\->I
1-N\->N
\IfEnd
\List 1[I+2]-\List 1[I+1]\->A
\List 1[I+3]-\List 1[I+2]\->B
\List 1[I+4]-\List 1[I+3]\->C
\List 1[I+5]-\List 1[I+4]\->D
B-A\->E
C-B\->F
D-C\->G
F-E\->H
G-F\->J
J-H\->K
((((K/24)N+(H+J)/12)N+F/2-K/24)N+(B+C)/2-(H+J)/12)N+\List 1[I+3]\->M
\Else \Int N-1\->I
\Frac N\->N
\If I<0
\Then 0\->I
N-1\->N
\IfEnd
\If X-I=2
\Then I-1\->I
N+1\->N
\IfEnd
\List 1[I+2]-\List 1[I+1]\->A
\List 1[I+3]-\List 1[I+2]\->B
B-A\->C
N(A+B+NC)/2+\List 1[I+2]\->M
\IfEnd
"RESULT"
M\Disp\LpWhile 1=1
%End