В настоящее время я пытаюсь проанализировать данные временных рядов с помощью Python. В качестве ориентира для этого я ориентировался на сценарий MATLAB, который делает почти все, что я хотел бы сделать. До сих пор это работало нормально, но теперь я столкнулся с этим полиномом Лежандра, который использовался в этом скрипте.Python эквивалент функции Legendre MATLAB
Я попробовал NumPy implementation, но не смог найти способ, который (более или менее) дал те же результаты, что и the MATLAB function.
В принципе, это то, что я хотел бы знать. Как я могу сделать код Python таким же, как и код MATLAB?
В небольшой демонстрации,
k= [0 1 1;1 1 0 ;0 0 1]
legendre(2,k)
дает:
ans(:,:,1) =
-0.5000 1.0000 -0.5000
0 0 0
3.0000 0 3.0000
ans(:,:,2) =
1.0000 1.0000 -0.5000
0 0 0
0 0 3.0000
ans(:,:,3) =
1.0000 -0.5000 1.0000
0 0 0
0 3.0000 0
В то время как моя версия Python из него выходит так: как я попробовал это выглядит так:
legendre = np.polynomial.legendre.Legendre([0,1,2])
legendre(k)
И дает:
array([[-1., 3., 3.],
[ 3., 3., -1.],
[-1., -1., 3.]])
Я вижу несколько вещей, которые немного странны, но, к сожалению, я понятия не имею, как их проверить, потому что это первый раз, когда я слышал о такой вещи, как полином Лежандра, и ни документация NumPy, ни Wikipedia большая помощь в понимании этого.
Спасибо, я понимаю это сейчас немного лучше. Итак, чтобы имитировать легендарный matlab в python, я не могу использовать этот модуль, но мне нужно будет написать свою собственную функцию legendre? Считаете ли вы, что достаточно (и выполнимо) поставить формулу Родригеса (см. Wiki) в python, чтобы я мог создавать многочлены отдельно и оценивать каждую из них в определенных точках? Btw. формула, которую мне действительно нужно перевести, является первой на слайде 14 в этом [pdf] (http://jallen.faculty.arizona.edu/sites/jallen.faculty.arizona.edu/files/Chapter_22_Surface_Laplacian.pdf). Любые идеи, как это сделать? – userE
На самом деле, я думаю, что здесь достаточно модуля python, поскольку вы только рассчитываете вычислять легендарные полиномы, а не легендарные функции. Я попытаюсь добавить возможный расчет этой функции к моему ответу. – user3684792
Есть ли причина, по которой вы выбрали «заказ» как «6» и «m» как «4»? Разве это не нормальный случай, когда вы берете каждый полином до последнего, или я ничего не получаю? – userE