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
10887
Crna Gora
Нет, но можно же и с помощью SVD, если человек хочет. Найти $c=V\Sigma^\# U^T y$ — это и будет вектор коэффициентов.

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


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

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


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

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

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


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

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


21/01/09
3924
Дивногорск
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
10887
Crna Gora
На всякий случай. Сингулярное разложение — в любом случае процедура не из тех, что делаются с помощью калькулятора. Или программа, или математический пакет, или онлайн-сервис.

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


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

(Оффтоп)

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

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

(Оффтоп)

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

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


23/07/08
10887
Crna Gora

(Оффтоп)

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

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


11/03/08
9874
Москва
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
1516
Код:
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
10887
Crna Gora
SpBerkut в сообщении #1110201 писал(а):
Пишу программу фильтрации экспериментальных данных. Данный набор точек исключительно тестовый, и с его помощью я пытаюсь постичь сей метод.
На чём пишете? Собирались ли сами реализовать алгоритм, или воспользоваться готовой реализацией?

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


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

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

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



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

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


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

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