Комментарии 15
Видео же отражает совершенно неправильную картину, из-за применения CCD матрицы с построчным сканированием, при этом получается что разные линии одного кадра по факту содержат информацию из разных моментов времени. Очевидно что такой амплитуды на такой гармонике, на стальной струне там нет и быть не может. Эта струна колеблется с длиной полуволны примерно равной длине струны, совершая 4 полных колебания за время сканирования кадра, и поэтому кажется что её так погнуло.
![](https://habrastorage.org/getpro/habr/upload_files/fab/f23/5bc/fabf235bc1c54367d8439ab924d9bcf5.png)
"для того, чтобы увидеть (более красивую картинку, см. ниже) много деталей, шаг по времени нужно задавать достаточно большим малым"
Если вы примерно помните математику, но панически боялись дифуров или они просто как-то обошли вас стороной, то добро пожаловать.
Интригующее начало. Но дальше вы ещё больше усложняете предмет без каких-либо на то обоснований. Это же одномерная волна, она численно решается без всяких матриц в три строчки кода, и краевые условия тоже разрешаются элементарно. Ну и — раз речь идёт о колебаниях струны, почему результат картинка, а не звук?
Вообще это интересный вопрос, я помню, что у Roland вроде была какая-то полуфизическая модель инструмента в электронных фортепиано. Наверное, что-то такое можно сделать. В теории мне кажется, что можно сгегерировать звуковую волну, если правильно параметры подогнать, но технически я этого не пробовал, поизучаю.
Сори за математику) я просто хотел по полкам всё детально сделать, возможно, переборщил местами...
Спасибо за статью. Ранее тоже решал это уравнение методом конечных элементов. Всегда замечал, что даже с очень маленькими разбиениями сильно растёт погрешность/разболтка с ростом времени. Чего не скажешь об уравнении теплопроводности - с ростом времени температура выравнивается (приходит к решению уравнению Пуассона или Лапласа) и погрешность сходит на нет.
По струне есть ещё интересный эффект. Форма колебаний и даже преобладающая гармоника зависит от точки приложения возмущения. Если дёргать в середине, то будет минимальная частота установившихся колебаний. А если в четверти длинны - то в 2 раза больше.
С очень маленькими разбиениями бывают ещё фокусы арифметики с плавающей точкой. Вот этот автор сделал ряд великолепный статей на эту тему https://habr.com/ru/users/ArtemKaravaev/posts/ У нас в университете был отдельный акцент в лабораторке по численному решению дифуров, про устремление к нулю шага, и нахождение той границы где результат начинает становиться неадекватным.
Спасибо. Знал и суммировал вещественные числа от меньших к большим, но даже этого оказалось недостаточно когда начал считать в python евклидово расстояние между многомерными векторами: результат, посчитанный вручную оказывался сильно отличным от numpy.
Это очень странно, насколько они многомерные если вы можете вручную посчитать? Я бы подозревал обычную ошибку чем такую, там не настолько всё плохо, хотя, смотря как считать конечно.
Сравнивал numpy.linalg.norm с результатом, расчитанным в лоб в коде python. Размерность = несколько миллионов. Даже если отсортировать аргументы по возрастанию и суммировать от меньшего к большему, результат отличался очень сильно. Для меньших векторов всё хорошо совпадало. Не говоря уже о скорости расчёта, которая была сильно в пользу numpy.
а почитайте ка ещё про fast math, например это https://simonbyrne.github.io/notes/fastmath/ и это https://stackoverflow.com/questions/7420665/what-does-gccs-ffast-math-actually-do как там numpy собран надо смотреть, но он легко и такое может творить
"С другой стороны, построенная явная схема Эйлера -- это всего лишь схема первого порядка ..."
Схема, которую Вы используете, имеет второй порядок аппроксимации по времени и по пространству. А под явной схемой Эйлера, как правило, имеют ввиду метод решения ОДУ (системы ОДУ) первого порядка
Численно решаем волновое уравнение разностной схемой