powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Интерполяция сплайном.
11 сообщений из 11, страница 1 из 1
Интерполяция сплайном.
    #33471763
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует либо алгоритм, либо модуль питона.

Лучше и то и другое.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33471835
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сколько параметров? То есть интерполируем чего - кривую, поверхность или многомерные поверхности?

Если более одного параметра - даже алгоритмы едва ли найдете.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33471859
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕретикА сколько параметров? То есть интерполируем чего - кривую, поверхность или многомерные поверхности?

Если более одного параметра - даже алгоритмы едва ли найдете.
Кривую. Функцию одной переменной.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33471865
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм нашёл. Тоесть не алгоритм, а математеку. По математике написанна достаточно страшная прога на С++ без скольконебудь внятных комментариев. Сижу разбираюсь.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33471952
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что там такого очень уж страшного может быть?
Кусочно-гладкая функция, границами этих кусков являются отсчёты измерений.
Коэффициенты вычисляются из граничных условий: значения самих полиномов на границе равны отсчётам измерений, производные левого полинома равны производным правого вплоть до степени гладкости сплайна.
По идее, ничего кошмарного, насколько я помню, на практических занятиях на 2 пары нам задавали написание интерполяции квадратичным/кубическим сплайном на Фортране.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33471962
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlА что там такого очень уж страшного может быть?
Кусочно-гладкая функция, границами этих кусков являются отсчёты измерений.
Коэффициенты вычисляются из граничных условий: значения самих полиномов на границе равны отсчётам измерений, производные левого полинома равны производным правого вплоть до степени гладкости сплайна.
По идее, ничего кошмарного, насколько я помню, на практических занятиях на 2 пары нам задавали написание интерполяции квадратичным/кубическим сплайном на Фортране.
Ну в общем всё просто. Но мне так лень думать сегодня:)
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33472034
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.alexeypetrov.narod.ru/C/spline_about.html

Памагите!!!

Чё вот это за баян такой:
a1 - b1h1 + c1h12 - d1h13 = y0
ak = yk, k=1,2,..N
ak-1 = ak - bkhk + ckhk2 - dkhk3, k=2,3...N
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33472041
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тебя так пугает?
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33472068
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlА что тебя так пугает?
Да чёт мя глючит.
Никак написать не могу. У меня сегодня мозги малость перегрелись.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33472135
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура, блин. Коэффециенты правильно рассчитал.
...
Рейтинг: 0 / 0
Интерполяция сплайном.
    #33472159
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал. Кому надо пользуйте. Но нет обработки ИС и проверки валидности точек.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
def spline(points, dx =  1 ):
    x = map(lambda p: float(p[ 0 ]), points)
    y = map(lambda p: float(p[ 1 ]), points)
    N = len(points) -  1 
    h = {}
    l = {}
    delta = {}
    _lambda = {}
    c = {}
    c[ 0 ] =  0 
    c[N] =  0 
    d = {}
    b = {}
    r = []
    for i in range( 1 , N+ 1 ):
        h[i] = x[i] - x[i- 1 ]
        l[i] = (y[i] - y[i- 1 ]) / h[i]
    delta[ 1 ] = - h[ 2 ]/( 2  * (h[ 1 ] + h[ 2 ])) 
    _lambda[ 1 ] =  1 . 5  * (l[ 2 ] - l[ 1 ]) / (h[ 1 ] + h[ 2 ])
    for i in range( 3 , N+ 1 ):
        delta[i- 1 ] = - h[i] / ( 2  *h[i- 1 ] +  2  * h[i] + h[i- 1 ] * delta[i- 2 ])
        _lambda[i- 1 ] = ( 3  * l[i] -  3  * l[i- 1 ] - h[i- 1 ] * _lambda[i- 2 ]) / \
                       ( 2  * h[i- 1 ] +  2  * h[i] + h[i- 1 ] * delta[i- 2 ])
    for i in range(N,  1 , - 1 ): c[i- 1 ] = delta[i- 1 ] * c[i] + _lambda[i- 1 ]
    for i in range( 1 , N+ 1 ):
        d[i] = (c[i] - c[i- 1 ]) / ( 3  * h[i])
        b[i] = l[i] + ( 2  * c[i] * h[i] + h[i] * c[i- 1 ]) /  3 

    i = x[ 0 ]
    while (i <= x[- 1 ]):
        for j in range( 1 , N+ 1 ):
            if (i >= x[j- 1 ]) & (i <= x[j]): break
        f = y[j] + b[j] * (i - x[j]) + c[j] * ((i - x[j]) **  2 ) + d[j] * ((i - x[j]) **  3 )
        print f
        r.append([i, f])        
        i += dx
    return r
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Интерполяция сплайном.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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