МИНОБРНАУКИ РОССИИ Федеральное государственное автономное образовательное учреждение высшего образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» физический факультет Рассмотрен и рекомендован к утверждению на заседании кафедры_физики космоса протокол №_____________ от «_____»_______________2014г. УТВЕРЖДАЮ Декан факультета __________В.С. Малышевский Подпись «_____»_______________2014г. УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ДИСЦИПЛИНЫ МАТЕМАТИЧЕСКИЕ ПАКЕТЫ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ Направление подготовки (специальность) 03.03.03 «Радиофизика» Профиль подготовки (специализация) Квалификация (степень) выпускника Форма обучения Бакалавр Очная Разработчик И.А. Ачарова – к.ф.-м.н, доцент кафедры физики космоса Ростов-на-Дону, 2014 1 Содержание № 1 ЦЕЛИ И ЗАДАЧИ ОСВОЕНИЯ ДИСЦИПЛИНЫ 2 МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ООП ВПО 3 ТРЕБОВАНИЯ К РЕЗУЛЬТАТАМ ОСВОЕНИЯ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ 4 СОДЕРЖАНИЕ И СТРУКТУРА ДИСЦИПЛИНЫ 5 ОЦЕНОЧНЫЕ СРЕДСТВА ДЛЯ ТЕКУЩЕГО КОНТРОЛЯ УСПЕВАЕМОСТИ И ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ 6 УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 7 МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 8 КРАТКОЕ ИЗЛОЖЕНИЕ ПРОГРАММНОГО МАТЕРИАЛА С МЕТОДИЧЕСКИМИ УКАЗАНИЯМИ СТУДЕНТУ 9 МАТЕМАТИЧЕСКАЯ СИСТЕМА MATLAB 10 МЕТОДЫ ОТДЕЛЕНИЯ КОРНЕЙ УРАВНЕНИЙ С ОДНОЙ ПЕРЕМЕННОЙ 15 11 ОПРЕДЕЛЕНИЕ КОРНЕЙ УРАВНЕНИЙ С ОДНОЙ ПЕРЕМЕННОЙ 12 ИНТЕРПОЛИРОВАНИЕ ФУНКЦИЙ 13 ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ 14 ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ 15 МЕТОДЫ АППРОКСИМАЦИИ ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ 16 МОДЕЛИРОВАНИЕ ЗАДАЧ МЕХАНИКИ Задача о движении математического маятника Движение в центральном поле сил Гармонический осциллятор 17 РАБОТА С СИГНАЛАМИ ВОЛНЫ 18 СЛУЧАЙНЫЕ БЛУЖДАНИЯ ЧАСТИЦ И ДИФФУЗИЯ Создание анимации стр. 5 5 6 6 7 7 8 8 10 15 20 27 34 36 44 57 57 63 67 76 79 82 86 2 МИНОБРНАУКИ РОССИИ Федеральное государственное автономное образовательное учреждение высшего образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» физический факультет УТВЕРЖДАЮ Декан факультета __________В.С. Малышевский Подпись «_____»_______________2014г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ МАТЕМАТИЧЕСКИЕ ПАКЕТЫ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ ___________________03.03.03 «Радиофизика»_____________ Направление подготовки (специальность) Профиль подготовки ____________________________________ Квалификация (степень) выпускника бакалавр Кафедра прикладной электродинамики и компьютерного моделирования Курс __I___ семестр _____2____ Форма обучения __Очная___ Программа разработана И.А. Ачарова – к.ф.м.н., доцент кафедры физики космоса Рецензент В.В. Земляков – к.ф.м.н., доцент кафедры прикладной электродинамики и компьютерного моделирования Ростов-на-Дону, 2014 3 Рассмотрена и рекомендована к утверждению на заседании учебнометодического совета физического факультета протокол заседания № _________ от «_____»_______________2014г. Рассмотрена и рекомендована к утверждению на заседании кафедры прикладной электродинамики и компьютерного моделирования протокол заседания № _________ от «_____»_______________2014г. 4 I. ЦЕЛИ И ЗАДАЧИ ОСВОЕНИЯ ДИСЦИПЛИНЫ Цели Научить студентов использовать компьютер для решения задач математики, физики, овладеть культурой записи полученной информации, правильным представлением полученных результатов в виде графиков, схем, таблиц. Ознакомить студентов с основными принципами автоматизации при помощи компьютера процессов сбора и переработки физической информации в современном эксперименте. Разработанные студентами в ходе занятий заготовки моделей могут служить основой для последующей доработки и усложнения. Примеры выполнены в пакете MatLab, но благодаря тому, что каждая команда сопровождается пояснением, не составит затруднения выполнить их на другом языке программирования. Задачи - формирование навыков построения моделей физических процессов; - формирование навыков построения алгоритмов и компьютерных программ расчета моделей физических процессов; - выработка навыков наглядного представления полученных результатов исследования. II. МЕСТО ДИСЦИПЛИНЫ В СТРУКТУРЕ ООП ВПО 2.1. Дисциплина «Математические пакеты компьютерного моделирования» относится к циклу дисциплин по выбору – Б2.ДВ2. 2.2. Для изучения данной учебной дисциплины необходимы следующие знания, умения и навыки, формируемые предшествующими дисциплинами: «Математический анализ», «Механика. Молекулярная физика», «Колебания и волны» в объеме школьного курса физики, 5 «Электричество и магнетизм» в объеме школьного курса физики, «Аналитическая геометрия». 2.3. Дополняет, расширяет знания и умения дисциплин: «Элементы математики. Векторный и тензорный анализ», «Информатика», «Линейная алгебра», «Иностранный язык». Освоение данной дисциплины необходимо для курсовой и научно исследовательской работы студентов. III. ТРЕБОВАНИЯ К РЕЗУЛЬТАТАМ ОСВОЕНИЯ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ 3.1. Процесс изучения дисциплины направлен на формирование элементов следующих компетенций в соответствии с ФГОС ВПО (ОС ЮФУ) и ОП ВО общекультурными компетенциями (ОК): способностью к самоорганизации и самообразованию (ОК-7); общепрофессиональными компетенциями (ОПК): способностью к овладению базовыми знаниями в области математики и естественных наук, их использованию в профессиональной деятельности (ОПК-1); способностью самостоятельно приобретать новые знания, используя современные образовательные и информационные технологии (ОПК-2); способностью решать стандартные задачи профессиональной деятельности на основе информационной и библиографической культуры с применением информационно-коммуникационных технологий и с учетом основных требований информационной безопасности (ОПК-3); 6 профессиональными компетенциями (ПК): научно-исследовательская деятельность: владением компьютером на уровне опытного пользователя, применению информационных технологий (ПК-3); педагогическая деятельность: способностью к проведению занятий в учебных лабораториях образовательных организаций высшего образования (ПК-6). В результате освоения дисциплины обучающийся должен: Знать: особенности построения компьютерных моделей физических задач. Уметь: написать программу расчетов изучаемого физического явления на языке МatLab, сделать тестирование и наглядное представление полученных результатов. Владеть: навыками применения полученных при изучении общих курсов физики и математики знаний к описанию физических явлений. IV. СОДЕРЖАНИЕ И СТРУКТУРА ДИСЦИПЛИНЫ Трудоемкость дисциплины 3 ЗЕТ, 108 часов: 18 часов лекционные занятия, 36 практические занятия, 54 часа самостоятельная работа студента 4.1. Содержание модулей дисциплины Количество часов № модуля 1 Наименование раздела (темы) Математическая система Матлаб. Определение корней уравнений с одной переменной (метод половинного деления, метод итерации, с помощью встроенных функций MATLAB). Интерполирование функций. Численное дифференцирование. Всего 24 Аудиторная работа Л ПЗ 4 8 ЛР Внеауд. работа СР 12 7 2 3 4 Приближенное вычисление определенных интегралов (методы прямоугольников, трапеций, Симпсона, Монте-Карло, с помощью встроенных функций MATLAB). Методы аппроксимации экспериментальных данных (нахождение приближающей функции в виде линейной функции, степенной функции, показательной функции, логарифмической функции, гиперболы). 32 6 10 16 28 4 10 14 Работа с сигналами. Расчет цепей. Волны. Биения. Случайные блуждания частиц и диффузия. 24 4 8 12 Итого: 108 18 36 54 Моделирование задач механики. Задача о движении математического маятника. Движение в центральном поле сил. Гармонический осциллятор. 4.4. Практические занятия № № занятия модуля Тема Кол-во часов 1 Математическая система Матлаб. 2 2 1 Определение корней уравнений с одной переменной (метод половинного деления, метод итерации, с помощью встроенных функций MATLAB). 2 3 1 Интерполирование функций. Численное дифференцирование. 2 4 1 Задания для самостоятельного выполнения. 2 2 Приближенное вычисление определенных интегралов (методы прямоугольников, трапеций, Симпсона, МонтеКарло, с помощью встроенных функций MATLAB). 4 7,8 2 4 9 2 Методы аппроксимации экспериментальных данных (нахождение приближающей функции в виде линейной функции, степенной функции, показательной функции, логарифмической функции, гиперболы). Задания для самостоятельного выполнения. 10 3 Задача о полете мяча в баскетбольную корзину. 2 11 3 Задача о движении математического маятника. 2 12 3 Движение в центральном поле сил. 2 1 5,6 2 8 № № занятия модуля Кол-во часов Тема 13 3 Гармонический осциллятор. 2 14 3 Задания для самостоятельного выполнения. 2 15 4 Работа с сигналами. 2 16 4 Расчет цепей. Волны. Биения. 2 17 4 Случайные блуждания частиц и диффузия. 2 18 4 Задания для самостоятельного выполнения. 2 № модуля Темы/вопросы, выносимые на самостоятельное изучение Кол-во часов 1 Рабочее пространство системы MATLAB и ее командное окно. Вещественные числа и тип данных double. Комплексные числа и комплексные функции. Формирование одномерных числовых массивов. Двумерные массивы чисел: матрицы и векторы. Вычисления с массивами. Сценарии и М-файлы. Синтаксис определения и вызова M-функций. Справочная подсистема пакета MATLAB. Графика MATLAB. Печать и запись рисунков в файл 12 2 Программирование. Условные операторы и циклы. Векторизация как альтернатива циклам. Задание матриц. Операции над матрицами. Решение систем линейных уравнений. Специализированная графика. Печать и запись рисунков в файл. Чтение и запись произвольных бинарных файлов. Чтение и запись произвольных текстовых файлов. Локальные, глобальные и статические переменные. 16 3 Вынужденные колебания, резонанс. О случайном движении. Работа с сигналами и модель диодного выпрямителя. Копия протокола сессии. Работа со списком путей доступа. Отладка mфайлов. Гистограммы. 14 4 Анимация и звук в системе MATLAB: команды анимации. Отрисовка движущихся кривых. 12 VI. ОЦЕНОЧНЫЕ СРЕДСТВА ДЛЯ ТЕКУЩЕГО КОНТРОЛЯ УСПЕВАЕМОСТИ И ПРОМЕЖУТОЧНОЙ АТТЕСТАЦИИ Все задачи, перечисленные в кратком изложении программного материала данного УМК, должны быть решены и оформлены. 9 VII. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 1. Вержбицкий В.М. Основы численных методов: Учебник для вузов. – 2-е изд., перераб. – М.: Высш. шк., 2005 2. Ресурсы сайта http://www.exponenta.ru 3. Michael Robbins. Good Matlab Programming Practices for the NonProgrammer // http://www.mathworks.com/matlabcentral/fileexchange/2371- goodmatlab-programming-practices 4. Золотых Н.Ю. MATLAB в научной и исследовательской работе // http://www.uic.unn.ru/~zny/matlab/ VIII. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ Выделение компьютерного класса на 15 рабочих мест. Каждый обучающийся во время занятий и самостоятельной подготовки должен быть обеспечен рабочим местом в компьютерном классе с установленным пакетом MatLab, иметь тетрадь, ручку, флеш-накопители. КРАТКОЕ ИЗЛОЖЕНИЕ ПРОГРАММНОГО МАТЕРИАЛА С МЕТОДИЧЕСКИМИ УКАЗАНИЯМИ СТУДЕНТУ Введение. Прошло немногим более 50 лет с момента появления первых электронных вычислительных машин – компьютеров. За это время сфера их применения охватила практически все области человеческой деятельности. Сегодня невозможно представить себе эффективную организацию работы без применения компьютеров в таких областях, как планирование и управление производством, проектирование и разработка сложных технических 10 устройств, издательская деятельность, образование – словом, во всех областях, где возникает необходимость в обработке больших объемов информации. Вследствие широкого внедрения вычислительной техники значительно усилилось направление численного моделирования и численного эксперимента. Численное моделирование, заполняя промежуток между физическими экспериментами и аналитическими подходами, позволило изучать явления, которые являются либо слишком сложными для исследования аналитическими методами, либо слишком дорогостоящими или опасными для экспериментального изучения. При этом численный эксперимент позволил значительно удешевить процесс научного и технологического поиска. Стало возможным моделировать в реальном времени процессы интенсивных физико-химических и ядерных реакций, глобальные атмосферные процессы, процессы экономического и промышленного развития регионов и т.д. В данном пособии излагаются основные возможности применения компьютеров для решения задач математики, физики. Студентам предлагаются заготовки, которые могут служить основой для доработки и усложнения соответствующих моделей. Примеры выполнены для пакета MATLAB, но благодаря тому, что каждая команда сопровождается пояснением, не составит труда выполнить их на любом другом языке. 11 МОДУЛЬ №1 МАТЕМАТИЧЕСКАЯ СИСТЕМА MATLAB Цель изучения модуля Сформировать у студентов знания, умения и навыки работы с математическим пакетом MATLAB. Окна системы MATLAB MATLAB (MATrix LABoratory) – интерактивный матрично- ориентированный пакет, предназначенный для выполнения научных и инженерных расчетов. По умолчанию после запуска пакета MATLAB на экране появляется комбинированное окно, включающее четыре наиболее важные панели: Command Window (Окно команд) – самая используемая панель. В ней набирают команды пользователя, подлежащие немедленному исполнению. Здесь же выдаются результаты выполненных команд. Command History (История команд) хранит все команды, набираемые пользователем, однако в отличие от содержимого Command Window (Окно команд) сюда не попадают сообщения системы и результаты вычислений. Workspace (Рабочее пространство) отображает текущий набор переменных, заведенных пользователем в командном окне. Current Directory (Текущий каталог) является аналогом известной программы Проводник, но имеет для MATLAB свое особое предназначение. Дело в том, что, кроме работы с математическими выражениями из командного окна, пользователь также может работать с файлами. 12 Функцию пользователя можно создать следующим образом: 1. Вызов окна редактора m-файлов путем нажатия кнопки New M- File (Создать m-файл). 2. Ввод строки function z=name(x) Ключевое слово function объявляет новую функцию, имя которой name, а ее параметр – х. Символ z определяет значение функции при аргументе x. 3. Задание новой функции (функции пользователя). Пусть z=exp(x)./x 4. Сохранение функции пользователя на диске. Для этого достаточно щелкнуть мышью по кнопке Save (Сохранить). 5. Закрытие окна редактора m-файлов. Функция пользователя z=exp(x)./x создана. Для вычисления функции при данном аргументе х достаточно набрать в окне команд имя функции и значение аргумента в круглых скобках: z=name(1). На экране получим значение функции z = 2.7183. Визуализация вычислений Следующие выражения >> x= 0 : 0.01 : 2; >> y = sin(x); вычисляют массив y значений функции sin( x) для заданного набора аргументов. После этого вызовом единственной функции >>plot (x, y) удается построить график функции. Если поверх первого графика нужно построить второй график, то перед вторичным вызовом команды plot нужно выполнить команду hold on, которая предназначена для удержания текущего графического окна. 13 >> z = cos (x); >> hold on >> plot (x,z) Того же самого можно добиться, потребовав от функции plot построить сразу несколько графиков в рамках одних и тех же осей координат: >>x=0: 0.01: 2; >>y=sin(x), z=cos(x) >> plot (x, y, x, z) При таком подходе графики автоматически будут построены разным цветом. Для проставления различных надписей на полученном рисунке применяют функции xlabel, ylabel, title и text. Если требуется разместить надпись в произвольном месте рисунка, применяем функцию text: >>text (x, y, ‘some text’) >> title (‘Function sin(x) graph’); >> xlabel (‘x coordinate’); ylabel (‘sin(x)’) >> text (1.1, 0.9, ‘\leftarrowsin(x)’); grid on; Основными функциями двухмерной графики являются: plot(x, y) plot(x, y, s) где: х – аргумент функции, задаваемой в виде вектора; у – функция, представленная в аналитическом виде или в виде вектора или матрицы; s – вектор стилей графика; константа, определяющая цвет линий графика, тип точек и тип линий; В таблице 1.1 приведены стили графиков системы MATLAB. 14 Таблица 1.1. Стили графиков . О + * Тип точки Точка Окружность Крест Плюс Восьмиконечная снежинка Квадрат Ромб Треугольник вверх, вниз, влево, вправо S D V, ^, <, > P Пятиконечная звезда H Шестиконечная звезда Y M C R G Цвет линии Желтый Фиолетовый Голубой Красный Зеленый B W K Синий Белый Черный : -. -- Если нужно построить график функции Тип линии Сплошная Двойной пунктир Штрих-пунктир Штриховая r sin( 3 ) в полярных координатах, то следующие несколько команд, состоящие из вычисления выражений и вызова графической функции polar, специально предназначенной для построения графиков в полярных координатах, решают эту задачу. >> phi=0 : 0.01 : 2*pi; >> r=sin (3*phi); >> polar (phi, r) Рассмотрим пример построения графика функции name(x). В окне Command Window задается программа: >> x=-5:0.5:5; % задание промежутка [-5;5] с шагом 0,5 >> plot(x, name(x),['R','*','-.']) % выведение графика функции name(x) красного цвета (R), точки графика в виде снежинок (*), линии штрихпунктирные (-.) >> grid on % задание сетки ЗАДАНИЕ Создать функцию пользователя y=f(x), вычислить ее значение в точке х0 и простроить график. 15 Варианты заданий. № Функция х0 варианта ex 1 y 2 y 3 y shx sin x 1 4 y 5 2 3 y sin 2 2 x cos2 2 x 3 4 6.32 6 sin 2 x y 1 cos4 x 4.75 7 y ex 3 x2 x 1 2.35 8 y x 3 3 (1 x) 2 1 8.29 9 y ex 1 x x 2 x 2 4.56 10 y x 1 cos(0,5 x) 1.23 11 y x 2 ln(1 x 2 ) x 7.55 12 ye 3.64 ex 1 x x2 1 x ln( x 2 1) 1 2 x(1 ln x) sin x 1,5 5.5 2.75 3.1 4.21 со списком элементарных функций можно ознакомиться, набрав команду >> help elfun со списком операторов >> help ops 16 Чтобы очистить командное окно, необходимо из меню Edit задать команду Clear Command Window Чтобы очистить историю команд, необходимо из меню Edit задать команду Clear Command History Целая часть числа от дробной отделяется точкой. Вопросы 1. Назови четыре основных окна. Какие функции они выполняют? 2. Как создать функцию пользователя? 3. Назови основные функции двухмерной графики? Объясни параметры этих функций. 4. Как узнать обозначение элементарных функций в системе Матлаб? МОДУЛЬ №2. МЕТОДЫ ОТДЕЛЕНИЯ КОРНЕЙ УРАВНЕНИЙ С ОДНОЙ ПЕРЕМЕННОЙ Цель изучения модуля Сформировать у студентов знания об основных методах отделения корней уравнений с одной переменной, выработать умения и навыки использования этих методов при решении конкретных уравнений. Методические рекомендации Нахождение корней уравнений Часто встречающейся численной задачей в рамках математического моделирования процессов является задача нахождения решения уравнений одной переменной (корней уравнений). 17 В общем виде любое уравнение одной переменной принято записывать так f ( x) 0 , при этом корнем (решением) называется такое значение x* , что f ( x* ) 0 оказывается верным тождеством. Уравнение может иметь один, несколько (включая бесконечное число) или ни одного корня. Для действительных корней задача отыскания решения уравнения легко интерпретируется графически: корень есть такое значение независимой переменной, при котором происходит пересечение графика функции, стоящей в левой части уравнения f (x) , с осью абсцисс. Например, пусть есть уравнение x 2 sin( x) 1 Преобразуем его в x 2 sin( x) 1 0 и определим, что f ( x) x 2 sin( x) 1 График функции имеет вид Таким образом, можно приблизительно определять область локализации корней уравнения. Так, видно, что данное уравнение имеет два действительных корня – один на отрезке [-1, 0] , а второй – [1, 2]. Пример 1. Отделить корни трансцендентного уравнения x 2 sin x 1 0 графически. Решение. 1. Создайте файл Func.m, содержащий описание функции z x 2 sin x 1 . 18 Файл Func.m. function z=Func(x) z=x.^2-sin(x)-1; 2. Постройте график функции z x 2 sin x 1 в промежутке [-2; 2], выполнив в командном окне пакета MATLAB следующую последовательность операторов: >> x= -2:0.1:2; >> plot(x, Func(x)); grid on 3. Из рисунка видно, что функция имеет два корня: х1[-1; 0] и х2 [1; 2]. Пример 2. Уменьшить промежуток изоляции корня х2 [1; 2] уравнения x 2 sin x 1 0 до промежутка длиной 0,1. Методические указания Теорема: Если непрерывная и строго монотонная на отрезке a, b функция f (x ) f (a) * f (b) 0 , то на концах его имеет противоположные знаки, т.е. на интервале a, b имеется один и только один корень. Решение 1. Создайте файл ChislOtd.m, содержащий описание функции, уменьшающий промежуток изоляции корня. Файл ChislOtd.m. function ChislOtd(f,x1,x2,h); % f - имя m-файла, содержащего описание функции 19 % x1 - левая граница отрезка, на котором производится поиск решения % x2 - правая граница отрезка, на котором производится поиск решения % h – длина промежутка изоляции корня a=x1; b=x1+h; while b<=x2 if feval(f,a)*feval(f,b)<=0 % feval(f,c) - оператор вычисления в точке х=с значения % функции, описание которой находится в соответствующем файле. % Имя файла хранится в строковой переменной f a b end; a=b; b=b+h; end; 2. Найдите новый промежуток изоляции корня: >> ChislOtd('Func',1,2,0.1) a= 1.4000 b= 1.5000 Таким образом, мы получили промежуток изоляции корня [1,4; 1,5], который имеет длину 0,1. 20 Задание 1. Отделить корни трансцендентного уравнения графически. 2. Провести численное отделение корней. Варианты заданий. № варианта Задание № варианта Задание 1 x 3 4 ln ( x 1) 7 x2 1 0 4 1 x 2 cos2 x 1 sin 4 x 8 2 ln x 3 cos x 1 0 1 sin x 9 x 20 tgx 4 x 0,5 0 4 1 x4 10 x2 5 x 1 0 4 1 x4 11 1 x 1 0 ln x 2 1 6 3 12 e x 0,01 x 1 x3 x x 1 0,5 0 x 3 Вопросы 1. Что называется корнем уравнения?2. Что значит решить уравнение? 3. Что значит отделить корень? 4. Суть графического отделения корней уравнения. 5. Суть численного отделения корней уравнения. 21 МОДУЛЬ № 3 ОПРЕДЕЛЕНИЕ КОРНЕЙ УРАВНЕНИЙ С ОДНОЙ ПЕРЕМЕННОЙ Цель изучения модуля Привить студентам знания об основных этапах решения уравнения, выработать навыки использования различных методов для уточнения корня уравнения. Методические рекомендации Все численные методы решения уравнений представляют собой алгоритмы последовательного приближения к корню уравнения. То есть, выбирается начальное приближение к корню x0 и затем с помощью формулы генерируется последовательность x1, x2 ,..., xk , сходящаяся к корню уравнения lim xk x* . k Метод дихотомии (половинного деления) основан на последовательном делении отрезка локализации корня пополам. Для реализации этого метода выбирается начальное приближение к отрезку a, b такое, что f (a) * f (b) 0 , затем определяется знак функции в точке c ab - середине отрезка 2 функции в точке a, b . Если он противоположен знаку a , то корень локализован на отрезке a, c, если же нет – то на отрезке c, b . Пример 1. Решить уравнение x 2 sin( x) 1 0 методом половинного деления с точностью 0,001 (промежуток изоляции корня [1,4; 1,5]). 22 Решение 1. Создайте файл Func.m, содержащий описание функции y x 2 sin x 1 . Файл Func.m. function z=Func(x) z=x.^2-sin(x)-1; 2. Создайте файл Div2.m, содержащий описание функции, возвращающей значение корня уравнения методом половинного деления. Файл Div2.m. function Div2(f,x1,x2,esp); % f - имя m-файла, содержащего описание функции % x1 - левая граница отрезка, на котором производится поиск решения % x2 - правая граница отрезка, на котором производится поиск решения % eps - точность решения L=x2-x1; k=0; % k - счетчик количества шагов приближения к корню while L>esp c=(x2+x1)/2; k=k+1; if feval(f,c)*feval(f,x1)<0 % feval(f,c) - оператор вычисления в точке х=с значения % функции, описание которой находится в соответствующем файле. % Имя файла хранится в строковой переменной f x2=c; else x1=c; end; 23 L=x2-x1; end; x=c k fx=feval(f,c) % fx - значение невязки 3. Вычислите значение корня уравнения >> Div2('Func',1.4,1.5,0.001) x= 1.4102 k= 7 fx = 0.0014 Ответ: решение х=1,4102 мы получили с точностью 0,001 за семь итераций. При этом значение невязки fx = 0,0014. Пример 2. Решить уравнение x 2 sin( x) 1 0 методом итераций с точностью 0,001 (промежуток изоляции корня [1,4; 1,5]). Методические рекомендации Метод простой итерации Это простейший из методов нахождения корней. В качестве итерационной формулы используется выражение независимой переменной из исходного уравнения: 24 Исходное уравнение - f ( x) 0 путем арифметических преобразований приводится к виду x g (x) , который может использоваться в качестве итерационной формулы. Данное преобразование, как правило, не однозначно и совершенно отдельной задачей является оценка применимости и эффективности того или иного способа преобразования. Например, уравнение x 2 sin( x) 1 1 можно преобразовать, например, так x 1 sin( x) или так x arcsin( x 2 1) или так x 1 sin( x) и т.д. x Задавшись начальным приближением к корню (например, из анализа графика функции или априорных соображений физически реальной модели) можно найти решение: x1 g ( x0 ) , затем x2 g ( x1 ) ,…, xk g ( xk 1 ) . Ниже приведена таблица вычислений для представленных выражений, начиная с одного и того же начального приближения. Точность до семи значащих цифр достигается при данном выборе начального приближения для первой итерационной формулы уже на шестом шаге итерационной процедуры, для третьей – на 115-м (в таблице не показано). А вот для второй формулы уже на третьем итерационном шаге вычисления прекращаются, так как под знаком арксинуса оказывается число, большее единицы (нарушается область определения функции). Теорема 3. Пусть функция g(x) определена и дифференцируема на отрезке a; b, причем все ее значения g ( x) a; b , и существует такое 25 вещественное число q, что gx q 1 , x a; b, тогда итерационная последовательность сходится независимо от начального приближения x0 a; b и предельное значение x* lim xn является единственным n корнем уравнения x g (x) на отрезке a;b. Чем меньше значение q, тем «быстрее» сходится итерационная 1 2 последовательность. Сходимость будет достаточно «быстрой», если q . Решение 1. Создайте файл Func.m, содержащий описание функции y x 2 sin x 1 . Файл Func.m. function z=Func(x) z=x.^2-sin(x)-1; 2. Создайте файл Func1.m, содержащий описание итерационной формулы x 1 sin( x) . Файл Func1.m. function y=Func1(x) y=sqrt(1+sin(x)) 3. Создайте файл Iter.m, содержащий описание функции, возвращающей значение корня уравнения методом итераций. Файл Iter.m. function Iter(f,x0,esp) x1=Func1(x0); k=1; while abs(x1-x0)>esp x0=x1; x1=Func1(x0); k=k+1; 26 end; x=x1 k fx=feval(f,x1) 4. Вычислите значение корня уравнения: >> Iter('Func',1.4,0.001) x= 1.4076 k= 5 fx = -0.0055 Ответ: решением уравнения будет число х=1.4076, полученное на 5 шаге. Значение невязки fx = -0.0055. Решение алгебраических и трансцендентных уравнений в среде MATLAB осуществляется с помощью встроенной функции: fzero(). Функция fzero( ) имеет следующую реализацию: [x, f, e_flag, inform] = fzero('f(x)', x0) где: x – искомое неизвестное; f – значение невязки; e_flag – переменная, знак которой свидетельствует о наличии корня на данном интервале ( например, e_flag=1 – корень существует); inform – содержит три поля с именами iterations (количество итераций), funcCount (количество обращений к функции f(x)), и algorithm (наименование алгоритма, использованного для нахождения корня); 27 'f(x)' – решаемое уравнение, записанное в одиночных кавычках; x0 – начальное приближение или интервал поиска решения. Пример 3. Необходимо найти корни уравнения y x 2 sin x 1 , если известно, что корни находятся в промежутках [-1, 0] и [1, 2]. Решение >> [x,f,e_flag,inform]=fzero('x^2-sin(x)-1',[-1, 0]) x= -0.6367 f= 0 e_flag = 1 inform = iterations: 8 funcCount: 8 algorithm: 'bisection, interpolation' >> [x,f,e_flag,inform]=fzero('x^2-sin(x)-1',[1, 2]) x= 1.4096 f= -1.1102e-016 e_flag = 1 inform = iterations: 10 28 funcCount: 10 algorithm: 'bisection, interpolation' Задание Используя варианты и результаты предыдущего модуля выполнить следующие задания: 1. Решить уравнение методами половинного деления и итераций с точностью 0,001. 2. Вывести на печать приближенное значение корня, количество итераций, значение невязки. 3. Провести сравнительную характеристику методов. 4. Решить уравнение в среде MATLAB с помощью встроенных функций. МОДУЛЬ №4 ИНТЕРПОЛИРОВАНИЕ ФУНКЦИЙ Цель изучения модуля Сформировать у студентов представления об интерполировании функций, научить составлять и применять интерполяционные формулы и оценивать их погрешности, дать навыки в использовании программных средств, для проверки полученных результатов. Методические рекомендации Одной из экспериментальных первых задач данных является исследователя задача при обработке нахождения имеющейся функциональной зависимости между измеренными величинами. Так как в ходе экспериментальной работы точное аналитическое задание функции не 29 известно, то для целей исследования применяют следующий прием: функцию, заданную таблично (функцию, заданную графически всегда можно представить в табличном виде) заменяют на некотором отрезке [a;b] другой функцией более простой, близкой в некотором смысле к данной и имеющей аналитическое выражение. Постановка задачи интерполяции. Пусть известные значения некоторой неизвестной функции f (x) образуют следующую таблицу: х x0 x1 … xn f(x) y0 y1 … yn При этом требуется получить значение функции f (x) для такого значения аргумента x , которое входит в отрезок [a;b], но не совпадает ни с одним из значений xi (i=0,…,n). Для решения этой задачи надлежит построить функцию называемую интерполирующей функцией и принимающей в F (x) , узлах интерполяции те же значения, что и f (x) , т. е. F ( x 0 ) y 0 , F ( x1 ) y1 ,..., F ( x n ) y n . Геометрически это означает, что нужно найти кривую y F (x) , проходящую через заданную систему точек M i ( xi , yi ) , (i 0, n) (рис. 4.1). Рис. 4.1 30 Эта задача становится однозначной, если вместо произвольной функции y F (x) искать многочлен вида Pn(x) a00(x) a11(x) ... ann(x), где a0 , a1 ,..., an – постоянные коэффициенты, 0(x), 1(x),...,n ( x) заданные на некотором множестве функции. Такой многочлен называется обобщенным полиномом порядка n. В частности, если 0(x) 1, 1(x) x,..., n(x) x n , то Pn(x) a0 a1 x ... an x n – обычный многочлен степени n. Чтобы задать многочлен (n)-ой степени достаточно задать его (n+1) коэффициентов. Значения многочлена просто вычисляются, его легко продифференцировать, проинтегрировать и т.д. Поэтому алгебраические многочлены нашли широкое применение для приближения функций. Используя таблицу, получаем систему линейных уравнений Pn (x0)=an x0n + an-1 x0n-1 + … + a1 x0 + a0= y0 Pn (x1)=an x1n + an-1 x1n-1 + … + a1 x1 + a0= y1 …………………………………………….. Pn (xn)=an xnn + an-1 xnn-1 + … + a1xn + a0= yn В матричном представлении система имеет вид: Va = y, где x0n n x V 1 . n xn 1 x1n 1........ x1 1 ...... ...... ...... xnn 1...... xn 1 x0n 1........ x0 31 a0 a a 1, .... an y0 y y 1 .... yn Известно, что система Va = y однозначно разрешима тогда и только тогда, когда det(V)≠0. Определителем матрицы V является известный из курса алгебры определитель Ван-дер-Монда не равный нулю в силу условия xi≠xj при i≠j. Таким образом, коэффициенты a0 , ..., aN (то есть решение системы) находятся однозначно. Следовательно, интерполяционный полином существует и единствен. Пример 1. Рассмотрим функцию f(x), заданную таблично: х у 0,43 1,6359 0,48 1,7323 0,55 1,8768 0,62 2,0304 0,70 2,2284 0,75 2,3597 Построить интерполяционный многочлен методом неопределенных коэффициентов и вычислить приближенное значение функции в точке х=0,53. Решение. 1. Создайте файл Pol.m, содержащий описание функции, возвращающей n значения полинома Pn ( x) ak x nk . k 0 Файл Pol.m function z=Pol(a,x) M=length(a); % функция length используется для определения длины массива a 32 s=0; for i=1:М s=s+a(i)*x.^(М-i); end; z=s; 2. Создайте файл Vandermond.m, содержащий описание функции, возвращающей значения элементов матрицы Вандермонда. Файл Vandermond.m function z=Vandermond(x) M=length(x); z=ones(M,M); % ones (M,M) – формирование единичной матрицы M*M for i=1:M for j=1:M z(i,j)=x(i).^(M-j); end; end; 3. Задайте значения экспериментальных данных. >> x=[0.43;0.48;0.55;0.62;0.70;0.75] x= 0.4300 0.4800 0.5500 0.6200 0.7000 0.7500 >> y=[1.6359;1.7323;1.8768;2.0304;2.2284;2.3597] y= 33 1.6359 1.7323 1.8768 2.0304 2.2284 2.3597 4. Вычислите значения элементов матрицы Вандермонда. >> M=Vandermond(x) M= 0.0147 0.0342 0.0795 0.1849 0.4300 1.0000 0.0255 0.0531 0.1106 0.2304 0.4800 1.0000 0.0503 0.0915 0.1664 0.3025 0.5500 1.0000 0.0916 0.1478 0.2383 0.3844 0.6200 1.0000 0.1681 0.2401 0.3430 0.4900 0.7000 1.0000 0.2373 0.3164 0.4219 0.5625 0.7500 1.0000 5. Вычислите значения коэффициентов полинома. >> a=M^-1*y a= -152.9063 444.9904 -511.6367 291.7494 -80.6863 10.0997 Таким образом, полином имеет вид: P5 ( x) 152,9063х 5 444,9904 х 4 511,6367 х 3 291,7494 х 2 80,6863х 10,0997 34 6. Вычислить значение полинома в заданной промежуточной точке х=0,53. >> x1=0.53; >> y1=Pol(a,x1) y1 = 1.8349 7. Постройте график найденного полинома. >> x1=0.43:0.01:0.75; >> y1=Pol(a,x1); >> plot(x1,y1) Обратите внимание, что совпадение значений полученного аналитического задания функции в узлах интерполяции с имеющимися эмпирическими данными часто может вовсе не означать совпадение характеров поведения исходной и интерполирующей функции на всем интервале наблюдения. Кроме того, табличная зависимость показателей всегда получается в результате измерений приборами, имеющими определенную и не всегда достаточно малую погрешность измерения. Требование точного совпадения значений приближающей и приближаемой функций в узлах является тем более неоправданным, если значения функции f(х), полученные в результате измерений, уже сами являются приближенными. ЗАДАНИЕ 1. Построить интерполяционный многочлен. 2. Построить график интерполяционной функции. 3. Найти приближенные значения функции при данных промежуточных значениях аргумента. 35 Варианты заданий. 1 2 3 x y x y x y 1,415 0,8886 3,50 33,115 1,345 4,3532 1,420 0,8900 3,55 34,813 1,350 4,4552 1,425 0,8906 3,60 36,598 1,355 4,5618 1,430 0,8917 3,65 38,474 1,360 4,6734 1,435 0,8927 3,70 40,447 1,365 4,7903 1,440 0,8940 3,75 42,521 1,370 4,9130 1,445 0,8947 3,80 44,701 1,375 5,0419 1,450 0,8957 3,85 46,993 1,380 5,1774 1,455 0,8967 3,90 49,402 1,385 5,3201 1,460 0,8977 3,95 51,935 1,390 5,4706 1,465 0,8986 4,00 54,598 1,395 5,6296 в точке x=1,4161 в точке x=3,475 в точке x=1,374 МОДУЛЬ №5 ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ Цель изучения модуля Сформировать у студентов представление о численном дифференцировании, дать навыки в использовании программных средств для проверки полученных результатов. Методические рекомендации Рассмотрим функцию f(x), заданную таблично: х у 0,43 1,6359 0,48 1,7323 0,55 1,8768 36 0,62 2,0304 0,7 2,2284 0,75 2,3597 Интерполяционный многочлен имеет вид (найден в предыдущей работе): P5 ( x) 154,9063 x 5 444,9904 x 4 511,6367 x 3 291,7494 x 2 80,6863 x 10,0997 . В среде MATLAB коэффициенты полинома можно найти с помощью функции polyfit(), которая имеет вид: polyfit(x, y, n) где: x – вектор узлов интерполяции; y – вектор значений функции в узлах интерполяции; n – степень полинома. Откликом при реализации функции polyfit() является вектор коэффициентов полинома. Пример 7 Выполните следующие действия: >> x=[0.43;0.48;0.55;0.62;0.70;0.75]; >> y=[1.6359;1.7323;1.8768;2.0304;2.2284;2.3597]; >> polyfit(x,y,5) После нажатия клавиши <Enter> ответ получим в следующем виде: ans = -152.9063 444.9904 -511.6367 291.7494 -80.6863 10.0997 Тогда функцией интерполяции будет следующий полином пятой степени: P5 ( x) 152,9063 х 5 444,9904 х 4 511,6367 х 3 291,7494 х 2 80,6863 х 10,0997 . Решение совпадает с полученным в предыдущем примере. Вычислим значения производной этой функции на отрезке [0,43; 0,75]: >> dx=0.01; 37 >> x=0.43:dx:0.75; >>yf=-154.9063*x.^5+444.9904*x.^4-511.6367*x.^3+291.7494*x.^280.6863*x+10.099; >> N=length(x); >> m=1:N-1; >> df(m)=(yf(m+1)-yf(m))/dx; >> plot(df) Задание 1. Построить интерполяционный многочлен. Использовать варианты модуля №5. 2. Найти приближенные значения производной функции на интервале интерполирования. 3. Построить график производной функции. МОДУЛЬ №6 ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННЫХ ИНТЕГРАЛОВ Цель изучения модуля Ознакомиться с численными методами вычисления определенных интегралов, научиться решать задачи с использованием формулы Симпсона, трапеций, правых и левых прямоугольников, метода Монте-Карло. Методические рекомендации Численное интегрирование — вычисление значения определенного интеграла (как правило, приближённое), основанное на том, что величина интеграла численно равна площади криволинейной трапеции, ограниченной 38 осью абсцисс, графиком интегрируемой функции и отрезками прямых x = a и x = b, где a и b — пределы интегрирования (см. рисунок 6.1). Рис. 6.1. Иллюстрация определения интеграла от функции. Формула прямоугольников Рис. 6.2. Иллюстрация к формулам численного интегрирования. Пусть функцию (рисунок 6.2) необходимо проинтегрировать численным методом на отрезке [a,b]. Разделим отрезок на N равных интервалов (на рисунке N=4). Площадь каждой из 4-х криволинейных трапеций можно заменить на площадь прямоугольника. Ширина всех прямоугольников одинакова и равна h xi xi1 ba . 4 В качестве выбора высоты прямоугольников можно предложить выбрать значение функции на левой границе. В этом случае высота первого прямоугольника составит f(a), второго – f(x1), третьего – f(x2), последнего – f(x3). Приближенное значение интеграла получается суммированием площадей прямоугольников 39 N 1 I f ( x0 )h f x1 h f x2 h f x3 h f ( xi )h i 0 Если в качестве выбора высоты прямоугольников взять значение функции на правой границе, то в этом случае высота первого прямоугольника составит f(x1), второго – f(x1), третьего – f(x3), последнего – f(b). N I f ( x1 )h f x2 h f x3 h f b h f ( xi )h i 1 Как видно, в этом случае, одна из формул дает приближение к интегралу с избытком, а вторая с недостатком. Формула трапеций Использование для интерполяции полинома первой степени (прямая линия, проведенная через две точки) приводит к формуле трапеций. В качестве узлов интерполирования берутся концы отрезка интегрирования. Таким образом, криволинейная трапеция на отрезке интегрирования заменяется на обычную трапецию, площадь которой может быть найдена как произведение половины суммы оснований на высоту. I f ( xi ) f ( xi 1 ) h 2 В случае N отрезков интегрирования для всех узлов, за исключением крайних точек отрезка, значение функции войдет в общую сумму дважды (так как соседние трапеции имеют одну общую сторону). h (b a ) N f a f (b) N 1 I h f (a ih ) 2 i 1 40 Проиллюстрируем использование формулы трапеций на примере рисунка 6.2: F (b) F (a) I F ( x1 ) F ( x2 ) F ( x3 ) h 2 2 Формула Симпсона Использование трех точек для интерполирования подынтегрального выражения позволяет использовать параболическую функцию (полином второй степени). Это приводит к формуле Симпсона приближенного вычисления интеграла. Отрезок [a,b] делится на 2n равных частей. Пусть точки деления будут х1=а, x2, x3, …x2n-2, x2n-1, x2n=b. Приведем без вывода формулу парабол в окончательном виде: b f ( x)dx a ba y1 y2n 4( y2 y4 ... y2n2 ) 2( y1 y3 ... y2n1 ) 6n Метод Монте-Карло Проиллюстрируем применение этого метода на примере приближенного вычисления следующего интеграла: 1 0 1 x 2 dx 4 . График подынтегрального выражения приведен на рисунке. Очевидно, что точное значение интеграла равно четверти площади круга единичного радиуса. 41 Построим прямоугольную область, которая будет полностью включать в себя искомый интеграл. В данном случае это будет квадрат с единичным ребром, показанный на рисунке. Далее, с помощью датчика случайных чисел генерируются точки ( xi , yi ) i 1,2,3,..., N , попадающие в эту область. В данном случае абсциссы и ординаты точек должны быть случайными числами, равномерно распределенными на отрезке [0,1]. Для каждой точки проверяется, попадает ли она в область под или над графиком функции, то есть проверяется условие: yi 1 xi2 Если условие выполняется, то выбранная точка соответствует «успеху», если нет – то «промаху». Таким образом, процедура может быть описана как игра в «попадание» случайно выбранной точки в область под графиком (отсюда и название метода - Монте-Карло). Вполне очевидно, что отношение числа «попаданий» ( N усп ) к общему числу попыток ( N ) должно в пределе стремиться к доли площади прямоугольной области ( S пр ), которую занимает область под интегрируемой функцией (значение интеграла I ). lim N N усп N I Sпр Отсюда получается формула метода Монте-Карло: I N усп N Sпр 42 Пример 1. 5 Вычислить 3 ln xdx интеграл методом левых и правых прямоугольников, трапеций и Симпсона. Решение В командном окне программы МАТLAB наберем следующую последовательность операторов: >> f=inline('reallog(x)'); % задание подынтегральной функции >> a=3; >> b=5; >> N=100; >> dx=(b-a)/(N-1); % шаг интегрирования >> x=a:dx:b; % вычисление координат узлов сетки >> y=feval(f,x); % вычисление значений функции в узлах сетки % вычисление интеграла методом правых прямоугольников >> m=2:N; >> Fr=sum(y)*dx Fr = 2.7565 % вычисление интеграла методом левых прямоугольников >> m=1:N-1; > Fl=sum(y)*dx Fl = 2.7462 % вычисление интеграла методом трапеций 43 >> s=0; >> for i=2:N-1 s=s+y(i); end; >> Ft=(0.5*y(1)+s+0.5*y(N))*dx Ft = 2.7513 % вычисление интеграла методом Симпсона >> s=0; >> for i=2:N-1 if i-2*ceil(i/2)==0 k=4; else k=2; end; s=s+k*y(i); end; >> Fs=(y(1)+s+y(N))*dx/3 Fs = 2.7405 Пример 2. 5 Вычислить интеграл ln xdx методом Монте-Карло. 3 Решение Значение интеграла можно вычислить по формуле: FМ К n S, N 44 где n – число точек, удовлетворяющих условию yi f ( xi ) , N – полное количество точек, S – площадь прямоугольника; В командном окне программы МАТLAB введем следующее: >> f=inline('reallog(x)'); % задание координат вершин прямоугольника >> a=3; >> b=5; >> Ymin= feval(f,a); >> Ymax=feval(f,b); % генерация случайных координат >> N=1000; >> x=a+(b-a)*rand(N,1); >> y=Ymin+(Ymax-Ymin)*rand(N,1); % подсчет числа точек, попавших под график функции >> s=0; >> for i=1:N if y(i)<=feval(f,x(i)) s=s+1; end; end; >> Fmk=s*(b-a)*(Ymax-Ymin)/N % вычисление значения интеграла Fmk = 2.7425 Вычисление интеграла в системе MATLAB осуществляется с помощью следующих встроенных функций: функции quad(fun, a, b, tol) – возвращает значение интеграла от fun на интервале погрешностью tol ( по [a, b] с умолчанию заданной tol=10-3), относительной при вычислении используется адаптивный метод Симпсона; int(y(x), a, b) – возвращает значение интеграла от функции y(x) на интервале [a, b] аналитическими методами (если границы не задавать, то вычисляет неопределенный интеграл). 45 Пример 3. Пусть необходимо вычислить определенный интеграл 5 3 ln xdx . Программа решения интеграла с помощью функции quad имеет вид: >> y='log(x)'; >> quad(y,3,5) После нажатия клавиши <Enter> получим следующее решение: ans = 2.7514 Задание Найти приближенное значение интеграла заданной функции f(x) на отрезке [a, b] по формулам прямоугольников, трапеции, Симпсона, МонтеКарло при делении отрезка на 200 равных частей Варианты заданий. № f(x) [a, b] 1 1 cos2 x [0; 3] 2 sin( 2 x 1) 3 № f(x) [a, b] 7 x x 2 tg 2 [1,5;2,5] [0; 1] 8 ex x [1; 7] x ( x 1.9) sin 3 [1; 2] 9 1 x 1 [0; 1] 4 1 ln( x 2) x [2; 3] 10 4 x4 [0; 3] 5 x x 2 cos 4 [2; 3] 11 1 cos 2 x [0; ] 6 3x ln x [1; 2] 12 e x sin( x 2 ) [0; 5] варианта 2 варианта 2 46 МОДУЛЬ № 7 МЕТОДЫ АППРОКСИМАЦИИ ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ Цель изучения модуля Сформировать у студентов представление о подходе к решению задачи о среднеквадратичном приближении функции, заданной таблично; привить знания о методах аппроксимации элементарными функциями; выработать навыки работы в среде МАТLAB. Постановка задачи аппроксимации функции одной переменной Пусть в результате измерений в процессе опыта получено табличное задание некоторой функции f (x ) , выражающей связь между двумя параметрами: х f(x) x1 y1 х2 у2 … … xn yn Конечно, можно найти формулу, выражающую эту зависимость аналитически, применив метод интерполяции. Однако совпадение значений полученного аналитического задания функции в узлах интерполяции с имеющимися эмпирическими данными часто может вовсе не означать совпадение характеров поведения исходной и интерполирующей функции на всем интервале наблюдения. Требование точного совпадения значений приближающей и приближаемой функций в узлах является тем более неоправданным, если значения функции f (x) , полученные в результате измерений, уже сами являются приближенными. Задача аппроксимации функции одной переменной с самого начала обязательно учитывает характер поведения исходной функции на всем интервале наблюдений. Формулировка задачи выглядит следующим образом. 47 Функция y f (x) задана таблицей. Необходимо найти функцию заданного вида y F (x) , (1), которая в точках x1, x2, …, xn принимает значения, как можно более близкие к табличным y1, y2, …, yn. На практике вид приближающей функции чаще всего определяют путем сравнения вида приближенно построенного графика функции y f (x) с графиками известных исследователю функций, заданных аналитически (чаще всего простых по виду элементарных функций). А именно, по таблице строится точечный график f (x) , затем проводится плавная кривая, по возможности наилучшим образом отражающая характер расположения точек. По полученной таким образом кривой на качественном уровне устанавливается вид приближающей функции. Рассмотрим рисунок. На рисунке изображены три ситуации: На графике (а) взаимосвязь x и y близка к линейной; прямая линия здесь близка к точкам наблюдений, и последние отклоняются от нее лишь в результате сравнительно небольших случайных воздействий. На графике (b) реальная взаимосвязь величин x и y описывается нелинейной функцией, и какую бы мы ни провели прямую линию, отклонение точек наблюдения от нее будет существенным и неслучайным. В то же время, проведенная ветка параболы достаточно хорошо отражает характер зависимости между величинами. На графике (с) явная взаимосвязь между переменными x и y отсутствует; какую бы мы ни выбрали формулу связи, результаты ее 48 параметризации будут здесь неудачными. В частности, обе выбранные прямые одинаково плохи для того, чтобы делать выводы об ожидаемых значениях переменной y по значениям переменной x . Метод наименьших квадратов Через имеющееся "облако" точек всегда можно попытаться провести линию установленного вида, которая является наилучшей в определенном смысле среди всех линий данного вида, то есть "ближайшей" к точкам наблюдений по их совокупности. Для этого определим вначале понятие близости линии к некоторому множеству точек на плоскости. Меры такой близости могут быть различными. Однако любая разумная мера должна быть, очевидно, связана с расстоянием от точек наблюдения до рассматриваемой линии (задаваемой уравнением y F (x) ). Часто в качестве критерия близости используется минимум суммы квадратов разностей наблюдений зависимой переменной yi и теоретических, рассчитанных по уравнению регрессии значений F ( xi ) . Метод оценивания параметров приближающей функции, минимизирующий сумму квадратов отклонений наблюдений зависимой переменной от значений искомой функции, называется методом наименьших квадратов (МНК) или Least Squares Method (LS). Итак, задачу приближения функции f(x) теперь можно сформулировать следующим образом: для функции f(x), заданной таблицей (1), найти функцию F (x) определенного вида так, чтобы сумма квадратов Ф была наименьшей. Ф ( yi F ( xi )) min 2 (2) i Рассмотрим метод нахождения приближающей функции в общем виде на примере аппроксимирующей функции с тремя параметрами (параболы ax 2 bx c 0 , например): y F ( x, a, b, c) (3) 49 Сумма квадратов разностей соответствующих значений f (x) и F (x) будет иметь вид: y F ( x , a, b, c) 2 i i Ф(a, b, c) (4) i Эта сумма является функцией Ф(a, b, c) трех переменных (параметров a , b и c ). Задача сводится к отысканию ее минимума. Используем необходимое условие экстремума: Ф Ф Ф 0, 0, 0. а b c Получаем систему для определения неизвестных параметров a , b , c . ' yi F ( xi , a, b, c) Fa ( xi , a, b, c) 0 i ' yi F ( xi , a, b, c) Fb ( xi , a, b, c) 0 i y F ( x , a, b, c) F ' ( x , a, b, c) 0 i c i i i (5) Решив эту систему трех уравнений с тремя неизвестными относительно параметров a , b , c , мы и получим конкретный вид искомой функции F ( x, a, b, c) . Как видно из рассмотренного примера, изменение количества параметров не приведет к искажению сущности самого подхода, а выразится лишь в изменении количества уравнений в системе. Естественно ожидать, что значения найденной функции F ( x, a, b, c) в точках х1, x2, ..., xn, будут отличаться от табличных значений y1, y2, ..., yn. Значения разностей yi F ( xi , a, b, c) ei (i 1,2,..., n) называются отклонениями измеренных значений y от вычисленных по формуле (3). Из двух разных приближений одной и той же табличной функции, следуя методу наименьших квадратов, лучшим нужно считать то, для которого сумма квадратов отклонений имеет наименьшее значение. В экспериментальной практике в качестве приближающих функций в зависимости от характера точечного графика f часто используются приближающие функции с двумя параметрами: 50 Очевидно, что когда вид приближающей функции установлен, задача сводится только к отысканию значений параметров. Нахождение приближающей функции в виде линейной функции (линейной регрессии) Начальным пунктом анализа зависимостей обычно является оценка линейной зависимости переменных. Следует при этом учитывать, однако, что "наилучшая" по методу наименьших квадратов прямая линия всегда существует, но даже наилучшая не всегда является достаточно хорошей. Если в действительности зависимость y f (x) является квадратичной, то ее не сможет адекватно описать никакая линейная функция, хотя среди всех таких функций обязательно найдется "наилучшая". Если величины x и y вообще не связаны, мы также всегда сможем найти "наилучшую" линейную функцию y ax b для данной совокупности наблюдений, но в этом случае конкретные значения a и b определяются только случайными отклонениями переменных и сами будут очень сильно меняться для различных выборок из одной и той же генеральной совокупности. Рассмотрим теперь задачу оценки коэффициентов линейной регрессии более формально. Предположим, что связь между x и y линейна и искомую приближающую функцию будем искать в виде: F ( x, a, b) ax b (6) Найдем частные производные по параметрам: Фa' x , Фb' 1 . Подставим полученные соотношения в систему вида (5): 51 ( yi axi b) xi 0 i i 1,..., n ( yi axi b) 0, i Далее имеем: ( yi axi b) xi 0 i i 1,..., n ( yi axi b) 0, i yi xi a ( xi ) 2 b xi 0 i i i i 1,..., n yi a xi nb 0, i i или, деля каждое уравнение на n : 2 1 1 1 ( n ( xi ) ) a ( n xi ) b n yi xi i i i ( 1 x ) a b 1 y , i 1,..., n i i n i n i Введем обозначения: 1 xi M x , n i 1 yi M y , n i 1 yi xi M xy , n i 1 ( xi ) 2 M x 2 n i (7) Тогда последняя система будет иметь вид: M x 2 a M x b M xy M x a b M y (8) Коэффициенты этой системы M x , M y , M xy , M x - числа, которые в 2 каждой конкретной задаче приближения могут быть легко вычислены по формулам (7), где xi , yi - значения из таблицы (1). Решив систему (8), получим значения параметров a и b , а следовательно, и конкретный вид линейной функции (6). Степенная функция (геометрическая регрессия) Найдем теперь приближающую функцию в виде 52 F ( x, a, m) a x m (9) Предполагая, что в исходной таблице значения аргумента и значения функции положительны, прологарифмируем равенство (9) при условии a 0 ln F ln a m ln x (10) Так как функция F является приближающей для функции f , функция ln F будет приближающей для функции ln f . Введем новую переменную u ln x , тогда, как следует из (10), ln F будет функцией от u : Ф(u ) . Обозначим m A , ln a B (11) Теперь равенство (10) принимает вид Ф(u , A, B) Au B (12), т.е. задача свелась к отысканию приближающей функции в виде линейной. Практически для нахождения искомой приближающей функции в виде степенной (при сделанных выше предположениях) необходимо проделать следующее: 1) по данной таблице (1) составить новую таблицу, прологарифмировав значения x и y в исходной таблице; 2) по новой таблице найти параметры A и B приближающей функции вида (12); 3) используя обозначения (11), найти значения параметров a и m и подставить их в выражение (9). Показательная функция Пусть исходная таблица такова, что приближающую функцию целесообразно искать в виде показательной функции: F ( x, a, m) a exp( m x), a 0 (13) Прологарифмируем равенство (13): ln F ln a m x (14) 53 Приняв обозначения (11), перепишем (14) в виде: ln F Ax B (15) Таким образом, для нахождения приближающей функции в виде (13) нужно прологарифмировать значения функции в исходной таблице и, рассматривая их совместно с исходными значениями аргумента, построить для новой таблицы приближающую функцию вида (15). Вслед за этим в соответствии с обозначениями (11) остается получить значения искомых параметров a и b и подставить их в формулу (13). Логарифмическая функция Пусть приближающая функция имеет вид: F ( x, a, b) a ln x b (16) Легко видеть, что для перехода к линейной функции достаточно сделать подстановку ln x u . Отсюда следует, что для нахождения значений a и b нужно прологарифмировать значения аргумента в исходной таблице и, рассматривая полученные значения в совокупности с исходными значениями функции, найти для полученной таким образом новой таблицы приближающую функцию в виде линейной. Коэффициенты a и b найденной функции подставить в формулу (16). Гипербола Если точечный график, построенный по таблице экспериментальных значений, дает ветвь гиперболы, приближающую функцию можно искать в виде: F ( x, a , b ) a b x (17) 1 x Для перехода к линейной функции сделаем подстановку u . 54 Ф(u, a, b) a u b (18) Практически перед нахождением приближающей функции вида (17) значения аргумента в исходной таблице следует заменить обратными числами и найти для новой таблицы приближающую функцию в виде линейной (18). Полученные значения параметров a и b подставить в формулу (17). Методические рекомендации Пример 1 Найти уравнение линейной и гиперболической регрессий для функции, заданной таблично: x y 1 4 2 5 3 3,5 4 1,5 5 2 Решение а) Вычислить коэффициенты a и b уравнения линейной регрессии можно, воспользовавшись системой: M x 2 a M x b M xy , M x a b M y ; (12.1) где 1 2 M x 2 n xi , M 1 x , x n i M 1 x y , i i xy n 1 M y yi ; n (12.2) или формулами: a M xy M x M y M x2 M x 2 , b M x2 M y M x M xy M x2 M x 2 . (12.3) 55 В командном окне программы MATLAB наберем следующую последовательность операторов: % задание исходных данных >> x=[1;2;3;4;5]; >> y=[4;5;3.5;1.5;2]; >> x2=[x.^2]; >> xy=[x.*y]; % вычисление элементов матриц М и d >> Mx=1/5*sum(x); >> My=1/5*sum(y); >> Mx2=1/5*sum(x2); >> Mxy=1/5*sum(xy); % задание матрицы М >> M(1,1)=Mx2; >> M(1,2)=Mx; >> M(2,1)=Mx; >> M(2,2)=1; % задание матрицы d >> d(1,1)=Mxy; >> d(2,1)=My; >> Coeff=M^-1*d % решение системы линейных уравнений (12.1) % для проверки, вычисление коэффициентов с помощью формул (12.3) >> a=(Mxy-Mx*My)/(Mx2-Mx^2) >> b=(Mx2*My-Mx*Mxy)/(Mx2-Mx^2) % вычисление суммы квадратов отклонений >> y1=a*x+b; >> e2=(y-y1).^2; >> S=sum(e2) >> plot(x,y1,x,y,'*') % построение графика полученной функции и исходных данных 56 б) Для нахождения гиперболической регрессии воспользуемся заменой u 1 и рассмотрим таблицу x u y u1 y1 u2 y2 … … un yn для функции F (u, a, b) au b . В командном окне программы MATLAB введем следующее: >> x=[1;2;3;4;5]; >> u=(1./x); % введение замены переменной х >> y=[4;5;3.5;1.5;2]; >> u2=[u.^2]; >> uy=[u.*y]; >> Mu=1/5*sum(u); >> My=1/5*sum(y); >> Mu2=1/5*sum(u2); >> Muy=1/5*sum(uy); >> M(1,1)=Mu2; >> M(1,2)=Mu; >> M(2,1)=Mu; >> M(2,2)=1; >> d(1,1)=Muy; >> d(2,1)=My; >> Coeff=M^-1*d >> a=(Muy-Mu*My)/(Mu2-Mu^2) >> b=(Mu2*My-Mu*Muy)/(Mu2-Mu^2) >> y2=a./x+b >> e2=(y-y2).^2 >> S=sum(e2) >> plot(x,y2,x,y,'*') 57 Получили уравнение гиперболической регрессии у=3,9564/х+1,1610, сумму квадратов отклонений S=6,1769 и график. Задание 1. Используя данные таблицы и применяя стандартные замены переменных, найти уравнения следующих видов регрессий: линейной, гиперболической, степенной, показательной, логарифмической. 2. Сравнить качество полученных приближений путем сравнения их отклонений. 3. Построить графики получившихся зависимостей и табличных значений аргументов и функции. Варианты заданий. № 1 2 3 4 5 6 7 8 9 10 х у х у х у х у х у х 1,20 2,56 1,73 0,63 -4,38 2,25 1,00 0,28 5,89 79,31 2,91 1,57 2,06 2,56 1,11 -3,84 2,83 1,64 0,19 3,84 57,43 2,94 1,94 1,58 3,39 1,42 -3,23 3,44 2,28 0,15 6,19 60,66 6,35 Задание 2,31 2,68 1,25 0,91 4,22 5,05 1,96 2,30 -2,76 -2,22 4,51 5,29 2,91 3,56 0,11 0,09 9,22 7,87 90,55 92,12 6,58 3,80 у х 82,16 1,23 61,02 1,79 44,56 2,24 82,52 2,76 99,19 3,20 70,24 3,68 63,23 4,16 66,48 4,64 у х 2,10 -4,38 2,84 -3,84 3,21 -3,23 3,96 -2,76 4,86 -2,22 6,06 -1,67 7,47 -1,13 9,25 -0,60 у х 1,73 2,56 2,56 2,06 3,39 1,58 4,22 1,25 5,05 0,91 5,89 0,66 6,70 0,38 7,53 0,21 у х 0,63 79,31 1,11 57,43 1,42 60,66 1,96 90,55 2,30 92,12 2,89 71,30 3,29 70,50 3,87 91,25 3,05 0,66 5,89 2,89 -1,67 6,55 4,29 0,08 6,29 71,30 6,43 3,42 0,38 6,70 3,29 -1,13 8,01 4,84 0,07 4,43 70,50 0,57 3,79 0,21 7,53 3,87 -0,60 10,04 5,48 0,06 8,91 91,25 5,96 58 11 12 у х 5,89 2,10 3,84 2,84 6,19 3,21 9,22 3,96 7,87 4,86 6,29 6,06 4,43 7,47 8,91 9,25 у х 1,00 0,28 1,64 0,19 2,28 0,15 2,91 0,11 3,56 0,09 4,29 0,08 4,84 0,07 5,48 0,06 у 82,16 61,02 44,56 82,52 99,19 70,24 63,23 66,48 МОДУЛЬ № 8 МОДЕЛИРОВАНИЕ ЗАДАЧ МЕХАНИКИ Цель изучения модуля. Численное моделирование (как и лабораторные эксперименты) чаще всего является инструментом познания качественных закономерностей природы. Важнейшим его этапом, когда расчеты уже завершены, является осознание результатов, представление их в максимально наглядной и удобной для восприятия форме. Забить числами экран компьютера или получить распечатку тех же чисел не означает закончить моделирование (даже если числа эти верны). Тут на помощь приходит другая замечательная особенность компьютера, дополняющая способность к быстрому счету - возможность визуализации абстракций. Представление результатов в виде графиков, диаграмм, траекторий движения динамических объектов в силу особенностей человеческого восприятия обогащает исследователя качественной информацией. Во многих рассматриваемых ниже физических задачах фундаментальную роль играет второй закон Ньютона - основа всей динамики: Задача о полете мяча в баскетбольную корзину Разработать модель, позволяющую описать полет баскетбольного мяча, брошенного игроком в баскетбольную корзину. 59 Задачу о баскетболисте можно сформулировать в следующем виде: Определить закон движения материальной точки массой m под действием силы тяжести, если известны начальные координаты точки x0 и y0 , ее начальная скорость u0 и угол бросания a0 . Центр корзины имеет координаты xk и yk . Вычислить точность броска x(tk ) xk , где t k определяется из условий: tk 0 , u y (tk ) 0 , y(tk ) yk . Найти зависимости x(t ) , y (t ) и vx (t ) , v y (t ) из решения системы дифференциальных уравнений: m( dv dvx dx dy ) 0, vx , m y mg, v y dt dt dt dt (2.5) при следующих начальных условиях: x(0) x0 , y (0) y0 , vx (0) v0 cos 0 , v y (0) v0 sin 0 (2.6) Вычислить параметр как r (tk ) xk , (2.7) где t k определить из следующих условий tk 0, v y (tk ) 0, y (tk ) yk (2.8) Из соотношений (2.5) получим vx (t ) C1, x(t ) C2 C1t , vy (t ) C3 gt , y(t ) C4 C3t gt 2 / 2 (2.9) Константы интегрирования найдем из начальных условий (2.6). Тогда решение задачи можно записать следующим образом 60 vx (t ) v0 cos 0 x(t ) x0 v0t cos 0 v y (t ) v0 sin 0 gt y (t ) y0 v0t sin 0 gt 2 / 2 (2.10) Примем для простоты, что в момент броска мяч находится в начале координат и на одном уровне с корзиной т.е. x0 y0 yk 0 . (2.11) Под дальностью L броска будем понимать расстояние, которое пролетит мяч от точки броска до пересечения с горизонтальной плоскостью, проходящей через кольцо корзины. Из соотношений (2.10) для координат, с учетом условий (2.11), дальность броска выразится следующим образом: v2 L 0 sin( 2 0 ) g (2.12) Тогда точность броска с учетом (2.7) будет равна L xk (2.13) Например, при броске мяча со штрафной линии можно принять следующие исходные данные: x0 y0 yk 0, xk 4,225 м, v0 6.44 м / c, 450 Тогда из (2.12) и (2.13) имеем L = 4,225 м; = 0 м. Задача о движении математического маятника Методические рекомендации 61 Рассмотрим задачу о движении математического маятника – грузика массы m , подвешенного в поле тяжести на невесомом стержне длины l . Будем считать также, что маятник движется в одной плоскости. Для удобства сопоставления с текстом программы мы обозначаем угол отклонения маятника от вертикального направления x . Запишем основное уравнение динамики: m dv F dt в проекциях на подвижные орты и n . Для тангенциального и нормального ускорений, получим m dv v2 F , m Fn . dt Напомним, что направление орта выбирают в сторону возрастания дуговой координаты s , а направление орта n - к центру кривизны траектории в данной точке. Начало отсчета s возьмем в положении равновесия – в точке О. Далее, имея в виду, что для малых углов x s l sin( x) lx , s lx , и что проекция силы натяжения F ( нат) 0 , запишем m s m l x m g sin( x) , или, учитывая, что для малых колебаний sin( x) x , получим x ( g / l ) x 0 - уравнение гармонического осциллятора. 62 Откуда следует, что частота 0 g l , T 2 . l g Закон движения можно записать в виде x a cos(0t 0 ) , где 0 – частота колебаний, a – амплитуда, 0 – начальная фаза. Рассмотренный пример относится к свободным колебаниям без трения, которые происходят в системе, предоставленной самой себе после того, как она была тем или иным способом выведена из состояния равновесия. Частота и период свободных колебаний без трения зависят только от свойств самого осциллятора и не зависят от начальных условий (амплитуды и начальной фазы). Пусть на маятник действуют сила трения, пропорциональная скорости грузика, Fтр Аv , и внешняя переменная сила F (t ) F cos(t ) , направленная горизонтально. (Можно представлять, что маятник помещен в большой плоский конденсатор с вертикальными пластинами, к которым приложено переменное напряжение, а на грузике находится постоянный заряд). Для угла отклонения нити от вертикали можно записать уравнение d 2x dx ml 2 mg sin( x) Al F cos( x) cos(t ) dt dt (1) Теперь мы будем исследовать движение математического маятника при больших углах отклонения, специально обращая внимание на отличие от законов малых колебаний. Подобные отклонения называют нелинейными эффектами. Для простоты расчетов положим m l 1. Результаты исследования движения маятника удобно представить в виде набора кривых на плоскости ( x, p ) , где p x – скорость изменения 63 угла. Плоскость ( x, p ) называется фазовой плоскостью, переменная p – импульсом, а кривые, определяемые параметрически законом движения как x x(t ) , p p (t ) – фазовыми траекториями. Угол отклонения маятника достаточно задавать в некоторых конечных пределах, например, принимая −π ≤ x < π. При этом следует представлять, что точки фазовой плоскости (−π, p) и (π, p) отождествлены, иначе говоря, прямые x = π и x = −π склеены друг с другом. Свободное движение математического маятника без трения описывается дифференциальным уравнением x sin( x) 0 Запишем это дифференциальное уравнение в виде системы уравнений первого порядка x p p sin( x) (2) Основная идея численного расчета чрезвычайно проста: зная значения координаты и скорости в момент времени t , можно приближенно найти их значения через малый промежуток t x(t t ) x(t ) x (t )t p(t t ) p(t ) p (t )t взяв значения величин x и p из уравнений (2). Многократно повторяя такие вычисления, мы найдем зависимости x(t ) и p (t ) . Далее приводится текст программы на языке MATLAB, которая является исходной для начала работы над задачей МАЯТНИК (оформить в виде процедуры). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 64 % Фазовая траектория математического маятника % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Задание начальных значений x1=2.2; % Начальная координата p1=0.0; % Начальный импульс t1=0.0; %Начало отсчета времени dt=0.025; % Шаг по времени axis([-pi pi -pi pi]); % Задание диапазона осей hl=line(x1,p1); % Задание дескриптора линии % Задание параметров выводимой линии % ’EraseMode’,’none’ - это режим вывода без стирания % ’LineStyle’,’:’ - вывод линии в виде пунктира % по умолчанию выводится сплошная линия % ’Color’,’r’ - задание красного цвета линии set(hl,'EraseMode','none','LineStyle',':','Color','r'); grid on; % Задание вывода координатной сетки while 1 % Бесконечный цикл % Основной алгоритм расчета pause; % Пауза, обеспечивает немедленный вывод % рисунка на экран для продолжения программы % необходимо нажать любую клавишу x2=x1+p1*dt; p2=p1-sin(x2)*dt; % Склейка граничных условий if x2> pi x2=x2-2*pi; end; if x2< -pi x2=x2+2*pi; end; 65 t2=t1+dt; % Вывод очередного участка фазовой траектории set(hl,'XData',x2,'YData',p2); % Переприсвоение начальных значений x1=x2; p1=p2; end; (Здесь шаг по времени t обозначен dt , pi ) После запуска программа откроет графическое окно и нарисует в нем одно окно с системой координат, осями и координатной сеткой, после чего перейдет в режим ожидания (команда pause). Для продолжения расчета необходимо нажать любую клавишу (не отпуская), и программа начнет вывод фазовой траектории. Поскольку используется бесконечный цикл, выполнение программы можно прервать клавишей Ctr+C. Для повторного прогона с другими параметрами необходимо ввести соответствующие изменения в текст программы и перезапустить ее. Фазовые траектории линейного осциллятора представляют собой эллипсы, задаваемые законом сохранения энергии. Задание 1. Уменьшая шаг dt, убедитесь, что фазовая траектория воспроизводится при этом без изменений в течение нескольких периодов (разумеется, с той точностью, какую допускает графическое изображение). Увеличивая шаг, достигните такой его величины, чтобы появилось явно видимое искажение формы фазовой траектории. Задание 2. Постройте зависимости x(t ) , p (t ) . %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Зависимость угла наклона от времени% 66 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Задание начальных значений x1=2.2; % Начальная координата p1=0.0; % Начальный импульс t1=0.1; % Начало отсчета времени t2=10.0; % Конец отсчета времени tm=t2-t1; % Время вывода колебаний n=50; dt=tm/n; % Шаг по времени t=t1:dt:t2; % Вектор времени grid on; % Задание вывода координатной сетки for i=1:n; x2=x1+p1*dt; p2=p1-sin(x2)*dt; t2=t1+dt; % Склейка граничных условий if x2> pi x2=x2-2*pi; end; if x2< -pi x2=x2+2*pi; end; % Переприсвоение начальных значений x1=x2;p1=p2;t1=t2; h=line(t2,x2); % Подготовка графика и присвоение % дескриптора этой линии переменной h % Задание цвета объекта (линии) с дескриптором h % через свойство ’color’ set(h,'color','g'); set(h,'XData', t2,'YData',x2); 67 xlabel( 't ' ) ylabel( ' x ' ) title('Зависимость угла отклонения от времени') end; Задание 3. Включите в программу силу трения, пропорциональную скорости. Движение в центральном поле сил Задача №1. Требуется исследовать параметры движения космического корабля вблизи планеты. Масса, начальное положение и начальная скорость корабля известны. Постановка задачи для моделирования Космический корабль массой m движется из положения с координатами x0 , y0 с начальной скоростью v0 под действием силы притяжения F , направленной к неподвижному центру. Требуется определить координаты и компоненты вектора скорости космического корабля как функции времени, а также траекторию его движения. Построение модели выполняем при следующих допущениях: 68 1) объектом исследования является космический корабль, принимаемый за материальную точку; 2) параметрами модели являются координаты ( x, y ) и скорость v корабля; 3) движение корабля происходит в одной плоскости и подчиняется основному уравнению динамики (второму закону Ньютона): m dv F; dt 4) величина (модуль) силы притяжения к центру определяется законом всемирного тяготения F где 6.672 1011 r mM , r2 H м2 - гравитационная постоянная, кг 2 - расстояние между точкой массой m и центром притяжения, имеющим массу M . Математическая постановка Найти решение следующей системы уравнений dvx m Fx dt m dv y F y dt mM cos( ), r2 mM sin( ), r2 dx vx , dt dy vy , dt (1) при начальных условиях x(0) x0 , y (0) y0 , vx (0) vx 0 , v y (0) v y 0 . Решение задачи x r Принимая во внимание, что cos( ) , sin( ) y и сокращая в (1) массу r корабля, получаем dvx dt Fx dv y F y dt Mx , r3 My , r3 dx vx , dt dy vy , dt Заменим производные их разностными аналогами: 69 vx (t t ) vx (t ) t v y (t t ) v y (t ) t x(t t ) x(t ) vx (t ) t y (t t ) y (t ) v y (t ) t Mx , r3 My , r3 (2) Из полученной системы разностных уравнений можно выразить скорости и перемещения: Mx (t )t vx (t t ) vx (t ) r 3 (t ) , My (t )t v y (t t ) v y (t ) r 3 (t ) , x(t t ) x(t ) vx (t )t , y (t t ) y (t ) v (t )t , y r (t ) x 2 (t ) y 2 (t ) (3) Анализ результатов На рис.2 показаны траектории движения космического аппарата, полученные решением системы уравнений (3) при различных начальных скоростях. При проведении расчетов принято: M 6 10 24 кг (масса Земли), космический корабль находится в начальной точке с координатами x(0) 0 м, y(0) 6,4 106 м. Начальная скорость направлена по горизонтали вправо. Шаг интегрирования t выбран равным 0,01 с. Поскольку радиус Земли R равен 6,4 106 м , ускорение g свободного падения оценивается величиной 9,81 м/с2 (приближенные значения), то для орбиты, находящейся над поверхностью планеты на высоте h 30000 м , первая и вторая космические скорости соответственно равны: v1 g ( R h) 7923 м/c и vII 2 g ( R h) 11206 м/c . 70 Рис 2. Траектории движения космического корабля при разных начальных скоростях: vx (0) 7500 м / c vx (0) 11206 м / c (г); во (a), всех vx (0) 7923 м / c вариантах (б), vx (0) 10000 м / c v y (0) 0 м / c ; пунктиром (в) и обозначена поверхность планеты. Гармонический осциллятор Тело, лежащее на гладкой горизонтальной плоскости, прикреплено к неподвижной стене пружиной. Исследовать колебательные движения тела. Масса тела и жесткость пружины известны. Примем следующие предположения: 1) объектом исследования является поступательно движущееся тело массой m , принимаемое за материальную точку; 2) движение тела подчиняется второму закону Ньютона; 71 3) тело находится под действием трех сил: силы тяжести mg , реакции поверхности N и силы упругости Fe пружины. Так как поверхность гладкая, то силой трения пренебрегаем; 4) тело совершает прямолинейные колебательные движения, так как сила тяжести mg уравновешивается силой реакции поверхности N ; 5) в уравновешенном состоянии центр масс тела находится в положении с координатами ( x p , y p ) ; 6) при малом растяжении пружины, величину возникающей в ней силы упругости можно представить линейной зависимостью (закон Гука) F c x , где x x x p - растяжение пружины (отклонение тела от положения равновесия x p ), c – жесткость пружины. Направлена сила в сторону положения равновесия. Принимая, что в некоторый момент пружину растянули на величину x0 и сообщили телу скорость v0 , требуется определить координату и скорость тела как функции времени. Математическая постановка С математической точки зрения имеем систему дифференциальных уравнений dv m dt Fe c( x x p ) dx v dt (1) с начальными условиями x(0) x0 , v(0) v0 (2) Требуется найти решение данной задачи. Решение задачи 72 Введем обозначение для производных по времени: x d dx dv v dt dt dt Тогда, принимая x p 0 , уравнение (1) можно переписать в виде: x k 2 x 0 где k 2 c m (3) — квадрат частоты свободных колебаний тела около положения равновесия. Период свободных колебаний выражается через циклическую частоту T 2 / k . Уравнение (3) называется дифференциальным уравнением свободных колебаний материальной точки. Точка совершает гармонические колебания. Решение данного однородного линейного уравнения с постоянными коэффициентами можно представить в виде: x a sin( kt ), где a — амплитуда свободных колебаний, — начальная фаза колебаний, определяемые из начальных условий. x0 a sin , v0 x a k cos . Из этих выражений найдем a и : a x02 v0 k , 2 tg k x0 v0 Решение рассматриваемой задачи можно получить численно, заменяя производные их приближенными разностными аналогами и переходя к системе разностных уравнений: v(t t ) v(t ) k 2 x(t )t , x(t t ) x(t ) v(t )t (4) 73 Анализ результатов Принимая при выполнении расчетов m 1кг , с 2500 Н / м, x0 0 м, v0 1 м / c , получаем: k 50 c 1 , T 0.04 , a 1 0.02, b 0, k x(t ) 0,02 sin( 50t ); v(t ) cos(50t ) На рис. 2 приведены численные результаты определения положения материальной точки при разных шагах интегрирования t . Видно, что с уменьшением величины t , значения, полученные при численных расчетах, стремятся к точному решению. Рис.2. Влияние величины шага по времени на точность решения. Изложенный численный способ решения задач позволяет включить в уравнение движения нелинейную зависимость силы упругости пружины от величины растяжения. На рис.3 представлены результаты численного решения рассмотренной задачи для нелинейных зависимостей силы от растяжения, приводящих к следующим системам разностных уравнений: v(t t ) v(t ) k 2 x(t ) x(t ) t x(t t ) x(t ) v(t )t (знак модуля использован для учета направления действия силы в зависимости от положения тела) при Fe cx 2 и 74 v(t t ) v(t ) k 2 x(t )3 t x(t t ) x(t ) v(t )t при Fe cx 3 . Жесткость пружины принималась равной c 2500 H / м3 . Результаты, приведенные на рис. 3, свидетельствуют о незатухающих гармонических колебаниях тела во всех рассмотренных случаях. При этом с увеличением показателя степени при величине растяжения пружины происходит увеличение амплитуды и уменьшение частоты колебаний. Рис.3 Влияние вида зависимости силы от растяжения пружины на колебания тела. Определенный интерес представляет анализ зависимости между положением тела и его скоростью, называемой фазовой траекторией. Для этого используют графическое представление процесса в системе координат «положение точки - скорость точки». Для этого представим точное решение в виде: k 2 x 2 (t ) sin 2 (kt), v 2 (t ) cos 2 (kt) Исключение времени с помощью тригонометрических формул (сложение полученных соотношений) приводит к уравнению эллипса в системе координат ( x, v) . На рис. 4 показаны найденные численно фазовые траектории для трех рассмотренных выше задач, имеющих разные зависимости сил упругости от удлинения пружин. 75 Рис.4. Фазовые траектории точки при различных законах упругости (1: Fe cx, ; 2: Fe cx 2 , 3: Fe cx3 ) Учет силы сопротивления движению Усложним задачу введением дополнительной силы сопротивления движению. Такая ситуация возможна, если тело погружено в жидкость (рис.5, а) или если в рассматриваемую схему добавлен масляный демпфер, гасящий колебания (рис.5, б). В последнем случае вязкое масло при перетекании внутри цилиндра создает дополнительное сопротивление движению. Наличие сил вязкого трения приводит к необходимости добавления новой гипотезы при постановке задачи. Подобную гипотезу можно сформулировать следующим образом: cила вязкого трения прямо пропорциональна скорости тела и направлена против направления его движения: Fc ( - коэффициент сопротивления, величина постоянная). Рис.5 Схемы конструкций с вязкими средами: жидкостью (а); масляным демпфером (б). 76 С учетом данной гипотезы соотношения (1) в математической постановке следует заменить уравнениями следующего вида: dv / dt k 2 ( x x p ) 2nv dx/dt v где k 2 c / m , 2n / m Систему разностных уравнений (4) в этом случае можно представить следующим образом: v(t t ) v(t ) [k 2 x(t ) 2nv(t )]t x(t t ) x(t ) v(t )t. На рис. 6 показаны изменения координаты и скорости тела, полученные для условий m 1кг , c 2500 H / м, x0 0 м, v0 1м / с, 10 H c / м (большое значение коэффициента сопротивления выбрано для наглядности результатов), шаг интегрирования t 105 c . Рис. 6. Координата (а) и скорость (б) центра масс тела в вязкой среде. На рис.7 представлена фазовая траектория для тела, совершающего колебания в вязкой среде. В отличие от предыдущей задачи, наличие сопротивления (диссипации механической энергии) приводит к тому, что фазовая траектория оказывается спиралью с уменьшающимся радиусом, стремящимся к нулю. Это соответствует полной остановке механической системы. 77 Рис. 7. Фазовая траектория движения точки в вязкой среде. Вынуждающие колебания Рассмотрим ситуацию, когда к телу (рис.5) приложена горизонтальная гармоническая сила, величина которой изменяется по закону F (t ) B sin qt с амплитудой B и циклической частотой q . Система уравнений (27) преобразуется в этом случае к виду: B dv k 2 ( x x p ) 2nv sin( qt ) dt m dx v dt Система разностных уравнений может быть представлена следующим образом: B v(t t ) v(t ) k 2 x(t ) 2nv(t ) sin( qt ) t , m x(t t ) x(t ) v(t )t. На рис. 8 представлена координата тела при вынужденных колебаниях как функция времени. m 1кг , C 2500 H / м, 0 При выполнении (без вычислений учета принято: вязкости), x0 0 м, vx 0 1 м / c, B 10 H , q 40, 45, 47.5, 50, 55 c 1 . 78 Рис.8. Координата тела как функции времени при вынужденных колебаниях с частотами q 40 c 1 (a), q 45 c 1 (б), q 47.5 c 1 (в) и q 50 c 1 . Рис.9. Фазовые траектории при вынужденных колебаниях тела с частотой q 40 c 1 (a), q 47.5 c 1 (б), q 50 c 1 (в) и q 55 c 1 (г). Рис.10. Координата (а) и скорость (б) как функции времени, фазовая траектория (в) движения тела при вынужденных колебаниях в вязкой среде. 79 МОДУЛЬ №9 РАБОТА С СИГНАЛАМИ Цель изучения модуля Привить студентам навыки работы с сигналами, получение модулированных сигналов, расчета электрических цепей. Методические рекомендации Большинство сигналов в цепях являются непрерывными или аналоговыми сигналами. При компьютерном моделировании и/или обработке таких сигналов используется их дискретная выборка, представляющая непрерывный сигнал как вектор, каждый элемент которого представляет собой значение сигнала в некоторый момент времени. При этом, как правило, используются равноотстоящие моменты времени, поэтому вектор времени характеризуется всего тремя параметрами - временем начала, временем конца и шагом по времени. Если же сигнал периодический, а, как правило, изучаются именно такие сигналы, то сигнал представляется в виде вектора значений в моменты времени, распределенные в течение одного-двух периодов. Задание 1. Создать вектор-столбец со значениями от 0 до 50 с шагом 0,2. Используя его в качестве аргумента записать выражения для вычисления значений следующих сигналов: 1) f (t ) A при 0 t T – постоянная функция; 2) f (t ) A t при 0 t T – линейная функция; 3) f (t ) A sin( 2t / ) при 0 t T – синусоидальный сигнал; 0, если t A, если t 4) f (t ) при 0 t T - ступенька. 80 Изобразить перечисленные выше сигналы на одном или двух рисунках, выделяя каждый из сигналов другим цветом или в отдельном окне. %%%%%%%%%%%%%%%%%%%%%%%%%%%% % Примерная программа вывода двух сигналов % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % Задание начальных значений >>a1=1.5; % Амплитуда для синуса >>a2=0.15; % Амплитуда для прямой >>tau=10.0; % Характерное время процесса >>t=0:0.2:50; % Вектор времени >>y1=a1.*sin(2.*pi.*t./tau); % Первый сигнал >>y2=a2/tau.*t; % Второй сигнал >>plot(t,y1,t,y2); % Отрисовка двух сигналов >>axis([0 50 -2 2]) % Задание масштабов по осям >>grid on % Нанесение сетки Расчет цепей В качестве простейшей цепи для начала будем рассматривать последовательно соединенные источник э.д.с. переменного напряжения E(t) (сигнала), постоянного активного сопротивления R и конденсатора емкостью C. Эту схему описывает следующая система уравнений: 81 dQ dt i E (t ) Ur Uc Ur I R Q Uc C Для расчета временной зависимости падения напряжения Ur и Uc можно воспользоваться простейшим алгоритмом, реализованным в следующем примере. %%%%%%%%%%%%%%%%%%%%%%%%%%% % Примерная программа расчета RC-цепочки % %%%%%%%%%%%%%%%%%%%%%%%%%%% % Задание параметров цепи >>C=0.1; % Емкость конденсатора в фарадах >>R=1; % Сопротивление в омах >>tau=R*C; % Период сигнала % Задание начальных значений >>t0=0; Q0=0; % Задаем начальные значения времени t, тока I и заряда Q >>t(1)=t0; I(1)=0; Q(1)=Q0; %Задаем начальные значения напряжений на генераторе, % конденсаторе и активном сопротивлении >> E(1)=0; Uc(1)=0, Ur(1)=0; >>dt=0.02; t=0:dt:4; % Задаем вектор времени >>A=1.5 % Амплитуда сигнала >>for k=2:length(t) E(k)=A.*sin(2.*pi.*k.*dt./tau) Q(k)=Q(k-1)+I(k-1)*dt; % расчет заряда как интеграла от силы тока Uc(k)=Q(k)/C; Ur(k)=E(k)-Uc(k); 82 I(k)=Ur(k)/R; end; >>plot (t,E,t,Ur,t,Uc) ВОЛНЫ Речь может идти о самых разных волнах – волнах на поверхности воды, звуке, радиоволнах и т.п. Если амплитуды волн не слишком велики, то для них справедлив принцип суперпозиции, что мы и будем предполагать. Функция y ( x, t ) a cos( kx wt ) задает бегущую волну с амплитудой a , волновым числом k и угловой частотой w . Длина волны 2 / k , а ее период T 2 / w . Скорость волны (скорость максимума, определяемого условием kx wt 0 ) равна v x / t w / k . Суперпозиция двух волн y( x, t ) a1 cos(k1x w1t ) a2 cos(k2 x w2t ) в любой момент представляет картину биений в зависимости от x . При a2 a1 y ( x, t ) a( x, t ) cos( kx wt ) , где a( x, t ) 2a1 cos(dk x dw t ) , Функция a( x, t ) определяет модуляцию суммарной волны; она перемещается со скоростью u dw / dk , называемой групповой скоростью. Биения Приведенная ниже программа изображает кривую y(t ) a1 cos( w1t ) a2 cos( w2t ) . 83 >>a1=1.0; % Амплитуды гармонических >>a2=1.0; % колебаний >>w1=1.0; % Частоты гармонических >>w2=1.2; % колебаний >>t0=0; % Начальный момент времени >>tm=20; % Конечный момент времени >>N=600; %Число точек вывода/расчета >>T=tm-t0; % Время вывода биений >>dt=T/N; % Шаг по времени >>t=t0:dt:tm; % Вектор времени >>y=a1*cos(w1*t)+a2*cos(w2*t); % Функция биений >>plot(t,y); % Вывод графика %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% После вывода результата расчета на экран можно изменить масштаб осей с повторным выводом соответствующего участка кривой. Так, в приведенном выше примере переменная t на графике будет изменяться от 0 до 20. Если мы хотим рассмотреть подробности графика в другом диапазоне (например, по t от 1 до 2), то необходимо ввести в командном окне команду axis([xmin xmax ymin ymax]), где xmin xmax - диапазон вывода по оси x, а ymin ymax - диапазон вывода по оси y. В результате выполнения этого оператора график будет перестроен в указанном масштабе. Программа Wavepak изображает сумму волн, причем изображение на экране сменяется с определенным шагом по времени, т.е. осуществляется анимация изображения. Прежде чем подробно анализировать приведенную далее программу вывода бегущей волны, сделаем несколько общих замечаний относительно графики в системе MATLAB. 84 MATLAB предоставляет различные способы создания движущихся графиков или анимации. Использование свойства графических объектов ’EraseMode’ (режим стирания) удобно для длинных последовательностей простых графиков, у которых изменение от кадра к кадру минимально. Рассмотрим это на примере динамического вывода волны (программа WAVEPAK). Процедуру расчета оформим в виде m-файла. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Программа WAVEPAK предназначенная для вывода % % волнового пакета с анимацией изображения % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t=0:0.1:100; % Задание вектора времени x=0:0.3:30; % Задание вектора координат k=1.3; w=0.9; n=length(t); % Вычисление формы волны для момента времени t(1) % во всех точках x y=cos(k*x-w*t(1))+cos(x-t(1)); h=line(x,y); % Подготовка графика волны и присвоение % дескриптора этой линии переменной h set(h,’color’,’g’); % Задание цвета объекта (линии) с дескриптором h % через свойство ’color’ axis([0 30 -3 3]); % Выбор осей координат и их масштаб axis manual; % Сохранение дескриптора линии волны и выбор значения % свойства ’EraseMode’ равным ’xor’. Это сообщает % графической системе MATLAB, чтобы она не % перерисовывала весь график (включая оси, цвет фона % и те точки, которые не изменились), а перерисовала % только те точки, которые изменили свои координаты 85 set(h,’EraseMode’,’xor’); pause; % Пауза перед запуском движения волны % Она гарантирует обязательный вывод на экран % накопленного в буфере графики. Дальнейшее % продвижение осуществляется нажатием на любую клавишу. % Можно задать pause(0), тогда нажимать клавишу не надо % Основной цикл вычисления и вывода движущейся волны for i=2:n; % Вычисление формы волны для момента времени t(i) y=cos(k*x-w*t(i))+cos(x-t(i)); % Обновление координат линии, изображающей амплитуду % волны с помощью обновления у объекта (линии) % с дескриптором h свойства ’XData’ (замена % x-координат на новые значения) и аналогичные % действия с y-координатами. Это стандартный % способ обновления координат точек для анимации. set(h,’XData’, x,’YData’,y); end; МОДУЛЬ №10 СЛУЧАЙНЫЕ БЛУЖДАНИЯ ЧАСТИЦ И ДИФФУЗИЯ Цель изучения модуля Познакомить студентов с моделированием случайных процессов. Научить строить анимационную картину процессов. Методические рекомендации 86 Хаотическое движение броуновских частиц в жидкости или газе представляет собой пример случайных блужданий. Задача о случайных блужданиях является одной из широко исследуемых задач теории вероятностей и находит множество других приложений. Закономерности случайных блужданий можно понять, используя простую модель, которая легко реализуется с помощью компьютера. N частиц (которые в начальный момент для удобства наблюдений распределены на оси y ) смещаются последовательными шагами x вдоль оси x . Каждый шаг каждой частицы выбирается случайным и независимым от других шагов. Однако распределение вероятностей при выборе любого шага одно и то же. Примем, что смещения в противоположные стороны равновероятны. Это значит, что среднее значение смещения x 0 (1) Смысл этого равенства в том, что среднее арифметическое смещений x очень большого числа частиц приближается к нулю по мере роста этого числа. Так понимается усреднение. Кроме того, мы будем использовать «наблюдаемые средние» – средние арифметические для заданного числа частиц (как правило, очень большого). «Наблюдаемое среднее» смещения частицы x н мало, но не равно нулю. После каждого шага частицы будут «расползаться» от оси x. Обозначим x(k ) координату некоторой частицы через k шагов. Тогда x(k 1) x(k ) x (2) Усреднив это равенство (вновь по множеству частиц), получаем x(k 1) x(k ) , т.е. среднее значение x(k ) не изменяется от шага к шагу и, следовательно, равно x(0) 0 . Наблюдаемое значение x н для большого числа частиц x(k ) н 1 N x j (k ) N j 1 (3) окажется близким к нулю (здесь x j -координата j -й частицы). 87 Ширину полосы, по которой распределяются частицы после k-го шага, удобно характеризовать величиной x 2 (k ) . Чтобы выяснить зависимость этой величины от числа шагов, возведем равенство (2) в квадрат и усредним: x 2 (k 1) x 2 (k ) 2 x(k )x x 2 (4) Ввиду независимости x(k ) и x имеем x(k )x x(k ) x 0 . Обозначим x 2 a 2 . Из (4) следует x 2 (k 1) x 2 (k ) a 2 , т.е. средний квадрат координаты растет с каждым шагом на величину a 2 . Значит, x 2 (k ) ka2 (5) Наблюдаемое значение x2 н 1 N 2 xj N j 1 (6) изменяется приблизительно пропорционально числу шагов. Распределение частиц характеризуется функцией в занятой ими полосе более детально распределения f (x ) , определяющей концентрацию частиц; dW f ( x)dx – вероятность того, что координата j -й частицы после k -го шага окажется в интервале x x j x dx . Теория случайных блужданий дает для достаточно большого числа шагов k распределение Гаусса f ( x) 1 2ka2 exp( x2 ) 2ka2 (7) Наблюдаемая функция распределения получается путем разбиения оси x на конечные интервалы и подсчета числа частиц в каждом из них. Результат подсчета представляется графически ступенчатой кривой – гистограммой. 88 Рис. Распределение частиц при диффузии (гистограмма и теоретическая кривая). Программа, изображающая случайные блуждания В приводимой ниже программе смещения задаются датчиком случайных чисел. x dh * (2.0 * rand 1.0) , В качестве смещения задается величина где rand – квазислучайное число, вырабатываемое компьютером, dh – параметр случайного блуждания, масштаб «шага». При каждом обращении к процедуре rand(m,n) компьютер выдает матрицу m x n случайных чисел, лежащих в интервале от 0 до 1, причем для нашей задачи (и для множества других) выбор этих чисел неотличим от случайного, а распределение этих чисел в указанном интервале равномерное. Легко видеть, что распределение величин x окажется равномерным в интервале dh x dh . Получаемые нами смещения на первых одном – двух шагах совсем не похожи на броуновское движение, так как функция распределения еще далека от гауссовой, однако спустя три – пять шагов функция распределения начинает отлично имитировать гауссову и смещения становятся практически такими же, как блуждания броуновских частиц. Так и должно получиться согласно теории вероятностей. Предлагаемые ниже задания имеют главной целью иллюстрацию описанных закономерностей. Задание 1. Получите на экране картину движения точек, моделирующих случайные блуждания в соответствие с описанной выше функцией распределения частиц по координате x. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 89 % Стартовая программа для демонстрации случайных блужданий diffus.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% n =500; % Число частиц dh =.02; % Параметр случайного распределения % Задание вектор-столбцов координат точек y =1:n; y=y'; x =zeros(size(y)); % zeros – матрица из нулей h=plot(x,y,'k.'); % Вывод начального положения точек axis([-2 2 0 n+1 ]); % Задание осей % Определение режима перерисовки и размера точек set(h,'EraseMode','background','MarkerSize', 18); pause % Пауза для вывода графика на экран i=0; % Начальное значение for i=1,1000; % Начало цикла i=i+1; x=x+dh*(2*rand(n,1)-1); % Случайные смещения x-координаты % каждой точки % Смена координат точек на рисунке set(h,'XData',x,'YData',y,'Color','k') end; % Конец цикла %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Для того чтобы управлять скоростью перерисовки графиков, существует другой способ создания анимации. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Во-первых, задаем число кадров nframes=50; 90 % Во-вторых, установим первый график как и ранее, за исключением использования EraseMode. n =500; % Число частиц dh =.02; % Параметр случайного распределения % Задание вектор-столбцов координат точек y =1:n; y=y'; x =zeros(size(y)); % zeros – матрица из нулей h=plot(x,y,'k.'); % Вывод начального положения точек axis([-2 2 0 n+1 ]); % Задание осей % Определение режима перерисовки и размера точек set(h, 'MarkerSize', 18); % Теперь выделим достаточно памяти для сохранения нашего фильма M=moviein(nframes); % Сгенерируем фильм и, используя getframe, сохраним каждый кадр. for k=1:nframes x=x+dh*(2*rand(n,1)-1); % Случайные смещения x-координаты set(h,'XData',x,'YData',y,'Color','k') M(:,k)=getframe; end; % Теперь проиграем фильм 30 раз movie(30) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Задание 2. Выведите на экран гистограмму распределения частиц по координате x. При построении гистограммы необходимо задавать определенное число бинов, определяя тем самым, сколько данных попадет в каждый бин, и графически изображать это в виде столбиковой или ступенчатой диаграммы. В MATLAB существует функция hist, которая при обращении к ней в виде hist(y) вычисляет и рисует гистограмму с 10 бинами, равномерно 91 распределенными между ymax и ymin. Кроме того, функция hist(y) может иметь второй аргумент. Если этот аргумент - целое число, то это число определяет число бинов. Если второй аргумент - вектор, то этот вектор определяет центры используемых бинов. В этом случае центры бинов должны быть равноотстоящими, а координаты этих центров должны быть расположены в возрастающем порядке. При нарушении любого из этих условий результат становится непредсказуемым. Можно блокировать вывод на экран гистограммы, присвоив результат выполнения функции hist(y) двум выходным аргументам. При обращении вида [n,x]=hist(y) или [n,x]=hist(y,num_of_bins) или [n,x] = hist(y,bin_centers) вычисляются два вектора. Вектор n содержит число попаданий величины y в каждый из бинов, центры которых находятся в векторе x. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Пример постороения гистограммы % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% n =500; % Число частиц y=randn(n,1); % Генерация случайных чисел dx=0.5; % Ширина бинов x=-2.5:dx:2.5; % Центры бинов [ny,xh]=hist(y,x); % Вычисление параметров гистограммы xh=xh-dx/2; % Сдвиг координаты по оси x на половину ширины бина [xl,yl]=stairs(xh,ny); hl=line(xl,yl); % Создание дескриптора ломаной линии set(hl,'color','g'); 92