Основы математического программирования
2.98M

Презентация1

1. Основы математического программирования

ОСНОВЫ МАТЕМАТИЧЕСКОГО
ПРОГРАММИРОВАНИЯ

2.

Введение в математическое программирование
Математическое программирование – это область, в которой математические модели и алгоритмы
применяются для оптимизации, принятия решений и решения различных прикладных задач.
Алгоритмизация заключается в представлении математических идей в виде алгоритмов, которые легко
могут быть реализованы в программном коде. Это позволяет получать численные решения сложных
математических уравнений и систем.
Несмотря на то, что PHP обычно ассоциируется с веб-разработкой, благодаря своей простоте и
широкому распространению он отлично подходит для прототипирования и образовательных
экспериментов алгоритмических решений.

3.

Основные математические функции в PHP
PHP функция pi()
PHP функции min() и max()
Функция pi() возвращает значение ПИ
Функции min() и max() могут использоваться для поиска
наименьшего или наибольшего значения в списке
аргументов
PHP функция sqrt()
PHP функция abs()
Функция sqrt() возвращает квадратный корень
числа
Функция abs() функция возвращает абсолютное
(положительное) значение числа

4.

Основные математические функции в PHP
PHP функция round()
Функция round() округляет число с плавающей
запятой до ближайшего целого числа:
Random (случайные) числа
Функция rand() генерирует случайное число

5.

abs — Возвращает абсолютную величину (модуль числа)
acos — Вычисляет арккосинус
acosh — Вычисляет гиперболический арккосинус
asin — Вычисляет арксинус
asinh — Вычисляет гиперболический арксинус
atan — Вычисляет арктангенс
atan2 — Вычисляет арктангенс двух переменных
atanh — Вычисляет гиперболический арктангенс
base_convert — Преобразовывает числа между произвольными системами счисления
bindec — Преобразовывает двоичное число в десятичное
ceil — Округляет дробное число в бо́льшую сторону
cos — Вычисляет косинус
cosh — Вычисляет гиперболический косинус
decbin — Переводит число из десятичной системы счисления в двоичную
dechex — Переводит число из десятичной системы счисления в шестнадцатеричную
decoct — Переводит число из десятичной системы счисления в восьмеричную
deg2rad — Преобразовывает значение из градусов в радианы
exp — Вычисляет степень числа e
expm1 — Возвращает результат exp($num) - 1, вычисленный так, чтобы он был точным, даже если значение
числа близко к нулю.
fdiv — Делит числа по правилам стандарта IEEE 754
floor — Округляет дробное число в меньшую сторону
fmod — Возвращает дробный остаток от деления по модулю
fpow — Возводит число в степень по правилам стандарта IEEE 754

6.

floor — Округляет дробное число в меньшую сторону
fmod — Возвращает дробный остаток от деления по модулю
fpow — Возводит число в степень по правилам стандарта IEEE 754
hexdec — Переводит число из шестнадцатеричной системы счисления в десятичную
hypot — Рассчитывает длину гипотенузы прямоугольного треугольника
intdiv — Делит два числа без остатка
is_finite — Проверяет, конечно ли число с плавающей точкой
is_infinite — Проверяет, бесконечно ли число с плавающей точкой
is_nan — Проверяет, представляет ли собой число с плавающей точкой нечисло
log — Вычисляет натуральный логарифм
log10 — Вычисляет десятичный логарифм
log1p — Возвращает результат log(1 + number), вычисленный так, чтобы он был точным, даже если значение
числа близко к нулю.
max — Возвращает наибольшее значение
min — Находит наименьшее значение
octdec — Переводит число из восьмеричной системы счисления в десятичную
pi — Возвращает число Пи
pow — Возводит число в степень
rad2deg — Преобразовывает значение из радианов в градусы
round — Округляет число с плавающей точкой
sin — Вычисляет синус
sinh — Вычисляет гиперболический синус
sqrt — Извлекает квадратный корень
tan — Вычисляет тангенс
tanh — Вычисляет гиперболический тангенс

7.

Введение в математическое программирование
Метод Гаусса: Прямой и обратный ход для приведения системы к треугольному виду.
Обратная матрица: Если матрица коэффициентов невырождена, решение можно получить
умножением обратной матрицы на вектор свободных членов.
LU-разложение: Разложение матрицы на верхнюю и нижнюю треугольную, что упрощает вычисления,
особенно для больших систем.
Решение систем линейных уравнений лежит в основе множества инженерных, экономических и
научных задач – от моделирования физических процессов до оценки финансовых рисков.

8.

Пример кода – метод Гаусса:

9.

Пример кода – метод Гаусса:

10.

Численное дифференцирование и интегрирование
Численное дифференцирование:
•Конечные разности: Используются схемы
с разностями вперёд, назад и
центральными разностями.
•Преимущества центральных разностей –
повышенная точность при симметричных
шагах.
Численное интегрирование:
•Метод трапеций: Интегрирование
функции посредством приближения
области под графиком трапециями;
•Правило Симпсона: Позволяет учитывать
кривизну функции, используя
параболическое приближение.
Практический пример интеграции: Метод
трапеций часто используется благодаря
своей простоте и сравнительной точности,
если число отрезков достаточно велико.

11.

Методы отыскания корней уравнений
Основные методы:
•Метод бисекции: Находится корень
уравнения методом деления интервала
пополам; требует, чтобы функция имела
разные знаки на концах интервала.
•Метод Ньютона (касательных):
Использует производные функции для
быстрого приближения к корню; требует
хорошей начальной точки и вычисления
производной.
Преимущества и ограничения: Метод
бисекции гарантирует сходимость (при
условии меня знаков) – хотя скорость
сходимости может быть сравнительно
медленной, в то время как метод Ньютона
обладает квадратичной скоростью
сходимости, но может расходиться при
неудачном выборе начальных условий.

12.

Аппроксимация функций
Суть аппроксимации: Аппроксимация
функций – это процесс построения
приближения функции по набору
известных точек. Данный метод
применяется, когда точное аналитическое
выражение недоступно или слишком
сложное.
Подходы к аппроксимации:
•Линейная интерполяция: Прямая линия
между двумя соседними точками.
•Полиномиальная интерполяция:
Использование полинома степени,
зависящей от числа точек, для
прохождения через них (например,
формула Лагранжа).
•Методы регрессии: Используются, когда
данные зашумлены; цель –
минимизировать разницу между моделью
и данными (метод наименьших
квадратов).
Практическое применение: В инженерии и науке
аппроксимация позволяет предсказывать поведение
сложных систем и проводить оценку неизвестных значений
с использованием экспериментальных данных.

13.

Решение задач оптимизации
Формулировка задачи оптимизации:
Поиск минимума (или максимума)
заданной функции. Задача оптимизации
широко применяется в экономике,
инженерии и науке.
Методы оптимизации:
•Перебор (grid search): Полный перебор
значений с дискретным шагом.
•Градиентный спуск: Итеративный метод,
использующий информацию о градиенте
для быстрого поиска минимума.
•Эволюционные алгоритмы: Методы,
имитирующие естественный отбор для
поиска глобального минимума.
Практическая часть: На данном слайде
реализация простого перебора позволяет
студентам понять, как, изменяя шаг
дискретизации, можно находить
оптимальное значение, а затем перейти к
более «умным» методам, таким как
градиентный спуск.
Пример кода – перебор для поиска минимума функции

14.

Вычисление определителя матрицы
Что такое определитель: Определитель –
числовая характеристика квадратной
матрицы, играющая важную роль в
решении линейных систем, оценке
невырожденности матриц и вычислении
обратных матриц.
Методы вычисления:
•Рекурсивный алгоритм разложения по
минору: Подходит для небольших матриц.
•LU-разложение: Эффективен при
вычислении определителя для больших
матриц, особенно при наличии
специализированных библиотек.
Особенности рекурсивного метода:
Простота реализации, однако
вычислительная сложность растёт
экспоненциально с увеличением порядка
матрицы.s
Пример кода – рекурсивное вычисление определителя

15.

Методы нахождения экстремума функций
Классификация экстремумов: Локальный
экстремум (минимум или максимум в
малой окрестности) и глобальный
экстремум (на всём множестве
допустимых значений).
Численные методы:
•Градиентный спуск: Итеративный
алгоритм, при котором новое
приближение находится за счёт
вычитания произведения шага (learning
rate) и градиента от текущего значения.
•Метод золотого сечения: Применяется
для одномерных задач и основан на
поиске минимума с уменьшением
интервала по принципу золотого сечения.
Практическое применение: Обсудите, что
градиентный спуск может найти
локальный минимум, поэтому важно
выбирать начальную точку. При этом
метод золотого сечения полезен, если
функция гладкая и unimodal (имеет
единственный экстремум на промежутке).
Пример кода – градиентный спуск

16.

Решение обыкновенных дифференциальных уравнений (ОДУ)
Общие моменты:
•Обыкновенные дифференциальные
уравнения (ОДУ) описывают
динамические системы, например, рост
популяции, физические процессы,
химические реакции.
•Аналитическое решение ОДУ может быть
затруднено или невозможно, поэтому
применяются численные методы.
Численные методы:
•Метод Эйлера: Простейший метод, где
следующее значение функции
вычисляется по формуле: y₍ₙ₊₁₎ = yₙ + h
* f(xₙ, yₙ)
•Метод Рунге–Кутты: Более точный метод,
который учитывает изменение
производной внутри интервала
интегрирования (чаще используется 4-го
порядка).
Применение на практике: Моделирование физических
процессов (например, бросок мяча, рост системы) часто
начинается с метода Эйлера, а затем переходит к Рунге–
Кутты для повышения точности.
Пример кода – метод Эйлера

17.

Сравнение точности и скорости вычислений
Ключевые аспекты сравнения:
•Точность расчётов: – Какую погрешность в решении дает численный метод в сравнении с аналитическим
решением? – Какие алгоритмы устойчивы к накоплению ошибок?
•Скорость вычислений: – Насколько быстро алгоритм сходится? – Какие методы требуют меньше
вычислительных ресурсов?
Параллельное обсуждение: В таблице приведены основные алгоритмы (метод бисекции, метод Ньютона, метод
Эйлера, метод Рунге–Кутты) с примерами сравнений по точности и скорости. Объясните, что выбор
конкретного метода зависит от конкретной задачи и допустимой погрешности.

18.

Примеры комплексных задач с использованием PHP
Объединение алгоритмов: На данном
этапе лекции предлагаем объединить
несколько ранее рассмотренных методов
в одном проекте. Это может быть CLIскрипт или веб-приложение, где
последовательно решаются:
•Система линейных уравнений (метод
Гаусса);
•Нахождение корня нелинейного
уравнения (метод бисекции);
•Численное интегрирование (метод
трапеций).

19.

20.

Пример кода – комплексный пример

21.

Выводы и заключение
Основные итоги лекции:
•Различные численные методы обладают своими плюсами и минусами: сравнение точности,
устойчивости и вычислительной сложности.
•Реализация алгоритмов численных методов в PHP позволяет на практике познакомиться с
алгоритмизацией и прототипированием, даже если для промышленных решений выбирают
специализированные инструменты.
•Понимание базовых принципов алгоритмов – фундамент для дальнейшего развития в сфере
программирования и инженерного моделирования.
English     Русский Rules