2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему На страницу 1, 2, 3, 4, 5, 6  След.
 
 Построение интерполяционного сплайна степени 1
Сообщение25.10.2012, 23:01 


27/10/11
228
Здравствуйте дорогие товарищи!
У меня появился вопрос. У нас есть множество точек
$x_0,\dots,x_n$
и задаём какую нибудь функцию, положим
$f(x)=x^2$

Надо реализовать линейный интерполяционный сплайн для этой функции... И вот что получается, ведь линейный сплайн выражается формулой

$S_j (x) = a_j +b_j  (x-x_j)$
где
$a_j = f(x_j)$

и значение $b_j$ находятся по формуле
$b_{j-1}=\frac{a_j-a_{j-1}}{h}$

легко найти точки $b_j$ по этой функции.
В итоге получается, что интерполяционынй полином первой степени готов к построению....

Но Как мы можем построить эти полиномы ? Ведь это лишь график из пар точек
$(x_j,f(x_j))$

и тогда для чего нужно было искать коэфициенты $b_j$ ???

Короче я немного запутался... Помогите понять, как же тогда построить эти сплайны ?

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение25.10.2012, 23:15 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Линейный сплайн не выражается никакой формулой. Он проводится карандашом, по линеечке.
Так и построить. Вы в своём сообщении подробнейшим образом описали, как.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 00:03 


27/10/11
228
Т.е. нужно построить график по точкам ? (в wolfram Mathematica)
$(x_i,f(x_i))$
линиями, соединить точки?
и всё ?

Ну это же до боли просто ? Ведь так не может быть :-)

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 00:16 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Да, именно это большие дяди и называют линейным сплайном. Я Вам больше скажу: Вы говорите прозой на языке флективно-синтетического типа, входящем в состав индоевропейской семьи.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 02:48 
Заслуженный участник


11/05/08
32166
Alexeybk5 в сообщении #635916 писал(а):
Ну это же до боли просто ? Ведь так не может быть :-)

Именно поэтому приличные люди называть сплайнами кусочно-линейную интерполяцию как-то не любят. Обычно, говоря о сплайнах, как-то предпочитают требовать хоть какой-то, да гладкости.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 13:49 


05/09/12
2587
ewert в сообщении #635931 писал(а):
Обычно, говоря о сплайнах, как-то предпочитают требовать хоть какой-то, да гладкости.
В данном случае у нас как раз и выполняется максимальная гладкость, достижимая кривыми первого порядка - непрерывность нулевой производной. Хотя можно построить аппроксимирующий сплайн первого порядка по тем же узлам, который будет разрывным, хотя будет обеспечивать ту же точность интерполяции. Это к вопросу о том, что такой
Цитата:
линейный интерполяционный сплайн для этой функции
можно построить далеко не единственным образом. Весь вопрос в терминах - что называть сплайном. Если любую кусочно определенную функцию, тогда все в рамках терминов.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 13:59 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Точность у него тоже максимально возможная: он проходит через все точки. Точнее некуда. Но даже таких - и точных, и непрерывных - много. Тот, который нужен, отличается ещё кое-чем.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 14:12 


05/09/12
2587
ИСН в сообщении #636071 писал(а):
Точность у него тоже максимально возможная: он проходит через все точки. Точнее некуда.
Ну во первых, я не сказал "точнее", я сказал "такой же точности". Во вторых, то, что сплайн проходит через все точки вовсе не гарантирует максимальную точность - это легко показать на любом примере.
UPD Понял что мне не удалось выразить мою мысль - я имею в виду, что для большинства гладких функций можно построить линейный сплайн на той же сетке, который не будет проходить через точки, но будет точнее того, который будет проходить.
ИСН в сообщении #636071 писал(а):
Но даже таких - и точных, и непрерывных - много. Тот, который нужен, отличается ещё кое-чем.
Если вы про аппроксимацию производной в узлах сетки, то те непрерывные линейные сплайны, которые проходят через точки но не аппроксимируют производную скорее всего будут проигрывать в точности.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 14:32 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Не знаю, что такое "большинство гладких функций". Если о функции известны только её значения в конкретных точках, то всё остальное может быть каким угодно.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 14:56 


05/09/12
2587
ИСН в сообщении #636081 писал(а):
Если о функции известны только её значения в конкретных точках
то любые разговоры о точности интерполяции теряют смысл. Однако же они ведутся, просто подразумевается, что набор точек задает некую гладкую функцию с ограниченной нормой и т.д.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 15:03 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Дак это Вы фактически проводите какой-то сплайн более высокого порядка, или вообще не сплайн, а единый полином - и уже по соответствию с ним оцениваете все приближения, сделанные более скудными средствами.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение26.10.2012, 15:09 


05/09/12
2587
Или же с самого начала (как автор в первом посте и писал) мы уже имеем какую-нибудь исходную функцию, но хотим сделать её вычисление скудными средствами - например, потому что не хватает машинных ресурсов для реального времени.

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение01.11.2012, 22:54 


27/10/11
228
дорогие товарищи, здравствуйте.
Увы я не совсем правильно сформулировал вопрос в первый раз.

Нужно оценить апроксимацию функции сплайнами первого порядка. Т.е. "накопление" значений разности по модулю между функцией и соответствующим сплайном $S_j$ на отрезке $x_j,x_{j+1}$ .

Но пока проблема не в этом, а в реализации самой функции сплайна на этих участках.
Да, в узлах сетки, значение сплайна совпадает с функцией, но в промежутках, они различны.
Для того, чтобы посчитать их, я пытаюсь записать функцию, которая будет находить значение j-того сплайна, на интервале $x_j,x_{j+1}$

Код написан в Wolfram Mathematica


Код:
Для функции начальны еданные таковы
a = -10.;
b = 10.;
n = 10.;
f[x_] := Exp[x]

h = (b - a)/n;
X[n_] := Table[{a + h *k, f[a + h*k]}, {k, 0, n}]
X[n] // MatrixForm

в эту функцию надо занести данный из х и она должа записать таблицу со значениями сплайна в этой точке х.



sg1[x_, n0_] := Module[{n = n0, j, X = X[n]},
For[j = 1, j <= n + 1, j++,
If[x < (j)*h && x > (j - 1)*h,
s = Table[{j + 1,
f[X[[j, 2]]]*(x - X[[j + 1, 1]])/(X[[j, 1]] - X[[j + 1, 1]]) +
f[X[[j + 1,
2]]]*((x - X[[j, 1]])/(X[[j + 1]] - X[[j, 1]]))}, {j, 1,
n}]]]
]

x1 = Table[x, {x, a, b, 1/5}];
x1
sg1[x1, n]
s

Но почему-то вместо таблицы, в s заносится лишь одно значение, и то в формате
{***,{***,***}}
вместо {j,s_j()},т.е.{ j-тый сплайн, и значение j сплайна в точке }
как я понял, это из-за того что не выполняется правильно опирация сложения и деления в этой части кода:
"f[X[[j, 2]]]*(x - X[[j + 1, 1]])/(X[[j, 1]] - X[[j + 1, 1]]) +
f[X[[j + 1, 2]]]*((x - X[[j, 1]])/(X[[j + 1]] - X[[j, 1]]))"

Если не трудно, вы не могли бы помочь заставить этоу функцию работать ?

п.с.
Всё это я делаю чтобы найти в итоге общую погрешность между апроксимация функции линейными сплайнами...

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение01.11.2012, 23:24 


05/09/12
2587
В чем могут быть сложности? Исходная функция на отрезке есть, задаете сетку, строите сплайн, анализируете модуль отклонения - хоть график его стройте, хоть максимум ищите, хоть анализируйте график этого максимума в зависимости от частоты сетки...

 Профиль  
                  
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение01.11.2012, 23:26 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Перебором находить, между какими натуральными числами находится x/h - это, конечно, тот ещё прикол. Но ладно. Хуже другое: я не понимаю, что должна вычислять функция sg1. Значение сплайна в точке x, что ли? А зачем тогда у неё два аргумента? И зачем Вы пытаетесь сделать так, чтобы она возвращала массив?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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