Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2008, 13:43   #1
Auster
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 11
По умолчанию линейная интерполяция

Здравствуйте, уважаемые эксперты.
Передо мной стоит следующая задача: выполнить в Delphi линейную интерполяцию среди массива (30элементов) вещественных чисел и вывести значение. Пользователю доступно 2 поля: ввод числа и полученное значение. Все работает при интерполляции среди 3-х чисел в таком виде p:=Y[i]+(Y[i+1]-Y[i])*(E-X[i])/(X[i+1]+X[i]);
Подскажите пожалуйста:
1.какой массив лучше выбрать (статич. или динамич) и инициализировать элементы одномерного массива, значения известны и постоян.;
2.правильно ли использовать цикл if_then_else? или как-то иначе узнать в какой интервал из 2-х попала величина и выполнить интерполяцию?

Последний раз редактировалось Auster; 22.04.2008 в 13:46.
Auster вне форума Ответить с цитированием
Старый 22.04.2008, 17:15   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

1. Если у вас элементы массива известны и простоянны, то зачем вам динамический массив? Создавайте статический.
2. Совершенно правильно
Код:
 for i:=1 to n do
   if E <= X[i] then break;
 i:=i-1;
И проверьте формулу интерполяции, в знаменателе должна быть разность иксов.

Последний раз редактировалось _Dmitry; 22.04.2008 в 17:18.
_Dmitry вне форума Ответить с цитированием
Старый 22.04.2008, 17:41   #3
Auster
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 11
По умолчанию

Cпасибо, Дмитрий. Хотел бы уточнить, а как собственно присвоить значения элементам массива, т.е. в виде А=(0.1, 0.5, 1.8 ...) дельфя рагается(( и еще, при объявлении массива какой тип данных использоват
var My_Array : array[0..40] of Real?; Extended?; Single?
Auster вне форума Ответить с цитированием
Старый 22.04.2008, 17:51   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

А что такое "А", вы же писали, что у вас массивы "X" и "Y".
если значения массива постоянны и не меняются, то можно так:
Код:
 const
   X: array[0..40] of double = (0.1,0.5,1.8,...);
   Y: array[0..40] of double = (...);
Ну, а тип данных зависит от типа конкретной задачи, смотрите в Help чем они отличаются. Но при этом учитывайте, что процессор все считает в Extended, а затем программа производит обрезание до заданного типа.
_Dmitry вне форума Ответить с цитированием
Старый 22.04.2008, 18:02   #5
Auster
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 11
По умолчанию

"А"-очепятка), массивов действительно 2, спасибо за скорый и понятный ответ
Auster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск решения,линейная модель. ZhukElena Microsoft Office Excel 9 24.04.2008 11:20