2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Линейная интерполяция в Python
Сообщение05.10.2017, 15:12 


27/09/17
22
Добрый день! Второй день бьюсь над задачей, но она все никак не выходит.
Задача состоит в следующем: даны n узлов и n значений , необходимо написать функцию, которая бы строила полином первой степени на каждом интервале [x(i);x(i+1)] (линейная интерполяция), графиком должна быть, соответственно кусочно-линейная функция.
Знаю, что в numpy есть numpy.interp, которая делает это все в несколько строчек, но задание состоит в том, чтобы написать свой интерполятор.
Вот мои попытки:
код: [ скачать ] [ спрятать ]
Используется синтаксис Python
def lin(x,y,t):
   for i in range(len(x)):
        if x[i]==t:
            return (f(t))
            break
        elif x[i]>t:
            max=x[i]
            break
        elif x[i]<t:
            min=x[i]
            break
        c=(f(max)-f(min))*(t-min)/(max-min)+f(min)
    return c
ylin=[lin(x, y, i) for i in x]
plt.plot(x,ylin, 'm')
plt.grid(True)
plt.show()
 

Здесь
Используется синтаксис Python
max
-это x(i+1), a
Используется синтаксис Python
min
-x(i).
При запуске данного кода, выдается ошибка:
return c
^
IndentationError: unindent does not match any outer indentation level

Хотя вроде бы, все пробелы и табуляции соблюдены.
Надеюсь, смогу здесь найти помощь и буду очень благодарен за любые советы.
Заранее спасибо!

 Профиль  
                  
 
 Re: Линейная интерполяция в Python
Сообщение05.10.2017, 15:22 
Заслуженный участник


11/05/08
32166
Я в питонах не разбираюсь, но у Вас цикл какой-то дикий -- "максимум" так никогда и не будет присвоен, а "минимум" окажется не тем, который нужен. Кроме того, первая из трёх веток условного оператора совершенно излишня.

Да, а отступы действительно чуть сбиты: for начинается с 4-й позиции, а return -- с 5-й.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group