Методы вычислений
Алгоритм Евклида
Решение уравнений
Оптимизация
Восстановление зависимостей
Статистика
Моделирование
1
© М.Е. Никитин, 2015-2016
3
Вычисление НОД
НОД = наибольший общий делитель двух натуральных чисел – это наибольшее число, на которое оба исходных числа делятся без остатка.
Перебор:
Записать в переменную k минимальное из двух чисел.
Если a и b без остатка делятся на k, то стоп.
Уменьшить k на 1.
Перейти к шагу 2.
это цикл с условием!
4
Вычисление НОД (перебор)
k := a; { или k := b; }
while (a mod k <> 0) or
(b mod k <> 0) do
k := k - 1;
writeln ('НОД(', a, ',', b, ')=', k);
много операций для больших чисел
ИЛИ
5
Алгоритм Евклида
Евклид
(365-300 до. н. э.)
НОД(a,b)= НОД(a-b, b)
= НОД(a, b-a)
Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД.
НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)
Пример:
= НОД (7, 7) = 7
6
Реализация алгоритма Евклида
пока a ≠ b делай
если a > b, то
a := a - b
иначе b := b - a;
НОД (1998, 2) = НОД (1996, 2) = … = 2
много шагов при большой разнице чисел:
7
Модифицированный алгоритм Евклида
НОД(a,b)= НОД(a mod b, b)
= НОД(a, b mod a)
Заменяем большее из двух чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю. Тогда большее — это НОД.
НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7
Пример:
Еще один вариант:
НОД(2·a,2·b)= 2·НОД(a, b)
НОД(2·a,b)= НОД(a, b) // при нечетном b
8
Задания
«4»: Составить программу для вычисления НОД и заполнить таблицу:
«5»: То же самое, но сравнить для всех пар число шагов обычного и модифицированного алгоритмов (добавить в таблицу еще две строчки).
N | 64168 | 358853 | 6365133 | 17905514 | 549868978 |
M | 82678 | 691042 | 11494962 | 23108855 | 298294835 |
НОД(N,M) |
10
Методы решения уравнений
f (x) = 0
Точные (аналитические)
Приближенные
графические
b – a <
11
Численные методы
Применение: используются тогда, когда точное (аналитическое) решение неизвестно или очень трудоемко.
дают хотя бы какое-то решение
во многих случаях можно оценить ошибку и найти решение с заданной точностью
решение всегда приближенное, неточное
12
Метод прямого перебора
Задача: найти решение уравнения f (x) = 0 на интервале [a, b] с заданной точностью (чтобы найденное решение отличалось от истинного не более, чем на ).
Алгоритм:
14
Метод прямого перебора
eps := 0.001; { точность решения }
x := a;
ответ := x;
пока f(x)*f(x+eps) > 0 делай
x := x + eps; { к следующему интервалу}
конец
eps := 0.001; { точность решения }
x := a;
x := x + eps/2;
while f(x)*f(x+eps) > 0 do begin
x := x + eps; { к следующему интервалу}
end;
15
Метод прямого перебора
program qq;
var ...: real;
begin
{ основная программа }
end.
function f(x: real): real;
begin
f := -x;
end;
16
Задания
«4»: Найти все решения уравнения на интервале [-5,5] и вывести их на экран.
«5»: Сделать то же самое с помощью только одного цикла.
17
Метод дихотомии (деление пополам)
Найти середину отрезка [a,b]: c = (a + b) / 2;
18
Метод дихотомии (деления пополам)
простота
нужно знать интервал [a, b]
на интервале [a, b] должно быть только одно решение
большое число шагов для достижения высокой точности
только для функций одной переменной
19
Метод дихотомии (в программе)
пока b - a > eps делай
c := (a + b) / 2;
если f(a)*f(c) < 0 то
b := c
иначе a := c;
конец
ответ := (a + b) / 2;
20
Задания
«4»: Найти все решения уравнения на интервале [-5,5] методом дихотомии и вывести их на экран.
«5»: Сделать задачу на «4» и сравнить число шагов цикла при использовании метода перебора и метода дихотомии.
21
Решение уравнений в Exсel
Задача: найти все решения уравнения на интервале [-5,5]
Методы решения уравнений:
аналитические: решение в виде формулы
численные: приближенное решение, число
выбрать начальное приближение «рядом» с решением
по некоторому алгоритму вычисляют первое приближение, затем – второе и т.д.
вычисления прекращают, когда значение меняется очень мало (метод сходится)
22
Решение уравнения
1. Таблица значений функций на интервале [-5,5]
2. Графики функций (диаграмма «Точечная»)
2 решения: начальные приближения
25
Плавающее бревно
На сколько погрузится бревно радиуса R, брошенное в воду, если плотность дерева ρд = 700 кг/м3. Плотность воды ρв = 1000 кг/м3?
H
L
26
Плавающее бревно: силы
Сила тяжести
Сила Архимеда
FA
Fg
объем погруженной части
площадь сечения
погруженной части
полный объем
площадь сечения
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.