Математический форум Math Help Planet
Обсуждение и решение задач по математике, физике, химии, экономике Теоретический раздел |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
новый онлайн-сервис число, сумма и дата прописью |
|
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Страница 1 из 1 |
[ Сообщений: 6 ] |
|
Автор | Сообщение | |
---|---|---|
thevanka |
|
|
По такому делу описание проблемы, терзающей меня, и название самой темы построены своими словами, но думаю, суть смогу изложить. ------------------------------------------------------------------------------------ У меня имеются данные, которые можно изобразить на координатной плоскости(двумерной) в виде точек. Если таких точек немного, допустим штуки три-четыре, то я могу взять тетрадный лист и от руки нарисовать волны синусоиды так, чтобы изначально помеченные точки были включены в неё. И в принципе для всех этих точек можно найти функцию f(x), и не одну. Данные я получаю динамически , и обычно таких точек примерно 10 - 15 штук. Вот я и хочу автоматизировать этот процесс для своих вычислений(на javascript) но совершенно не понимаю, как вычислить формулу, функцию для поступившей мне порции точек так чтобы все эти точки стали составными точками одной синусоиды. ----------------------------------------------------------------------------------- Друзья! Я не претендую на то чтобы мне разжевали и помогли проглотить, но мне очень нужно хотябы направление, в каком математическом познании мне углубиться, в поисках решения, потому что понятия не имею, вот и всё. |
||
Вернуться к началу | ||
michel |
|
|
thevanka писал(а): мне очень нужно хотябы направление, в каком математическом познании мне углубиться, в поисках решения Сначала задаём функцию (формулу) аппроксимации в общем виде: [math]f(x)=a\cdot \sin(b\cdot x+c)[/math] с трёмя параметрами. Дальше можно использовать метод наименьших квадратов для определения этих параметров аппроксимации по заданным точкам. Замечу, что метод МНК, реализующий поиск параметров в данном случае, несколько отличается о стандартного варианта МНК, который сводится к решению простых систем линейных алгебраических уравнений, так как возникают уже нелинейные уравнения. Поэтому Вам придётся поискать какие-то готовые функции под javascript для решения систем нелинейных уравнений. Вообще предварительно это лучше проверить в Excel или других математических пакетах. |
||
Вернуться к началу | ||
За это сообщение пользователю michel "Спасибо" сказали: thevanka |
||
Exzellenz |
|
|
В общем случае задача имеет много различных решений. Но если точки расположены достаточно часто, можно сделать так:
общая формула синусоиды [math]y=A\sin{\left( \omega t+ \varphi \right) }+b,[/math] т.е. зависит от четырех параметров. Амплитуду А можно в первом приближении оценить так: [math]A=\frac{\max{(y)}-\min{(y)}}{2}[/math]; параметр b в первом приближении [math]b=\frac{\max{(y)}+\min{(y)}}{2}[/math]; остальные параметры варьириются до минимизации невязки, после чего варьируются все 4 параметра. |
||
Вернуться к началу | ||
Exzellenz |
|
|
Пока писал, michel меня опередил.
Вот моя программа для оптимизации параметров: Public Sub Solution() Тут нужно добавить, что при вариировании параметров леко свалиться в локальный минимум невязки, не достигнув приемлемой аппроксимации. Поэтому порядок действий, как в моем предыдущем посте. |
||
Вернуться к началу | ||
За это сообщение пользователю Exzellenz "Спасибо" сказали: thevanka |
||
thevanka |
|
|
Exzellenz писал(а): Пока писал, michel меня опередил... Благодарен за доброе дело. Буду вникать и разбираться, с exelем и бэйсиком правда много лет уже не связывался всё позабывал. Но это нюансы. Честно говоря, когда предо мною возникла данная задача, я как сторонник чистого кода без библиотек и примочек и к томуже, не знающий математики, видел только одно решение. Сделать всё с помощью тройного цикла, то есть прогонять синусоиду ,растягивая и сжимая по иксу да по игреку, плюс смещая, это получается тысячи и сотни тысяч, или даже миллионы функций, формул, для каждой формулы при этом вычисляя, сколько точек оная "схватит". И так вылавливать из цикла формулы с наибольшим включением точек. Но при таком подходе, понимая, как затратно это будет по ресурсам, по времени, и вообще это не здравый подход. Я несколько месяцев не мог себя заставить заниматься этой хернёй. Сейчас,оглядываясь в прошлое, досадно, что я пренебрегал изучением математики... |
||
Вернуться к началу | ||
Exzellenz |
|
|
thevanka писал(а): Буду вникать и разбираться, с exelем и бэйсиком Тогда вот вам в помощь принцип работы моей программы.1) Создаете в Excel таблицу: пербый столбец - значения аргумента, второй - "экспериментальные" значения функции, третий - "теоретические" значения функции (вычисленные по формуле), четвертый - квадраты разностей между "теорией" и "экспериментом", Далее: в какой-либо ячейке вне таблицы- невязка (корень из среднего квадрата разности, т.е. среднеквадратичное отклонение теоретической кривой от экспериментальных точек); Наконец, в каких-либо четырех ячейках вне таблицы значения четырех параметров синусоиды. 2) Выделяете ячейки со значениями параметров и с невязкой (невязку выделяете последней) и запускаете программу. 3) Программа работает так: а) варьирует первый параметр при фуксированных значениях остальных параметров до тех пор, пока невязка не достигнет минимума; потом делает то же со вторым параметром, потом с третьим и т.д. b) Новые значения параметров сравниваются со старыми и вычисляется направляющий вектот, после чего варьируются одновременно все параметры вдоль этого вектора до минимизации невязки. На этом программа заканчивает работу. Но это еще не настоящий минимум невязки. Для уточнения результата программу нужно запустить повторно несколько раз, контролируя при этом график и значение невязки. Вызов программы повторяется до тех пор, пока невязка практически не престанет снижаться, или пока вы не сочтете, что кривая достаточно хорошо легла на точки. |
||
Вернуться к началу | ||
[ Сообщений: 6 ] |
Похожие темы | Автор | Ответы | Просмотры | Последнее сообщение |
---|---|---|---|---|
Написать формулу соответствующую графику синусоиды
в форуме Тригонометрия |
14 |
481 |
22 июл 2021, 14:23 |
|
Найти координаты вершины треугольника, по известным сторонам | 11 |
3696 |
06 апр 2018, 16:33 |
|
Как изменяется фаза косинусоиды?
в форуме Начала анализа и Другие разделы школьной математики |
0 |
412 |
07 ноя 2018, 23:01 |
|
Найти формулу суммы ряда, формулу вычисления члена
в форуме Объявления участников Форума |
0 |
206 |
10 июл 2020, 17:19 |
|
Найти функцию по точкам
в форуме Численные методы |
4 |
520 |
19 фев 2018, 17:37 |
|
Найти функцию по точкам | 8 |
932 |
17 авг 2015, 09:57 |
|
Восстановить функцию по известным значениям в диапазонах
в форуме Начала анализа и Другие разделы школьной математики |
11 |
618 |
20 апр 2018, 21:34 |
|
На плоскости с точкам найти все окружности | 7 |
410 |
14 фев 2022, 23:40 |
|
Поиск начальных моментов по известным центральным моментам
в форуме Теория вероятностей |
3 |
209 |
26 май 2017, 15:20 |
|
МНК для синусоиды
в форуме Численные методы |
5 |
1051 |
23 июн 2014, 11:02 |
Часовой пояс: UTC + 3 часа [ Летнее время ] |
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |