Главная » Просмотр файлов » 1626435587-55f52a4de97976f3c6215fa7c103f544

1626435587-55f52a4de97976f3c6215fa7c103f544 (844241), страница 13

Файл №844241 1626435587-55f52a4de97976f3c6215fa7c103f544 (Смирнов 2017 - Основы вычислительной физики ч2) 13 страница1626435587-55f52a4de97976f3c6215fa7c103f544 (844241) страница 132021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 13)

Для комбинации двух переключателей (флагов) используется операция «побитовое ИЛИ» — стандартный приём в языке C. Например, чтобы скомбинировать исчерпывающий способ оптимизации (FFTW_EXHAUSTIVE) с разрешением наперезапись входных значений (FFTW_DESTROY_INPUT), следует передавать в качестве пятого параметра функции fftw_plan_dft_1d значениеFFTW_EXHAUSTIVE | FFTW_DESTROY_INPUT.Заметим, что построение плана может занимать достаточно много времени, особенно при использовании больших массивов данныхсовместно с опциями FFTW_PATIENT или FFTW_EXHAUSTIVE. Например, для таблиц длиной = 220 ≈ 106 создание плана одномерного преобразования Фурье на процессоре Intel(R) Core(TM) i7-47703,40 ГГц занимает более получаса при использовании уровня оптимизации FFTW_EXHAUSTIVE и 7,5 секунд при использовании FFTW_MEASURE.Для экономии времени и повышения быстродействия программы библиотека FFTW позволяет сохранить информацию о найденном оптимальном способе выполнения преобразования Фурье в файл.

Данныймеханизм носит название(мудрость) и подробно описан в разделе «Words of Wisdom — Saving Plans» официальной документацииFFTW [A9].wisdomТаблица 110FFTW_MEASUREFFTW_PATIENTFFTW_EXHAUSTIVE=2План, сек БПФ, мкс0,0280,376,5720=2План, сек БПФ, мс7,53060023186023Необходимость использования механизма wisdom возникает только для сохранения планов между запусками программы. В пределаходного запуска использование «накопленной мудрости» (информациио наиболее эффективном алгоритме выполнения дискретного преобразования Фурье) происходит автоматически, без участия пользователя FFTW.

При необходимости создать в программе план того жетипа и с тем же числом точек , что был создан ранее, повторныйвызов fftw_plan_dft_1d выполняется за пренебрежимо малое время.64(Использование нескольких планов FFTW в одной программе встречается достаточно часто для выполнения прямого и обратного преобразования Фурье либо для преобразования различных величин, сохранённых в разных массивах: поскольку fftw_plan содержит информациюо входном и выходном массиве данных, использование нескольких парвходных и выходных массивов предполагает использование различныхпланов FFTW27 .)Решив проблемы, связанные с установкой библиотеки FFTW, еёподключением на этапе компиляции и компоновки программы, разобравшись с выделением памяти, созданием планов и соответствующими операциями финализации (освобождения ресурсов в конце работы программы), нам осталось приложить последнее усилие собственно для выполнения преобразования Фурье.

Хотя с точки зрения программирования данный шаг тривиален и сводится к вызову функции void fftw_execute(const fftw_plan plan), это место зачастуюстановится источникомошибок в расчётах. Типичная ошибка связана с использованием различных определений дискретного преобразования Фурье, используемых пользователем и разработчиками библиотеки. Действительно, в соответствии с выражением(56) на с. 33, возможны различные определения, отличающиеся знаками в показателе экспонент и значениями коэффициентов + , − .В FFTW преобразование со знаком «минус» в экспоненте считаетсяпрямым (DFT_FORWARD), со знаком «плюс» — обратным (DFT_BACKWARD).Константы + = − = 1, так что суперпозиция прямого и обратногопреобразований не даёт единицу, но эквивалентна (с точностью до погрешности вычислений) домножению таблицы значений на её размер.

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

Более подробную информацию, включая описаниемногомерных преобразований, различных типов преобразований вещественных данных, использования параллельных вычислений, а такжеответы на целый ряд других вопросов по использованию FFTW можнонайти на официальном сайте библиотеки [A9] в разделе Documentation.математическихОб альтернативном решении см. раздел «New-array Execute Functions» официальной документации FFTW [A9].2765Упражнения1) Выберите параметры временно́й сетки (число узлов, ширина)для моделирования распространения импульсов длительностью10−12 с при требуемом уровне точности не хуже 0,1%. Как следуетизменить параметры, если в процессе распространения ожидаетсяувеличение ширины спектра импульсов в десять раз?2) Постройте спектр мощности гауссовского импульса exp(−2 ) и пары импульсов exp(−2 ) + exp(−( − 5)2 ), объясните вид графиков.3) Постройте спектр мощности гармонического сигнала () = cos 0 при разных 0 , используя прямоугольное окно и окноХанна.4) Какое число членов ряда Фурье позволит аппроксимироватьосцилляции температуры воздуха возле НГУ [A10] за последние3 дня (10 дней) с точностью 5∘ C? 10∘ C? Как убывает амплитудакоэффициентов Фурье с ростом частоты? (Для повышения точности аппроксимации следует использовать сумму линейной функции и конечного ряда Фурье.)5) Используя библиотеку FFTW, выполните дискретное преобразование Фурье от функции () = 1 + + 2 на промежутке0 ≤ < 2 .

Напечатайте и проанализируйте таблицу значенийфункции и её спектра, используя = 8. Выполните обратноепреобразование Фурье, сравните с исходной таблицей значенийфункции.6) Сравните время выполнения 1000 преобразований Фурье с использованием библиотеки FFTW для таблиц длиной = 4093,4095 и 4096. Объсните результат. (Для вычисления времени выполнения программного кода на языке C можно использоватьфункцию clock, объявленную в заголовочном файле <time.h>.)7) Вычисляяконечную разность, найдите производную по време∫︀ни (, ) , где (, ) — численное решение однородногоуравнения теплопроводности − = 0, построенное по явнойсхеме (89).

Сравните график зависимости ( ˜(, ))/|˜ (, )| от саналитическим решением при разных значениях отношения /ℎ2 .8) Решите аналогичную задачу, используя неявную схему Кранка–Николсона (100). Какие спектральные компоненты затухают медленнее всего? Как зависит ответ от величины шага ?663. Уравнение теплопроводностиВ данной главе мы познакомимся с основами применения разностных схем для решения уравнений в частных производных на примерепараболического уравнения второго порядка, описывающего теплопроводность и диффузию.

Начнём с наиболее простого случая, когда имеется всего одна пространственная координата: = 2 + (, ).(86)(Здесь и далее мы будем использовать обозначения и для дифференциальных операторов и соответственно.) Если неоднородность (, ) имеет достаточно простой вид, уравнение (86) может бытьпроинтегрировано аналитически. Однако при включении в (86) нелинейных членов, зависимости коэффициента теплопроводности от координат и времени, а также при поиске решения в областях сложной формы оказываются востребованными численные методы.

Исключительнов целях упрощения изложения мы будем рассматривать применениечисленных методов на наиболее простых примерах, допускающих также точное аналитическое решение. При этом следует иметь в виду, чтотакое упрощение не принципиально, и рассматриваемые методы могутбыть использованы в более сложных случаях, когда получение точногорешения невозможно.Будем искать решение уравнения (86) в области 0 ≤ ≤ 1, > 0.

Начальное распределение температуры (, 0) = 0 (). Граничные условия будут рассмотрены ниже, в п. 3.1. Численное решение уравнения(86) будем строить на равномерной сетке с шагом ℎ = 1/ по пространственной координате и шагом по времени, рис. 11 (а). Условимсяиспользовать (, ) для обозначения точного решения (86), а (, ) —для численного решения.

При этом для краткости будем обозначатьзначения функций в узлах сетки соответствующей буквой с двумя индексами: нижним (пространственным) и верхним (временны́м). Например, ≡ ( , ), ≡ ( , ) и т. п. Пространственный индекс пробегает значения от 0 до , что соответствует 0 ≤ ≤ 1.3.1. Граничные условияУсловия на границе будем задавать в одном из двух видов, известных как задача Дирихле ((0, ) = 0 (), (1, ) = 1 ()) и задача Неймана ( (0, ) = 0 (), (1, ) = 1 (), где ≡ ). Легко увидеть,что заменой неизвестной функции можно свести каждую из этих задач(либо их линейную суперпозицию) к аналогичной задаче с нулевыми67(а)t(б)tm+1tm0(в)xj-1 xjxj+1x(г)(а) Равномерная сетка для построения численного решения; шаблоны численных схем: (б) явной, (в) неявной, (г) Кранка — НиколсонаРис.

11.условиями на границе. Так, в случае задачи Дирихле можно сделатьподстановку:(, ) = (1 − )0 () + 1 () + (, ),где функция удовлетворяет уравнению (, ) = 2 (, ) + (, ) − (1 − )0′ () − 1′ ()с нулевыми граничными условиями (0, ) = (1, ) = 0. Аналогично,для задачи Неймана можно использовать подстановку:2+ 0 () + (, ), (0, ) = (1, ) = 0.2Использование нулевых граничных условий позволяет упростить процедуру численного решения.Чтобы учесть граничные условия при решении задачи Дирихле,очевидно, следует положить 0 = 0, = 0 для всех = 1, 2, .

. . Какприменить условие = 0 при решении задачи Неймана? Наиболеепростой способ состоит в замене производной на уже известную намконечную разность: ( = 0) ≈ (1 − 0 )/ℎ. Однако использованиеданного соотношения приводит к появлению погрешности (ℎ). Какмы увидим дальше, сравнительно легко можно построить разностнуюсхему второго порядка точности по шагу сетки ℎ, поэтому применение формулы первого порядка для производной нежелательно: этоснизит порядок точности численного решения. В этой связи выведемразностную формулу, аппроксимирующую производную на краю сеткисо вторым порядком точности. Для этого запишем невязку междузначением производной ′ (0) и разностной формулой с неопределёнными коэффициентами:(, ) = (1 () − 0 ()) = ′ (0) −0 + 1 + 2.ℎ68Наличие ℎ в знаменателе формулы позволяет сделать коэффициенты, и безразмерными.

Разложив решение () в ряд Тейлора, выберемкоэффициенты так, чтобы занулить невязку в первых трёх порядкахпо шагу сетки ℎ: = −0)︀++ℎ (︀+ ′ (0)(1 − − 2) − ′′ (0) + 4 + (ℎ2 ).ℎ2Разрешая систему линейных уравнений относительно коэффициентов, и , получаем искомую разностную формулу: ′ (0) =−30 + 41 − 2+ (ℎ2 ).2ℎ(87)Действуя аналогичным образом либо записывая полученное выражение (87) для производной (1 − ) при = 0, несложно получитьвыражение для производной на правом краю сетки: ′ ( ) =3 − 4 −1 + −2+ (ℎ2 ).2ℎ(88)Выражения (87) и (88) понадобятся нам для построения численныхсхем второго порядка точности для решения задачи Неймана.3.2.

Явная схемаЗаменяя в уравнении (86) производные и 2 в точке ( , ) конечными разностями, несложно выписать наиболее простую схему длячисленного решения уравнения теплопроводности:+1 − +1− 2 + −1=+ .ℎ2(89)Если значения изестны на -м слое по времени, используя соотношение (89) и граничные условия, можно вычислить значения численного решения +1 на следующем, ( + 1)-м, слое по времени поформулам, ввиду чего (89) относят к классучисленныхсхем. Например, для задачи Дирихле имеем:явнымявных+1= 0,(90))︀ (︀ +1 = + 2 +1− 2 + −1+ , 1 ≤ ≤ − 1.(91)ℎПри решении задачи Неймана вначале нужно применить формулу (91)для вычисления +1 во внутренних точках 1 ≤ ≤ − 1, а затем использовать граничные условия, вычислив значения искомого решения690+1 = 0,+1на границах 0+1 и с использованием полученных выше разностных соотношений (87) и (88).Соотношение (91) связывает одно неизвестное значение сеточнойфункции +1 с тремя известными значениями −1, и +1.

Характеристики

Тип файла
PDF-файл
Размер
1,62 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6417
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее