2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 18:24 


18/11/09
31
Помогите разобраться с функцией InterpolatingPolynomial. Могу ли я интерполировать трехмерную кривую, заданную точками. Координаты каждой точки (x, y, z) вводятся табличной функцией.
q := {{0.00, 0.00, 0.125}, {10.00, 0.596, 0.125}, {25.00, 0.797,
0.125}, {50.00, 0.888, 0.125}, {100.00, 0.940, 0.125}, {150.00,
0.9592, 0.125}, {200.00, 0.9684, 0.125}, {250.00, 0.9729,
0.125}, {300.00, 0.976, 0.125}, {350.00, 0.9796, 0.125}, {400.00,
0.9813, 0.125}, {450.00, 0.9832, 0.125}, {500.00, 0.9847,
0.125}, {550.00, 0.9859, 0.125}, {600.00, 0.987, 0.125}, {650.00,
0.988, 0.125}, {700.00, 0.9898, 0.125}, {750.00, 0.9893,
0.125}, {800.00, 0.9896, 0.125}, {850.00, 0.9898, 0.125}, {900.00,
0.9899, 0.125}, {950.00, 0.99, 0.125}, {1000.00, 0.990, 0.125}}

g = InterpolatingPolynomial[q, {R, L}]
Программа выдает сообщение
InterpolatingPolynomial::ipab: Abscissa specification 0.` in {0.,0.,0.125} is not a point in 2 dimensions. >>

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 19:25 
Заблокирован


19/06/09

386
Судя по всему, функция работает с двумерной интерполяцией, а вы задаете интерполирование трехмерной кривой.

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 20:27 


18/11/09
31
Да нет, в примерах Help есть такой

InterpolatingPolynomial[{{{0, 0}, 1}, {{1, 0}, 7}, {{0, 1},
10}, {{2, 1}, 40}, {{3, 3}, 151}, {{1, 2}, 47}}, {x, y}]

Решение 1 + x (2 + 4 x + 5 y) + y (3 + 6 y)

и эта функция должна работать для трехмерных массивов и массивов с дифференциалами. Но в моем случае для массива, заданного как
q := {{{0.00, 0.00}, 0.125}, {{10.00, 0.596}, 0.125}, {{25.00, 0.797},
0.125}, {{50.00, 0.888}, 0.125}, {{100.00, 0.940},
0.125}, {{150.00, 0.9592}, 0.125}, {{200.00, 0.9684},
0.125}, {{250.00, 0.9729}, 0.125}, {{300.00, 0.976},
0.125}, {{350.00, 0.9796}, 0.125}, {{400.00, 0.9813},
0.125}, {{450.00, 0.9832}, 0.125}, {{500.00, 0.9847},
0.125}, {{550.00, 0.9859}, 0.125}, {{600.00, 0.987},
0.125}, {{650.00, 0.988}, 0.125}, {{700.00, 0.9898},
0.125}, {{750.00, 0.9893}, 0.125}, {{800.00, 0.9896},
0.125}, {{850.00, 0.9898}, 0.125}, {{900.00, 0.9899},
0.125}, {{950.00, 0.99}, 0.125}, {{1000.00, 0.990}, 0.125}}

g = InterpolatingPolynomial[q, {R, L}]

выдает решение
0.125 + L (0. + L (0. + L (0. + L (0. + (0. + 0. L) L)))) +
R (0. + L (0. + L (0. + L (0. + (0. + 0. L) L))) +
R (0. + L (0. + L (0. + (0. + 0. L) L)) +
R (0. + L (0. + (0. + 0. L) L) +
R (0. + (0. + 0. L) L + (0. + 0. L + 0. R) R))))
Но это не степенной полином и он не описывает заданную фунццию q.
Что бы это могло быть?

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 20:50 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Ваша функция является константой, а прога тупит с упрощением (это часто бывает; не зря в ней есть Simplify[] и FullSimplify[], иногда даже хочется, чтобы было ещё SimplifyItNowYouBitch[]).

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 21:56 


18/11/09
31
Сомневаюсь, что трехмерная функция стала константой. По крайней мере ее двумерная сестра
q := {{0.00, 0.00}, {10.00, 0.596}, {25.00, 0.797}, {50.00,
0.888}, {100.00, 0.940}, {150.00, 0.9592}, {200.00,
0.9684}, {250.00, 0.9729}, {300.00, 0.976}, {350.00,
0.9796}, {400.00, 0.9813}, {450.00, 0.9832}, {500.00,
0.9847}, {550.00, 0.9859}, {600.00, 0.987}, {650.00,
0.988}, {700.00, 0.9898}, {750.00, 0.9893}, {800.00,
0.9896}, {850.00, 0.9898}, {900.00, 0.9899}, {950.00,
0.99}, {1000.00, 0.990}}

g = SetPrecision[Collect[InterpolatingPolynomial[q, R], R], 20]

выдает результат
0.10321069314364408886 R - 0.0060921680449515548672 R^2 +
0.00021526188965000303760 R^3 - 4.9024380170309802404*10^-6 R^4 +
7.6687126570169823369*10^-8 R^5 - 8.6470460710971304929*10^-10 R^6 +
7.2830791784149045218*10^-12 R^7 -
4.7034611960616578939*10^-14 R^8 +
2.3739657038442522949*10^-16 R^9 -
9.4940978910601964160*10^-19 R^10 +
3.0371047474885264330*10^-21 R^11 -
7.8165158640299035964*10^-24 R^12 +
1.6225016882748641796*10^-26 R^13 -
2.7139587568329125025*10^-29 R^14 +
3.6418375861283536251*10^-32 R^15 -
3.8860199342877397260*10^-35 R^16 +
3.2497278263416174656*10^-38 R^17 -
2.0818823622708316895*10^-41 R^18 +
9.8558693666404699776*10^-45 R^19 -
3.2464656463398293820*10^-48 R^20 +
6.6396271630385450394*10^-52 R^21 - 6.3458331446225376992*10^-56 R^22

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 22:12 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
Что значит "сомневаюсь", когда Вы сами своими руками подаёте ей на вход набор троек (вернее, таких структур - {{одно,другое},третье} не знаю, как это правильно назвать) чисел, в которых третье число всегда равно 0.125? Если это не константа, то что это, и что тогда такое константа? Железяка честно пытается подогнать это функцией от двух переменных, а дальше см. предыдущее сообщение.

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 22:47 


18/11/09
31
Третья координата (z) действительно постоянна для этой функции, Но это означает лишь то, что график функции двуменной (x, y) будет построен паралельно плоскости xy на расстоянии 0.125 от нее (в трехмерной системе координат). А вообще предполагается построить семейство функций (зависящих от R), смещенных относительно плоскости xy на различные расстояния L (0.25, 0.5, 0.75 и 1.0). И все они должны быть описаны одной апроксимирующей функцией k=f(R, L).

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение18.11.2009, 23:25 
Заслуженный участник
Аватара пользователя


23/07/05
17976
Москва
Так Вы зависимость чего от чего ищете? Если $z$ от $x$ и $y$, как Вы написали выше, то, соответственно, и получили $z=1.25$. А чего Вы ожидали?

А если Вам нужна зависимость $y$ от $x$, то выкиньте $z$, всё равно она постоянная. Или перепишите свои данные так, чтобы не путались независимые переменные с функцией.

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 10:08 


18/11/09
31
Мне нужна зависимость k=f(R, L) и если бы я хотел получить L=f(R, k), то полученный ответ значит, что программа выдает правильный результат. Но, я дал ей задание получить
g = InterpolatingPolynomial[q, {R, L}].
Если Вы действительно знаете программу Wolfram Mathematica7, то скажите, в чем моя ошибка. Или это отсутствие возможностей у программы?

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 10:57 
Заслуженный участник
Аватара пользователя


18/05/06
13438
с Территории
$$\{\{\underbrace{10.00, 0.596}_{\text{Это аргументы}}\}, \underbrace{0.125}_{\text{А это значение}}\}$$
Кого из них Вы для себя называете (условно говоря) x, кого y, а кого z - программа не знает и ей наплевать.

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 14:25 


18/11/09
31
Да нет, она, как раз, должна понимать это по последовательности чисел в исходной функции q (см. выше).
А вот повторю пример из help.
InterpolatingPolynomial[{{{0, 0}, 1}, {{1, 0}, 7}, {{0, 1},
10}, {{2, 1}, 40}, {{3, 3}, 151}, {{1, 2}, 47}}, {x, y}]

реуельтат 1 + x (2 + 4 x + 5 y) + y (3 + 6 y)

Проверяем для координат первой точки
x = 0
y = 0
z = 1 + x (2 + 4 x + 5 y) + y (3 + 6 y)

результат
0
0
1

И так для любой точки в исходной матрице {{{0, 0}, 1}, {{1, 0}, 7}, {{0, 1},
10}, {{2, 1}, 40}, {{3, 3}, 151}, {{1, 2}, 47}}, {x, y}
Я уверен, Вы ИСН ошибаетесь.

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 15:41 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Тема перенесена из математического раздела в CS: Околонаучный софт

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 18:07 
Заслуженный участник


04/05/09
4587
protsiv в сообщении #263480 писал(а):
Я уверен, Вы ИСН ошибаетесь.
Вы ошибаетесь. :)
Всё правильно ИСН сказал. Ваша функция во всех заданных точках имеет одно и тоже значение - $0.125$. Поэтому интерполяция - полином нулевого порядка.

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 22:57 


18/11/09
31
Хорошо, поменяем местами координаты y и z.
q := {{{0.00, 0.125}, 0.00}, {{10.00, 0.125}, 0.596}, {{25.00, 0.125},
0.797}, {{50.00, 0.125}, 0.888}, {{100.00, 0.125},
0.940}, {{150.00, 0.125}, 0.9592}, {{200.00, 0.125},
0.9684}, {{250.00, 0.125}, 0.9729}, {{300.00, 0.125},
0.976}, {{350.00, 0.125}, 0.9796}, {{400.00, 0.125},
0.9813}, {{450.00, 0.125}, 0.9832}, {{500.00, 0.125},
0.9847}, {{550.00, 0.125}, 0.9859}, {{600.00, 0.125},
0.987}, {{650.00, 0.125}, 0.988}, {{700.00, 0.125},
0.9898}, {{750.00, 0.125}, 0.9893}, {{800.00, 0.125},
0.9896}, {{850.00, 0.125}, 0.9898}, {{900.00, 0.125},
0.9899}, {{950.00, 0.125}, 0.99}, {{1000.00, 0.125}, 0.990}}
Та же функция g = InterpolatingPolynomial[q, {R, L}]
выдает сообщение

InterpolatingPolynomial::poised:
The interpolation points{{0.,0.125},{10.,0.125},<<8>>,<<13>> are not poised, so an interpolating polynomial of total degree 6 ould not be found. >>

InterpolatingPolynomial[{{{0., 0.125}, 0.}, {{10., 0.125},
0.596}, {{25., 0.125}, 0.797}, {{50., 0.125},
0.888}, {{100., 0.125}, 0.94}, {{150., 0.125},
0.9592}, {{200., 0.125}, 0.9684}, {{250., 0.125},
0.9729}, {{300., 0.125}, 0.976}, {{350., 0.125},
0.9796}, {{400., 0.125}, 0.9813}, {{450., 0.125},
0.9832}, {{500., 0.125}, 0.9847}, {{550., 0.125},
0.9859}, {{600., 0.125}, 0.987}, {{650., 0.125},
0.988}, {{700., 0.125}, 0.9898}, {{750., 0.125},
0.9893}, {{800., 0.125}, 0.9896}, {{850., 0.125},
0.9898}, {{900., 0.125}, 0.9899}, {{950., 0.125},
0.99}, {{1000., 0.125}, 0.99}}, {R, L}]
Что бы это значило?

 Профиль  
                  
 
 Re: Полиномальная интерполяция в Wolfram Mathematica7
Сообщение19.11.2009, 23:00 
Аватара пользователя


15/01/06
200
venco в сообщении #263550 писал(а):
protsiv в сообщении #263480 писал(а):
Я уверен, Вы ИСН ошибаетесь.
Вы ошибаетесь. :)
Всё правильно ИСН сказал. Ваша функция во всех заданных точках имеет одно и тоже значение - $0.125$. Поэтому интерполяция - полином нулевого порядка.


Ага, цитата из хэлпа:
"With any given specified set of data, there are infinitely many possible interpolating polynomials; InterpolatingPolynomial always tries to find the one with lowest total degree."

Вы protsiv прежде чем заморачивать математику такими задачами, сами подумайте - есть ли какие-нибудь основания, чтобы математика взяла и заинтерполировала вам это дело полиномом? Вы, например, какой полином в качестве интерполяции хотите видеть в ответ, есть же у Вас какие-то ожидания на этот счет?

-- Чт ноя 19, 2009 23:07:51 --

protsiv в сообщении #263657 писал(а):
Хорошо, поменяем местами координаты y и z.
q := {{{0.00, 0.125}, 0.00}, {{10.00, 0.125}, 0.596}, {{25.00, 0.125},
0.797}, {{50.00, 0.125}, 0.888}, {{100.00, 0.125},
0.940}, {{150.00, 0.125}, 0.9592}, {{200.00, 0.125},
0.9684}, {{250.00, 0.125}, 0.9729}, {{300.00, 0.125},
0.976}, {{350.00, 0.125}, 0.9796}, {{400.00, 0.125},
0.9813}, {{450.00, 0.125}, 0.9832}, {{500.00, 0.125},
0.9847}, {{550.00, 0.125}, 0.9859}, {{600.00, 0.125},
0.987}, {{650.00, 0.125}, 0.988}, {{700.00, 0.125},
0.9898}, {{750.00, 0.125}, 0.9893}, {{800.00, 0.125},
0.9896}, {{850.00, 0.125}, 0.9898}, {{900.00, 0.125},
0.9899}, {{950.00, 0.125}, 0.99}, {{1000.00, 0.125}, 0.990}}
Та же функция g = InterpolatingPolynomial[q, {R, L}]
выдает сообщение

InterpolatingPolynomial::poised:
The interpolation points{{0.,0.125},{10.,0.125},<<8>>,<<13>> are not poised, so an interpolating polynomial of total degree 6 ould not be found. >>

InterpolatingPolynomial[{{{0., 0.125}, 0.}, {{10., 0.125},
0.596}, {{25., 0.125}, 0.797}, {{50., 0.125},
0.888}, {{100., 0.125}, 0.94}, {{150., 0.125},
0.9592}, {{200., 0.125}, 0.9684}, {{250., 0.125},
0.9729}, {{300., 0.125}, 0.976}, {{350., 0.125},
0.9796}, {{400., 0.125}, 0.9813}, {{450., 0.125},
0.9832}, {{500., 0.125}, 0.9847}, {{550., 0.125},
0.9859}, {{600., 0.125}, 0.987}, {{650., 0.125},
0.988}, {{700., 0.125}, 0.9898}, {{750., 0.125},
0.9893}, {{800., 0.125}, 0.9896}, {{850., 0.125},
0.9898}, {{900., 0.125}, 0.9899}, {{950., 0.125},
0.99}, {{1000., 0.125}, 0.99}}, {R, L}]
Что бы это значило?


Она Вам говорит, чтобы Вы прекратили ее пытаться обмануть :mrgreen: Все из той же оперы - ей подсовываются данные, которые не могут быть обработаны.

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

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



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

Сейчас этот форум просматривают: DariaRychenkova


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

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