2014 dxdy logo

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

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


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


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



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


18/05/06
13437
с Территории
Кому должны? кто это сказал?

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


23/08/07
5420
Нов-ск
Alexeybk5 в сообщении #639280 писал(а):
так ведь For и If должны быть для выполнения этой задачи "снаружи" как это совместить)))?

Какие For и If?

Функция сплайн
1) в цикле ищет отрезок, куда попал аргумент (точка, в которой сплайн вычисляется)
2) находит значение линейной функции на найденном отрезке


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

Пишите функцию сплайн, чтобы можно было пользоваться ей как черным ящиком.

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


27/10/11
228
ИСН в сообщении #639284 писал(а):
Кому должны? кто это сказал?

ну а как же тогда "ходить" по узлам разбиения, если "ноги" не имеют итераций?

Положим что
Код:
sger3[x0_] := Module[{x = x0, j, z, n},
  For[j = 1, j <= n, j++,
   If[(x <= z[[j + 1]]) && (x >= z[[j]]),
    s3 = 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 ничего не записывается ( я ввёл функцию внешнюю и превратил s3 в переменную, куда должны присваиваться значение шагов...)

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


18/05/06
13437
с Территории
Возврат где?

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


27/10/11
228
TOTAL в сообщении #639285 писал(а):
Alexeybk5 в сообщении #639280 писал(а):
так ведь For и If должны быть для выполнения этой задачи "снаружи" как это совместить)))?

Какие For и If?

Функция сплайн
1) в цикле ищет отрезок, куда попал аргумент (точка, в которой сплайн вычисляется)
2) находит значение линейной функции на найденном отрезке


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

Пишите функцию сплайн, чтобы можно было пользоваться ей как черным ящиком.

ну так ведь вот она ? и для неё нужен цикл, который не хочет работать)))

Код:
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]])]]


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

-- 02.11.2012, 21:08 --

ИСН в сообщении #639289 писал(а):
Возврат где?


Код:
sger3[x0_] := Module[{x = x0, j, z, n},
  For[j = 1, j <= n, j++,
    If[(x <= z[[j + 1]]) && (x >= z[[j]]),
     s3 =
      f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
       f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])]]
   Return[s3]]
sger3[2]

Null Return[s3]

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


18/05/06
13437
с Территории
У них упоротый синтаксис. Там надо примерно так:
Код:
...Module[x,
.....;
.....;
.....;
.....;
s3
]

Return из середины не работает. То есть, наверное, как-то можно и с ним, но я не знаю, как.

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


23/08/07
5420
Нов-ск
sger3[x0_] := Module[{x = x0, j, z, n},

j - это аргумент функции или что?

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


18/05/06
13437
с Территории
Нет, это не аргумент.

-- Пт, 2012-11-02, 21:10 --

Это внутренняя переменная.

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


27/10/11
228
ИСН в сообщении #639291 писал(а):
У них упоротый синтаксис. Там надо примерно так:
Код:
...Module[x,
.....;
.....;
.....;
.....;
s3
]

Return из середины не работает. То есть, наверное, как-то можно и с ним, но я не знаю, как.

Проставил, но нефига не изменилось..
Код:
sger3[x0_] := Module[{x = x0, j, z, n},
   For[j = 1, j <= n, j++,
     If[(x <= z[[j + 1]]) && (x >= z[[j]]),
       s3 =
        f[z[[j]]]*(x - z[[j + 1]])/(z[[j]] - z[[j + 1]]) +
         f[z[[j + 1]]]*(x - z[[j]])/(z[[j + 1]] - z[[j]])
          Return[s3]];];
   ];
sger3[2]

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


23/08/07
5420
Нов-ск
f[z[[j]]] - вот этот дурдом с миллионом скобок -ь тоже требование языка?

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


27/10/11
228
TOTAL в сообщении #639299 писал(а):
f[z[[j]]] - вот этот дурдом с миллионом скобок -ь тоже требование языка?

Да, перыве две скобки, это jтый элемент массива
и третьи, это скобки квадратные должны быть для функции...

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


23/08/07
5420
Нов-ск
z[j] - а вот это какой элемент массива?

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


27/10/11
228
TOTAL в сообщении #639307 писал(а):
z[j] - а вот это какой элемент массива?

z[2]
{-1., -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1.}[2]

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


18/05/06
13437
с Территории
Alexeybk5 в сообщении #639295 писал(а):
Проставил, но нефига не изменилось.
Что и где Вы проставили? Возврат должен идти последним выражением в функции, тупо вообще последним, после всего, не внутри ничего.

-- Пт, 2012-11-02, 21:23 --

(не вообще, я имею в виду, а для наших текущих целей.)

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


23/08/07
5420
Нов-ск
Alexeybk5 в сообщении #639308 писал(а):
TOTAL в сообщении #639307 писал(а):
z[j] - а вот это какой элемент массива?

z[2]
{-1., -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1.}[2]

В каких пределах меняется индекс у массива и что такое z[j]?

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

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



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

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


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

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