2014 dxdy logo

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

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




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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:04 
Аватара пользователя
Alexeybk5 в сообщении #639280 писал(а):
так ведь For и If должны быть для выполнения этой задачи "снаружи" как это совместить)))?

Какие For и If?

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


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

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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:05 
ИСН в сообщении #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 
Аватара пользователя
Возврат где?

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:07 
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 
Аватара пользователя
У них упоротый синтаксис. Там надо примерно так:
Код:
...Module[x,
.....;
.....;
.....;
.....;
s3
]

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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:09 
Аватара пользователя
sger3[x0_] := Module[{x = x0, j, z, n},

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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:10 
Аватара пользователя
Нет, это не аргумент.

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

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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:13 
ИСН в сообщении #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 
Аватара пользователя
f[z[[j]]] - вот этот дурдом с миллионом скобок -ь тоже требование языка?

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:18 
TOTAL в сообщении #639299 писал(а):
f[z[[j]]] - вот этот дурдом с миллионом скобок -ь тоже требование языка?

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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:21 
Аватара пользователя
z[j] - а вот это какой элемент массива?

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:22 
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 
Аватара пользователя
Alexeybk5 в сообщении #639295 писал(а):
Проставил, но нефига не изменилось.
Что и где Вы проставили? Возврат должен идти последним выражением в функции, тупо вообще последним, после всего, не внутри ничего.

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

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

 
 
 
 Re: Построение интерполяционного сплайна степени 1
Сообщение02.11.2012, 20:26 
Аватара пользователя
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