Методы вычислений
Алгоритм Евклида
Решение уравнений
Оптимизация
Восстановление зависимостей
Статистика
Моделирование
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
объем погруженной части
площадь сечения
погруженной части
полный объем
площадь сечения
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.