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

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

В начале по запросу вводится массив значений функции, взятых через N от 3 до 255 равных интервалов аргумента в виде:
{x0, x1,...,xN-1}
Затем программа запрашивает значение аргумента, любое вещественное в пределах от 0 до (N-1) и выдает результат, после чего запрашивает следующее... Бесконечный цикл в общем.

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

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

Добавил файл конвертированный в формат *.g1m пригодный для загрузки в калькулятор по FA-124 и в эмулятор калькулятора CASIO fx-9860G SD который можно загрузить отсюда http://pmk.arbinada.com/node/522

File attachments: 
Прикрепленный файлРазмер
File INTERPOL.rar531 байт
File INTP9860.rar436 байтов
Метки публикаций: 
Undefined

Комментарии

Упс... Ой, прошу прощения, я обнаружил опечатку в программе и пытаясь заменить файл программы исправленным нечаяно удалил всё. Просьба товарищам, выполнившим первые 4 закачки, взять уже исправленный файл.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Пропали комментарии про эмулятор Casio. Интересно,(+) удалены или сбойнуло?

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Я сам виноват. Хотел удалить некондиционный файл и нечаянно удалил всю тему. Тему создал заново, ну а комментарии не стал.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

А, понятно :) ..

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

А для эмулятора Вы выложите файл? (этот не загрузить через эмуляцию SD каротчки, как я понял.

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Да, выложу. Только немного позже. После обновления "форточек" почему-то программа FA-124 не хочет с fx-9860G стыковаться. Поэтому, хотя я в 9860 программу успешно перегрузил, но слить в комп в новом формате пока не выходит. Решу эту проблемку и выложу.

Да этот файл именно через эмуляцию доступа к SD-карточке невозможно. Но можно просмотреть текст программы в FA-123 и забить его в эмулятор вручную. Но это не наш метод ;)

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Спасибо! А метод да, не наш ;) ..

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Ну вот добавил файл в формате FA-124, пригодный для загрузки в эмулятор

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Ошибка в программе. В первой строчке программы встретил ошибку.
"INPUT {SAMPLES}"?->List 1
Насколько помню, модели 9750G Plus (и 9850, 9950) необходимо предварительное объявление размера списка командой DIM, типа: x->DIM List1 (где x от 1 до 255).
А внесение значений в список производится в формате a->List1[y] где y номер ячейки списка от 1 до 255 (но не более объявленного ранее командой DIM).
Для многих моделей CASIO необъявление размера списка ошибкой не является (например для Algebra), но вторую ошибку (List1 без [y]) не переживет ни одна.

Вернулся к программе сообразив, что первая строка должна быть неисполняемой, а данные предварительно внесены в List1. Внес в List1 значения 1, 2, 3, 4, 5, 6. На запрос "TIME?" ввел 3,5 и получил в ответ 4,5 вместо ожидаемого от интерполяции результата 3,5. В связи с чем возник вопрос, что именно (и как) эта программа считает?
С книгой по которой делалась программа я не знаком, а, вообще, несколько готовых программ интерполяции есть в книге Дьяконова: "Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ". Еще существует неплохая книга по теме: "Интерполяция. Методы и компьютерные технологии их реализации", авторы: Половко и Бутусов. Обе встречались в интернете. Книгу Дьяконова видел в DJVU и в Ворде, последний вариант малопригоден из-за ошибок распознавания.

Во первых, счёт времени идёт от 0 а не от 1. То есть в секунду номер 0 у вас значение 1, в секунду номер 1 - значение 2 ... В секунду номер 5 - значение 6. Поэтому у Вас и вышло на 3,5 секунде значение 4,5.
Во вторых - в версии плюс массив нормально вводится запросом из программы, если перед списком значений поставить фигурную скобку "{". При этом закрывающуюся скобку вполне можно забыть.
Так что по поводу ошибки - это Вы погорячились. Может там какая-либо ошибка и есть, но точно не то, на что Вы указали. Желаю творческих успехов в программировании.

Мои программируемые калькуляторы:
Б3-21, Б3-34, МК-61, МК-52, МК-85
CASIO: cfx-9850GB+, fx-9750G+, fx-9750GII, fx-9860G, Algebra fx-2.0, fx-5800P, fx-7400G+
HP: 50G, 48G, 35s
TI: Nspire-CAS, Voyage-200, 89Titanium
SHARP EL-9600G

Спасибо за пояснения. Может есть смысл чуть подробнее это разъяснить в описании к программе.