2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6  След.
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 19:13 
Заслуженный участник
Аватара пользователя


18/05/06
13437
с Территории
Ага! А зачем у Вас их десять? Остальные, они вообще как, нужны? Вроде нужны. Но дак надо их тоже как-то когда-то использовать, э?

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


27/10/11
228
ИСН в сообщении #639237 писал(а):
Ага! А зачем у Вас их десять? Остальные, они вообще как, нужны? Вроде нужны. Но дак надо их тоже как-то когда-то использовать, э?


Да, но для этого нужна конструкция похожая на это ?

Код:
For[j = 1, j <= n, j++,
If[(x <= z[[j + 1]]) && (x >= z[[j]]),
  s3[x_] :=
   f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
    f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])]]

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


23/08/07
5420
Нов-ск
szb := Table[{a + (h/m)*k, s2[a + (h/m)*k]}, {k, 0, n}];

Да теперь забудьте, как устроен внутри сплайн, относитесь к нему как к черному ящику.
n1=100000 или n1=10*n
h1=(b-a)/n1
szb := Table[{a + h1*k, s2[a + h1*k]}, {k, 0, n1}];

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


18/05/06
13437
с Территории
У меня там выше был приведён издевательский код. Допустим, a=0, x=1000, h=17. В силах ли человеческих предсказать, на каком по счёту интервале разбиения окажется наш x, или для этого нужен долгий и упоротый перебор?

-- Пт, 2012-11-02, 20:22 --

TOTAL, Ваш совет будет очень и очень актуален, но - лишь после того, как чёрный ящик станет выдавать правильный результат. Не до.

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


27/10/11
228
TOTAL
Спасибо
ИСН
Да, мы можем и не перебором узнать где лежит 17, но компьютер ведь не может, бес использования, наприме, метода половинчатого деления...

Разве нет простого способа найти до каких точек надо писать эту функцию... ну уже ведь близко)))

-- 02.11.2012, 20:30 --

Это не правильно,
Код:
For[j = 1, j <= n, j++,
If[(x <= z[[j + 1]]) && (x >= z[[j]]),
  s3[x_] :=
   f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
    f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])]]


И это не правильно...
Код:
s2[x_] :=
f[z[[1]]]*(x - z[[n + 1]])/(z[[1]] - z[[n + 1]]) +
  f[z[[n + 1]]]*(x - z[[1]])/(z[[n + 1]] - z[[1]])


Но а как же тогда ?
ИСН

п.с. Вы говорили, что если откажусь от того злого цикла, то Вы подскажите ))))

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


18/05/06
13437
с Территории
А я и подсказываю.
Alexeybk5 в сообщении #639254 писал(а):
Да, мы можем и не перебором узнать где лежит 17
С этого места поподробнее, пожалуйста. Как мы это можем?

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


27/10/11
228
ИСН в сообщении #639257 писал(а):
А я и подсказываю.
Alexeybk5 в сообщении #639254 писал(а):
Да, мы можем и не перебором узнать где лежит 17
С этого места поподробнее, пожалуйста. Как мы это можем?

ну видим, что 17 лежит ближе к нулю , чем к тысяче
Код:
x0=0
xn=1000
x=17

min[abs[xn-x],abs[x0-x]]


Но как это поможет ?
т.е. как это поможет понять какие точки писать в функцию
Код:
s2[x_] :=
f[z[[1]]]*(x - z[[n + 1]])/(z[[1]] - z[[n + 1]]) +
  f[z[[n + 1]]]*(x - z[[1]])/(z[[n + 1]] - z[[1]])

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


18/05/06
13437
с Территории
Ничего не понял. Ответ какой? На каком по счёту отрезке разбиения лежит x=1000? На первом? Двадцать первом? Сто двадцать первом?

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


23/08/07
5420
Нов-ск
Alexeybk5 в сообщении #639254 писал(а):
Это не правильно,
Код:
For[j = 1, j <= n, j++,
If[(x <= z[[j + 1]]) && (x >= z[[j]]),
  s3[x_] :=
   f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
    f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])]]


Попробуйте так, пусть хотя бы с перебором правильный результат выдаст.
(Все равно то, что вы там придумываете, поможет только на равномерной сетке.)

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


27/10/11
228
TOTAL в сообщении #639264 писал(а):
Alexeybk5 в сообщении #639254 писал(а):
Это не правильно,
Код:
For[j = 1, j <= n, j++,
If[(x <= z[[j + 1]]) && (x >= z[[j]]),
  s3[x_] :=
   f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
    f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])]]


Попробуйте так, пусть хотя бы с перебором правильный результат выдаст.
(Все равно то, что вы там придумываете, поможет только на равномерной сетке.)


Да, но так увы не равботает )))) в s3 почему-то ничего не заносится)))

-- 02.11.2012, 20:39 --

ИСН в сообщении #639263 писал(а):
Ничего не понял. Ответ какой? На каком по счёту отрезке разбиения лежит x=1000? На первом? Двадцать первом? Сто двадцать первом?


Вы наводите на мысль о нахождении минимума методом половинчатого деления ?

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


18/05/06
13437
с Территории
Вообще да. Если планируете в дальнейшем обобщать это на неравномерные сетки, то тайны деления нам не помогут, и придётся оставить так.

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


27/10/11
228
ИСН в сообщении #639268 писал(а):
Вообще да. Если планируете в дальнейшем обобщать это на неравномерные сетки, то тайны деления нам не помогут, и придётся оставить так.

Да, но даже если положить, не важно какую сетку. Так увы не работает))) в s3 не заносятся значения...

Код:
a = -1.;
b = 1.;
n = 10.;
m = 15;
f[x_] := Exp[x]
h = (b - a)/n;
z := Table[a + h*k, {k, 0, n}];
z

Код:
For[j = 1, j <= n, j++,
If[(x <= z[[j + 1]]) && (x >= z[[j]]),
  s3[x_] :=
   f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
    f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])]]

Код:
In[42]:= s3[3]

Out[42]= s3[3]

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


23/08/07
5420
Нов-ск
Alexeybk5 в сообщении #639267 писал(а):
Да, но так увы не равботает )))) в s3 почему-то ничего не заносится)))
Т.е. теперь понятно, как делать. А с языком программирования разбирайтесь сами, коли уж выбрали такой язык.

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


18/05/06
13437
с Территории
Так присваивать нельзя. Перепишите нормально через s3=Function[x,...]
Ещё две мелочи: n целое число (10, а не 10 с точкой), и двойные неравенства можно записывать в строчку, типа If[z[[j]]<=x<z[[j + 1]],...]

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


27/10/11
228
ИСН в сообщении #639276 писал(а):
Так присваивать нельзя. Перепишите нормально через s3=Function[x,...]
Ещё две мелочи: n целое число (10, а не 10 с точкой), и двойные неравенства можно записывать в строчку, типа If[z[[j]]<=x<z[[j + 1]],...]

так ведь For и If должны быть для выполнения этой задачи "снаружи" как это совместить)))?

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

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



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

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


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

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