Содержание
- 2. MATLAB обладает большим набором встроенных функций реализующих различные численные методы: нахождение корней уравнений, интегрирование, интерполирование, решение
- 3. Решение произвольных уравнений Функция x=fzero('myf', xo) позволяет вычислять приближенное значение корня x уравнения myf(x)=0, (1) с
- 4. Перед нахождением корней полезно строить график функции входящей в левую часть уравнения, используя plot, но все
- 5. Пример 1 Найти корни уравнения sin x-x2 cos x=0 на [-5,5]. Решение
- 6. Аналогично находятся еще два корня, около -2 и 5. Увидеть, большее число значащих цифр приближенного решения
- 7. Замечание Важной особенностью fzero является то, что она вычисляет только те корни, в которых функция меняет
- 8. Например, корень уравнения х2=0 функцией fzero найти не удается. Для нахождения корня х на интервале [a,
- 9. Пример 2 > fzero('sin', [2,4]) ans = 3.1415…
- 10. Замечание 1. Если функция имеет несколько нулей, то выдается ближайший к 0; 2. На границе интервал
- 11. Минимизация функций Для поиска локального минимума функции myf одной переменной на отрезке [a, b] используют x=
- 12. Замечание 1) Для нахождения локального максимума нет специальной функции и поэтому следует искать минимум функции с
- 13. Для нахождения локального минимума функции myfm многих переменных вблизи точки (х1,…,хn) используют M=fminsearch('myfm',[x1,x2,…,xn]); [M, f]= fminsearch('myfm',[x1,x2,…,xn]).
- 14. Метод Нельдера-Мида Для нахождение минимума используют симплекс метод Нельдера-Мида. Он заключается в следующем: берутся 3 вершины
- 15. Замечание Для нахождения начального значения (x1,x2,…,xn), нужно получить представление о поведении функции, например, построив линии уровня
- 16. Задание дополнительных параметров Функции fzero, fminbnd и fminsearch позволяют задать дополнительный параметр options, контролирующий вычислительный процесс:
- 17. Таблица 1 Значения дополнительных параметров
- 19. Замечание Ограничивать количество вызовов функции и число итераций имеет смысл, если есть опасение, что получить решение
- 20. Пример 3 Найти минимум функции f(x, y)= sin(πx)*sin(πy) вблизи точки [1.4, 0.6] с точностью по функции
- 21. Решение В итоге, кроме результата, выведется таблица каждая строка, которой соответствует одной итерации. В ней будет
- 22. Интегрирование функций Методы интегрирования Для вычисления определенного интеграла используются следующие функции:
- 23. 1. quad('fint',a,b, Точность) Алгоритм основан на квадратурной формуле Симпсона с автоматическим подбором шага интегрирования для достижения
- 24. 2. quad8('fint',a,b, Точность) Используется для достаточно гладких функции и алгоритм основан на более точных квадратурных формулах
- 25. quadl('fint',a,b, Точность) Применяется для функций с интегрируемыми особенностями (например: в нуле). Алгоритм основан на квадратурных формулах
- 26. Пример 4 Вычислить по quad8 с точностью 10-12. Решение
- 27. Вычисление интегралов зависящих от параметров Пример 5 Вычислить интеграл при значениях параметров р1=0.6, р2=0.7 по квадратурным
- 28. Решение
- 29. Интегралы с переменным верхним пределом Пример 6 Вычислить интеграл с точностью 10-6.
- 30. Решение
- 31. Численное решение дифференциальных уравнений Задача Коши для дифференциального уравнения произвольного порядка имеет вид:
- 32. Схема решения в MATLAB состоит из следующих этапов: 1. Приведение дифференциального уравнения к системе дифференциального уравнений
- 33. Пример 7 Задача о колебаниях под воздействием внешней силы в среде, оказывающей сопротивление колебаниям: y''+2y'+10y=sin t
- 34. Тогда система дифференциальных уравнений с начальными условиями принимает вид: (1)
- 35. Второй этап состоит в написании файл-функции имеющей два входных аргумента: переменную t и вектор, размер которого
- 36. Третий шаг. Этот шаг состоит в решении задачи при помощи решателя или солвера (об их видах
- 37. Входными аргументами солверов являются: Имя файл-функции в апострофах; 2. Вектор-строка с начальным и конечным значением времени
- 38. Выходных аргументов два: Вектор Т содержащий значение времени; 2. Матрица значений Y неизвестных функций в соответствующие
- 39. Итак, файл программа для 0≤ t≤ 15 имеет вид. Y0= [1; 0]; [T, Y]=ode45('oscil', [0 15],
- 40. Рис.2 Решение дифференциального уравнения
- 41. Замечание Здесь использовался солвер ode45, который применяет метод Рунге-Кутта четвертого порядка. При применении солвера очень важно
- 42. Жесткие дифференциальные системы Решение уравнений Лотка-Вольтерра Во многих приложениях встречаются так называемые «жесткие» системы дифференциальных уравнений.
- 43. Например , причем, λ1, λ2>0 и >>1. Число s называют коэффициентом жесткости системы. Решение имеет вид:
- 44. Отметим, что жесткость – это качество дифференциальной системы, а не разностного метода (обычно нелинейные системы). В
- 45. Число хищников и жертв в течение времени t изменяется по закону (2) где P – увеличение
- 46. Решением системы (2) является замкнутая кривая. Возьмем для примера P=3, R=2, p=r=1 y1(0)=3 – в начальный
- 47. Рис.3 Решения солверами ode45 и ode23s
- 48. Вычисление, по умолчанию, в ode45 и ode23s происходит при одной точности, а приближенные решения сильно отличаются
- 49. Управление процессом решения Для эффективного решения дифференциальных уравнений необходимо выбрать подходящий солвер в зависимости от свойств
- 50. Стратегия применения солверов MATLAB (см. справку по MATLAB). ode45 – дает хорошие результаты и основан на
- 51. ode23 – используется в задачах содержащих небольшую жесткость, когда требуется получить решение с невысокой степенью точности.
- 52. Если все попытки применения этих солверов не приводят к успеху, то возможно решаемая система является жесткой
- 53. Все солверы пытаются найти решение с относительной точностью 10-3. Для задания другой точности используются дополнительный параметр
- 54. Замечание При заданных по умолчанию значениях, в частности при относительной погрешности 10-3, не всегда возможно получение
- 55. Точное решение нашей системы будет Если воспользуемся ode45, то для 10-3 получим Рис. 4 Решение солвером
- 56. Применение других солверов не улучшает ситуацию. Выход – уменьшение относительной погрешности. options=odeset('RelTol', 1.0e-04) [T, Y] =ode45
- 57. Замечание Существует отдельный пакет для уравнений в частных производных Partial Diffential Equation ToolBOX.
- 58. Решение граничных задач Рассмотрим граничную задачу общего вида для обыкновенного дифференциального уравнения второго порядка: где -
- 59. Решение задачи состоит из следующих этапов: 1. Преобразование дифференциального уравнения второго порядка к системе двух уравнений
- 60. Первые два этапа выполняются практически так же, как и при решении задачи Коши. Для выполнения 3-го
- 61. Файл-функция описывающая граничные условия должна зависеть от двух аргументов – векторов ya, yb и иметь структуру:
- 62. Выбор начального приближения может оказать влияние на решение солвером bvp4c. MATLAB находит приближенное решение граничных задач
- 63. Пример 8 Пусть [a, b]= [0, 2*pi] и начальное приближение y1=1, y2=0, тогда initsol=bvpinit ([0: pi/10:2*pi],
- 64. Замечание Заданная сетка может быть изменена солвером в процессе решения, для обеспечения требуемой точности.
- 65. Следующим этапом мы должны вызвать солвер: sol=bvp4c('Функция правой части', 'bound', initsol); где структура sol имеет поля
- 67. Скачать презентацию