Помогите пожалуйста решить задачу аппроксимации :: Прикладное программирование :: Компьютерный форум Ru.Board
Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогите пожалуйста решить задачу аппроксимации

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

neo0077

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее... [?]

Всего записей: 3 | Зарегистр. 21-08-2014 | Отправлено: 12:31 21-08-2014
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У Вас это - не аппроксимация (точнее, интерполяция), а экстраполяция, ибо значение 40 не входит в интервал значений ни одного из массивов. А экстраполяция - штука опасная.  
 
Также, не понял: это что за задача интерполяции на целочисленных данных?

Всего записей: 2505 | Зарегистр. 21-06-2005 | Отправлено: 17:29 21-08-2014 | Исправлено: XPEHOMETP, 17:30 21-08-2014
neo0077

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нееее... не целочисленные... Я ошибся... Округление либо до целого либо до 1 после запятой.
По значению 40...  
Мне нужно по ряду T: array[1..8] of integer = (20,100,150,200,250,300,350,375);  
Получить значения рядов  
a: array[1..8] of integer =(250,230,224,223,197,173,167,164);  
b: array[1..8] of integer = (460,435,460,505,510,520,480,450);  
 
Например.
Т.е., теоретически все просто...  
T_иск=40.
Видим, что значение 40 по ряду Т больше 20 но меньше 100, значит, 20+100 = 120/2=60  
(T=(Т1+Т2/2)=60)  
Соответственно, тоже делаем с двумя другими рядами:
(A=(а1+а2)/2) и (B=(b1+b2)/2).
И сравниваем новое значение T c рядом Т.  
Значение 40 попадает в диапазон от 20 до 60. Тогда, 60+20=80/2 = 40
И соответственно пересчитываем А и В

Всего записей: 3 | Зарегистр. 21-08-2014 | Отправлено: 17:38 22-08-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее... [?], не паскаль конечно, но на безрыбье...

Всего записей: 1580 | Зарегистр. 01-11-2004 | Отправлено: 13:58 23-08-2014 | Исправлено: ne_viens, 14:02 23-08-2014
neo0077

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Хоть что-то. Это си, насколько я понял. Я паскаль/дельфи только знаю... ну и бейсик конечно... яваскрипт, параметрич. языки типа адпл не в счет.  
Не понятен цикл.
 
for (i=0; i< ((ST/SF)-1); ++1)
{
If..... goto L1
 
}
 
Return -1
 
L1:
 
 
 
Кстати, в студенчестве нам говорили что использование ссылок GOTO - признак дурного тона =)))) типо пришло из примитивного бейсика)))

Всего записей: 3 | Зарегистр. 21-08-2014 | Отправлено: 19:56 24-08-2014 | Исправлено: neo0077, 21:28 24-08-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цикл ищет, в какой интервал попадает введённое число, 20-100, 100-150, 150- ...
 
Насчёт GOTO- я не верующий по натуре, если его где то удобно использовать, пользую.
 
И ещё я сомневаюсь, что задача решаема при помощи аппроксимации. Если, конечно, я правильно понял суть проблемы- найти точки на отрезках a(n)-a(n+1) и b(n)-b(n-1) пропорционально соответствующие положению точки T в отрезке Т(n)-T(n+1).

Всего записей: 1580 | Зарегистр. 01-11-2004 | Отправлено: 12:45 25-08-2014
chAlx

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 Подскажите как запрограммировать, ну или хоть какой это численный метод....  

Это классическая задача интерполяции. Решается сотней способов, почти все из которых основаны на составлении функции, проходящей через заданные точки. Соответственно, потом в эту функцию можно подставить новые значения аргументов и получить новые значения результатов. Например, предложенное усреднение соседних точек -- это линейная интерполяция (один из самых простых и неточных методов). Более интересных результатов можно ожидать от полиномиальной интерполяции или более сложных (чем линейный) сплайнов.
 
Помимо Педии, можно посмотреть краткие описания алгоритмов интерполяции вместе с исходниками либы, их реализующей:
http://alglib.sources.ru/interpolation/

Всего записей: 1691 | Зарегистр. 19-03-2003 | Отправлено: 13:40 28-08-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Помогите пожалуйста решить задачу аппроксимации


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru