2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему
 
 Моделирование множества точек в пространстве функцией
Сообщение19.10.2018, 14:18 
Аватара пользователя


22/06/07
146
Здравствуйте. Такой вопрос:

Есть некий набор точек в пространстве $\{\(x_i, y_i, z_i\)\}$(допустим, порядка 1000 штук с шагом 0.01 по $x$ ), полученных экспериментально, моделирующих некоторую кривую. Как найти эту кривую? Точнее, коректнее будет поставить вопрос - как можно получить гладкую непрерывную функцию $F(x,y,z)=0$ или $x=f(y,z)$, лучше всего совпадающую с данным набором точек? Какие есть методы? Если подбирать функцию конкретного вида (например, полином), то какую именно выбрать?

И такой вопрос: предположим, что у нас есть 2 набора точек, моделирующих одну и ту же кривую. Соответственно, можем получить 2 функции $f_1$ и $f_2$. Как можно получить из них одну, наиболее соответствующую искомой? Просто взять среднее арифметическое, или как-то похитрее?

Заранее спасибо :-)

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение19.10.2018, 15:19 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Евгеша в сообщении #1347673 писал(а):
Как найти эту кривую? Точнее, коректнее будет поставить вопрос - как можно получить гладкую непрерывную функцию $F(x,y,z)=0$ или $x=f(y,z)$, лучше всего совпадающую с данным набором точек?
Написанные Вами уравнения задают не кривую, а поверхность.

В зависимости от того, что Вам нужно, советы могут быть разными.

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение19.10.2018, 15:57 
Аватара пользователя


22/06/07
146
Someone в сообщении #1347696 писал(а):
Написанные Вами уравнения задают не кривую, а поверхность.


Да :facepalm: Спасибо Вам за поправку. Геометрию изучал давно, уже все и позабыл.

Цитата:
В зависимости от того, что Вам нужно, советы могут быть разными.


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

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение19.10.2018, 16:35 
Аватара пользователя


31/10/08
1244
МНК годится не только для прямой, но и для кривой. Для полиномов тоже работает. Но иногда лучши сплайны, а не полиномы.

Евгеша в сообщении #1347673 писал(а):
Просто взять среднее арифметическое, или как-то похитрее?

Возьмите среднее. Математика тем и хороша, что при дальнейшем анализе вы можете увидить ошибку вернуться назад и исправить её.

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение19.10.2018, 19:58 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Евгеша, если Вам нужна линия, то нужно подбирать пару функций $$\begin{cases}y=f(x),\\ z=g(x).\end{cases}\eqno(1)$$ В простейшем варианте функции можно подбирать методом наименьших квадратов в виде $$\begin{cases}f(x)=\sum\limits_{k=0}^na_k\varphi_k(x),\\ g(x)=\sum\limits_{k=0}^mb_k\psi_k(x).\end{cases}\eqno(2)$$ Выбор конкретных функций $\varphi_k$ и $\psi_k$ может зависеть от разных обстоятельств. Простейший выбор $\varphi_k(x)=\psi_k(x)=(x-x_0)^k$ (часто берут $x_0=0$, но обычно лучше взять $x_0$ около середины интервала изменения $x$) годится при небольшой степени многочлена, но в случае больших степеней даёт плохие результаты. Вместо степеней лучше использовать ортогональные многочлены (Лежандра, например, или Чебышёва, сделав в них линейную замену переменной так, чтобы растянуть отрезок $[-1,1]$ на область изменения $x$ в ваших данных), или тригонометрические многочлены, или какие-то свои функции, подобранные по виду графика, построенного по вашим данным (отдельно для $y$ и для $z$). Для нахождения коэффициентов в методе наименьших квадратов нужно найти точки минимума функций $$\begin{cases}S_y=\sum\limits_{i=1}^N(f(x_i)-y_i)^2,\\ S_z=\sum\limits_{i=1}^N(g(x_i)-z_i)^2,\end{cases}\eqno(3)$$ где $N$ — число точек в ваших данных. Система уравнений для нахождения коэффициентов получается из необходимого условия экстремума функции нескольких переменных (в данном случае — $a_0,a_1,\ldots,a_n$ и $b_0,b_1,\ldots,b_m$, и в случае функций вида (2) представляет собой систему линейных алгебраических уравнений.

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение22.10.2018, 17:32 
Аватара пользователя


22/06/07
146
Someone
Спасибо Вам за развернутый ответ. Почитал немного википедию. Извините за глупый вопрос: многочлены Лежандра и Чебышева - это ведь тоже степенные функции? В чем отличие, если брать сразу $\varphi_k(x)=\psi_k(x)=(x-x_0)^k$? Дело в коэффициентах?

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение22.10.2018, 18:10 
Заслуженный участник


11/05/08
32166
Евгеша в сообщении #1348385 писал(а):
многочлены Лежандра и Чебышева - это ведь тоже степенные функции? В чем отличие, если брать сразу $\varphi_k(x)=\psi_k(x)=(x-x_0)^k$? Дело в коэффициентах?

В известном смысле. Для "чистых" степеней коэффициенты слишком большие и слишком сильно различаются. Это приводит к численной неустойчивости (для высоких степеней слишком велики погрешности округлений). Разложение по многочленам Чебышёва этого недостатка лишено; не потому, что они ортогональны, а потому, что равномерно колеблются между единицей и минус единицей. Многочлены Лежандра похуже (если они не дискретные) и вообще тут не при чём; но и они лучше, чем обычные.

 Профиль  
                  
 
 Re: Моделирование множества точек в пространстве функцией
Сообщение22.10.2018, 19:35 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Евгеша в сообщении #1348385 писал(а):
многочлены Лежандра и Чебышева - это ведь тоже степенные функции?
Нет. Степенная функция — это $x^n$ (или хотя бы $(x-x_0)^n$).

Если Вы посмотрите на графики степенных функций, Вы увидите, что они похожи друг на друга, отличаясь в основном крутизной. Поэтому они "почти линейно зависимы". Поэтому система линейных уравнений, получающаяся в методе наименьших квадратов, часто получается плохой, особенно для больших степеней, и в процессе её решения происходит большой рост погрешностей.

Ортогональные многочлены в этом отношении гораздо лучше: графики любых двух ортогональных многочленов существенно отличаются друг от друга. Многочлены Лежандра в вашем случае могут быть хороши тем, что на равномерной сетке они почти ортогональны, что даёт систему уравнений с большими коэффициентами на диагонали и с малыми остальными коэффициентами. Такая система хорошо решается. Многочлены Чебышёва (первого рода) дадут несколько бо́льшие внедиагональные коэффициенты, однако удобны своей равномерной ограниченностью.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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



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

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


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

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