2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 15:24 


24/03/13
5
Как построить в программе Wolfram Matematica сплайн интерполяцию функции ?
Написал такой код в этой программе
$f[x_] = \sin[x]/((1 + x^6)^2)$
$a = -3.14;$
$b = 3.14;$
$n = 6;$
$h = (b - a)/n;$
$x[i_] = a + ih$
$w[x_, i_] = (x - x[i])/h$

$For[i = 0, i \leqslant n, i++, y[i] = f[x[i]]]$
$A[1] = 4 h;
For[i = 0, i \leqslant n, i++, De[i] = (y[i + 1] - y[i])/h]
B[1] = De[1] - De[0]
For[i = 2, i \leqslant n - 2, i++, A[i] = 4 h - hh/A[i - 1];
 B[i] = De[i] - De[i - 1] - B[i - 1]h/A[i - 1];]
Eps = 4 h;$

$fi = h;
A[n - 1] = Eps - hfi/A[n - 2];
B[n - 1] = De[n - 1] - De[n - 2] - B[n - 2]fi/A[n - 2];
q[n - 1] = B[n - 1]/A[n - 1];
For[i = n - 2, i \geqslant 1, i--, q[i] = (B[i] - hq[i + 1])/A[i]]
q[n] = 0;
q[0] = 0;
Clear[i];$

F[x_, i_] = 
 w[x, i]y[1 + i] + (1 - w[x, i])y[i] + 
  h^2((w[x, i]^3 - w[x, i])
      q[1 + i] + ((1 - w[x, i])^3 - (1 - w[x, i]))q[i])
g3[x_] = Which[-3.14 \leqslant x \geqslant -2.09, F[x, 0], -2.09 \leqslant x \geqslant -1.04, 
   F[x, 1], -1.04 \leqslant x \geqslant 2, F[x, 2]
   ];
Plot[{g3[x], f[x]}, {x, -3, 2}, PlotRange \to All]
Но функция сплайна у меня сильно рассходится с графиком исходным, подскажите, пожалуйста, может в коде где ошибка ?

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 15:37 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Проверьте сами:
1. Проходит ли интерполирующая кривая через узлы интерполяции?
2. Возьмите в качестве тестовой функции степенной многочлен той же степени, что и сплайн. Должно быть точное совпадение.

 Профиль  
                  
 
 Posted automatically
Сообщение24.03.2013, 15:41 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Околонаучный софт»

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 15:44 


24/03/13
5
profrotter в сообщении #700814 писал(а):
Проверьте сами:
1. Проходит ли интерполирующая кривая через узлы интерполяции?

Нет, в том то и дело, что значения отличаются, но они отличаются на тысячных.
То есть функция в $x=1$ есть 1.23467, а сплайн 1.23498
Подскажите, где в коде может быть ошибка ?

-- 24.03.2013, 17:00 --

profrotter писал(а):

2. Возьмите в качестве тестовой функции степенной многочлен той же степени, что и сплайн. Должно быть точное совпадение.

Вы правы, взял кубический многочлен в качестве тестовой функции. Сплайн с ним практически сливается. Но почему так не получается для моей функции, которая дана в условии. (Она в 1-ой строчке кода)

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 19:21 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Код ваш в том виде, в котором он наблюдается никто проверять не будет. Поместите его в теги [cоdе][/cоdе]. Я в математике этой не работаю, но кто-нибудь глянет наверняка.

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

Так что всякое возможно и ошибка в коде и просто непригодность выбранного метода интерполяции для вашей функции.

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 19:32 


24/03/13
5
profrotter писал(а):
Поместите его в теги [cоdе][/cоdе].

А у меня нет прав на редактирование уже своего поста.

Просьба к модераторам: отредактируйте шапку моей темы, пожалуйста.

Заметил, что многочлены хорошо интерполируются. Функции типа косинуса, синуса, тоже мой код хорошо интерполирует. Пробую интерполировать функции вида $sin(x)/(1+x^6)^k$, где k число. По условию задачи оно 0.5. Пробую его изменять: чем больше это число, тем хуже интерполяция выполняется. А чем меньше, тем лучше.
При моем числе 0.5 уже расхождение сплайна и заданной функции сильные, а при 0.05 они практически сливаются.

-- 24.03.2013, 20:36 --

profrotter писал(а):
просто непригодность выбранного метода интерполяции для вашей функции.

Это врятли, у меня в задании нужно решить эту задачу именно этим методом. Значит уже предполагается, что тут все должно быть нормально.

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 19:38 
Заслуженный участник


25/02/11
1797
Для приближения сплайнами есть функция Interpolation.

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 19:46 


24/03/13
5
Vince Diesel писал(а):
Для приближения сплайнами есть функция Interpolation.

Вроде в программе Wolfram Matematica такой функции нет.

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 19:59 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Есть такая партия функция. Читайте ref/Interpolation в справке. Также tutorial/ApproximateFunctionsAndInterpolation и guide/CurveFittingAndApproximateFunctions.

 Профиль  
                  
 
 Re: Как построить в программе Wolfram Matematica сплайн ?
Сообщение24.03.2013, 20:07 


24/03/13
5
Aritaborian писал(а):
Есть такая партия функция..

Даже если есть, то нам нельзя пользоваться ею. Задачу нужно решить чисто математически. Иначе бы я бы тот код в шапке темы не писал. Если кратко, то я использую метод прогонки в том коде. Потом найденные коэффициенты подставляю в функцию и получаю результат.

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

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



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

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


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

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