Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Интерполяция сплайном. / 11 сообщений из 11, страница 1 из 1
08.01.2006, 14:41
    #33471763
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
Интересует либо алгоритм, либо модуль питона.

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

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

Если более одного параметра - даже алгоритмы едва ли найдете.
Кривую. Функцию одной переменной.
...
Рейтинг: 0 / 0
08.01.2006, 16:04
    #33471865
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
Алгоритм нашёл. Тоесть не алгоритм, а математеку. По математике написанна достаточно страшная прога на С++ без скольконебудь внятных комментариев. Сижу разбираюсь.
...
Рейтинг: 0 / 0
08.01.2006, 18:04
    #33471952
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
А что там такого очень уж страшного может быть?
Кусочно-гладкая функция, границами этих кусков являются отсчёты измерений.
Коэффициенты вычисляются из граничных условий: значения самих полиномов на границе равны отсчётам измерений, производные левого полинома равны производным правого вплоть до степени гладкости сплайна.
По идее, ничего кошмарного, насколько я помню, на практических занятиях на 2 пары нам задавали написание интерполяции квадратичным/кубическим сплайном на Фортране.
...
Рейтинг: 0 / 0
08.01.2006, 18:16
    #33471962
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
DocAlА что там такого очень уж страшного может быть?
Кусочно-гладкая функция, границами этих кусков являются отсчёты измерений.
Коэффициенты вычисляются из граничных условий: значения самих полиномов на границе равны отсчётам измерений, производные левого полинома равны производным правого вплоть до степени гладкости сплайна.
По идее, ничего кошмарного, насколько я помню, на практических занятиях на 2 пары нам задавали написание интерполяции квадратичным/кубическим сплайном на Фортране.
Ну в общем всё просто. Но мне так лень думать сегодня:)
...
Рейтинг: 0 / 0
08.01.2006, 20:49
    #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
08.01.2006, 21:00
    #33472041
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
А что тебя так пугает?
...
Рейтинг: 0 / 0
08.01.2006, 21:30
    #33472068
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
DocAlА что тебя так пугает?
Да чёт мя глючит.
Никак написать не могу. У меня сегодня мозги малость перегрелись.
...
Рейтинг: 0 / 0
08.01.2006, 23:11
    #33472135
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерполяция сплайном.
Ура, блин. Коэффециенты правильно рассчитал.
...
Рейтинг: 0 / 0
09.01.2006, 00:05
    #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]