2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Получить аппроксимирующий полином с помощью SVD
Сообщение28.03.2016, 11:44 


15/07/14
13
Признаюсь сразу, что от математики я очень далёк.

Есть набор из семи точек и нужно получить аппроксимирующий полином третьей степени при помощи сингулярного разложения. Литература по этому вопросу явно не для новичков, и ни в одной из книг я пока не смог найти примера, который помог бы мне матрицу вида $$\begin{bmatrix}
 &-2  &-31 \\
 &-1 &-17,5 \\
 &0  &-14 \\
 &1  &-14,5\\
 &2  &-13\\
 &3  &-3,5\\
 &4  &-20\\
\end{bmatrix}$$ преобразовать в полином $x^3-2x^2+0.5x-14$. :facepalm:

Мне бы только пример.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение28.03.2016, 21:51 
Заслуженный участник


11/05/08
32166
SpBerkut в сообщении #1109801 писал(а):
и нужно получить аппроксимирующий полином третьей степени при помощи сингулярного разложения.

Сингулярное разложение тут -- откровенно, так сказать, не в коня кобыле хвост. Даже не считая того, что термин "аппроксимирующий многочлен" сам по себе точного смысла не имеет.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение28.03.2016, 21:56 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Нет, но можно же и с помощью SVD, если человек хочет. Найти $c=V\Sigma^\# U^T y$ — это и будет вектор коэффициентов.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение28.03.2016, 22:27 
Заслуженный участник
Аватара пользователя


11/03/08
9967
Москва
Вопрос №0 - зачем именно SVD? Если это условие учебного задания, то нужно установить, что и как делать, у преподавателя, а то дадут советы, в общем-то, правильные и полезные, но не то, что он имел в виду.
Но если, скажем, речь шла об МНК-оценке для полиномиальной модели, то надо построить матрицу из степеней аргумента (вплоть до, в данном случае, третьего), выполнить её сингулярное разложение, а потом посчитать коэффициенты по приведенной в предыдущем комментарии формуле.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение28.03.2016, 23:03 
Заслуженный участник


11/05/08
32166
Проблема, в первую очередь, в том, что а нафига тут СВД. Когда линейная модель считается всегда (формально) точно. И вполне явно. Вопросы возникают лишь в случае плохой обусловленности.

Впрочем, никто так пока не понял, какую в точности аппроксимацию подразумевал ТС. Это загадка.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 09:43 
Заслуженный участник
Аватара пользователя


11/03/08
9967
Москва
Ну, МНК-аппроксимация полиномами, если использовать не ортогональные, а напрямую, всегда приводит к плохой обусловленности. Так что, возможно, дело в этом.
Но к просьбе ТС подробно описать, что он хочет сделать и/или что от него требуют, присоединяюсь.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 12:14 
Аватара пользователя


21/01/09
3926
Дивногорск
SpBerkut в сообщении #1109801 писал(а):
матрицу вида $$\begin{bmatrix}
 &-2  &-31 \\
 &-1 &-17,5 \\
 &0  &-14 \\
 &1  &-14,5\\
 &2  &-13\\
 &3  &-3,5\\
 &4  &-20\\
\end{bmatrix}$$ преобразовать в полином $x^3-2x^2+0.5x-14$. :facepalm:

У вас ошибка, последнее значение второго столбца должно быть +20.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 14:55 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
На всякий случай. Сингулярное разложение — в любом случае процедура не из тех, что делаются с помощью калькулятора. Или программа, или математический пакет, или онлайн-сервис.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 15:17 
Заслуженный участник
Аватара пользователя


11/03/08
9967
Москва
Ну отчего же? Было бы желание - можно и с калькулятором сделать. Желания, правда, нету - потратить месяц на вычисления. Или хотя бы неделю, если напрягаться.
Главный вопрос тут от Андрея Вознесенского - "на фига?"

(Оффтоп)

Он его, шалунишка, с "бытия" рифмовал...

Какова цель расчёта именно сингулярным разложением? Затем - чем можно пользоваться (программой SVD, доступной в матпакете; программой SVD, написанной саморучно; онлайн-сервисом и т.п.)

(Оффтоп)

И какое-то у меня смутное чувство, что человек, не могущий ответить, почему ему надо сделать нечто именно так, и никак иначе, выполняет:
1. Учебное задание (на владение каким-то ремеслом, будь то численные методы или программирование)
2. Выданное не ему учебное задание (заказчик неопределённо блеет о том, что именно делать, на консультации, где объясняли, что надо, заказчик не ходил, а исполнителя и не пускали, спросить у преподавателя нельзя)
3. А аванс уже взят.
И у меня окончательно пропадает отсутствовавшее желание помогать...

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 15:47 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora

(Оффтоп)

А у меня совсем другой подход. Желание клиента — закон. Оптимальность — не моё дело. Сказано SVD, значит, SVD, если только это вообще выполнимо.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 16:33 
Заслуженный участник
Аватара пользователя


11/03/08
9967
Москва
SVD так SVD...
Изображение

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 16:53 


15/07/14
13
Задача учебная. Пишу программу фильтрации экспериментальных данных. Данный набор точек исключительно тестовый, и с его помощью я пытаюсь постичь сей метод. Беда в том, что я вообще не математик, и многие моменты из литературы мне непонятны.

Александрович в сообщении #1110138 писал(а):
У вас ошибка, последнее значение второго столбца должно быть +20.
Да. Разумеется Вы правы.

А цель моя — "сгладить" экспериментальные данные. Контакта с преподавателем у меня нет — пытаюсь фрилансить. Вместо преподавателя у меня с полдюжины книг по линейной алгебре и сомнение в том, что я двигаюсь в правильном направлении.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 17:10 
Заслуженный участник


31/12/05
1521
Код:
import numpy as np
x = np.linspace(-2, 4, 7)
b = np.array([-31, -17.5, -14, -14.5, -13, -3.5, 20])
a = np.power(*np.ix_(x, np.arange(4)))
u, s, v = np.linalg.svd(a, full_matrices=False)
print(b @ u / s @ v)

Но зачем SVD, если можно просто взять псевдообратную?
Код:
print(np.linalg.pinv(a) @ b)

Да и вместо книг по линейной алгебре лучше взять какие-нибудь книги хотя бы по модному сейчас предсказательному моделированию.

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 18:04 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
SpBerkut в сообщении #1110201 писал(а):
Пишу программу фильтрации экспериментальных данных. Данный набор точек исключительно тестовый, и с его помощью я пытаюсь постичь сей метод.
На чём пишете? Собирались ли сами реализовать алгоритм, или воспользоваться готовой реализацией?

 Профиль  
                  
 
 Re: Получить аппроксимирующий полином с помощью SVD
Сообщение29.03.2016, 18:15 


15/07/14
13
svv в сообщении #1110224 писал(а):
На чём пишете? Собирались ли сами реализовать алгоритм, или воспользоваться готовой реализацией?
На C++. Хочется разобраться самостоятельно.

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

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



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

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


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

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