powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Интерполяция кривых?
6 сообщений из 6, страница 1 из 1
Интерполяция кривых?
    #37407865
KamskyPaul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
См. Приложение
Есть 10 экспериментальных точек зависимости А(мощность двигателя) от B (коэффициент производительности) - красные точки - для 10 значений пороговых оборотов двигателя (С) - 10 кривых. Интерполировать 10 точек и построить кривую - примерно понятно как. Вроде бы подойдет полиномиальная интерполяция. В результате получу 10 уравнений кривых. А как "синтерполировать" эти 10 кривых, чтоб получать значение величины А в зависимости от В не только для пороговых величин С (9400, 9600, 9800...), но и для промежуточных (9405.6, 9789.3,...). Подскажите, пожалуйста, название такой задачи и названия возможных путей решений.
С численными методами давно уже не сталкивался...
...
Рейтинг: 0 / 0
Интерполяция кривых?
    #37407926
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KamskyPaul,

По-хорошему, нужна математическая модель. То есть, предположение о том, что B=F p (A,C), где p есть вектор параметров, инвариантных по A и C. Тогда минимизируя функции F p (A,C i )-B эмп (A,C i ), мы получаем общую зависимость F.
Если ничего нет, сойдёт предположение F p (A,C)=∑P j (C)A j , P j (C)=∑p ij C i . Таким образом, после получения полигонов для C n , мы имеем по десять точек для каждого полигона P j (C) и можем вывести уже его.
...
Рейтинг: 0 / 0
Интерполяция кривых?
    #37407961
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KamskyPaul,

Допустим ты получил:

f(x, 9400) = A1 * x^2 + B1 * x + C1
f(x, 9500) = A2 * x^2 + B2 * x + C2
f(x, 9600) = A3 * x^2 + B3 * x + C3
f(x, 9700) = A4 * x^2 + B4 * x + C4
f(x, 9800) = A5 * x^2 + B5 * x + C5

Попробуй вывести графики из точек A1..A5, B1..B5, C1..C5
Если получаются довольно гладкие ломанные, то можешь банально для 9450 A вычислить как что-то между A1 и A2. Линейно например, т.е. (A1 + A2) / 2.

Но если коэффициенты располагаются не "гладко" или точность не устраивает, тогда тебе надо искать не интерполяционный полином одной перменной f(x), а интерполяционную поверхность двух переменных f(x, z), где z - это пороговая величина.

Собственно, расположи свои графики на рисунке не один выше другого, а в 3D, отложив по третьей оси 9400 ... 9800 - вот тебе и поверхность (пока что, только из 10х10 точек,которые и надо интерполировать "простынкой").

Простейший вариант, описанный в начале - это билинейная интерполяция:
http://ru.wikipedia.org/wiki/Билинейная_интерполяция
...
Рейтинг: 0 / 0
Интерполяция кривых?
    #37407966
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

Точнее не билинейная, а в одном направлении - полиномом какой-то там степени, а в другом - линейная ))
...
Рейтинг: 0 / 0
Интерполяция кривых?
    #37407975
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно брать "полоски" 3х2 точек и покрывать их функцией a1 x^2 + a2 xy + a3 y^2 + a4 x + a5 y + a6 = 0.

В какую сторону брать 3, а в какую - 2, надо поэкспериментировать.
...
Рейтинг: 0 / 0
Интерполяция кривых?
    #37410972
KamskyPaul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.к. эта задача была "на один раз", нашел замечательный сайт http://zunzun.com/ , вбил туда свои известные точки, получил в ответ функцию на С++ (
Код: plaintext
1.
double Spline3D_evaluation(double x_in, double y_in)
{...
), интерполирующую сплайнами мою поверхность, ну и получил изображение этой поверхности.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Интерполяция кривых?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]