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
18013
Москва
Евгеша в сообщении #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
18013
Москва
Евгеша, если Вам нужна линия, то нужно подбирать пару функций $$\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
18013
Москва
Евгеша в сообщении #1348385 писал(а):
многочлены Лежандра и Чебышева - это ведь тоже степенные функции?
Нет. Степенная функция — это $x^n$ (или хотя бы $(x-x_0)^n$).

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

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

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

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



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

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


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

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