Решение вычислительных задач на компьютере (язык С++) презентация

Содержание

Слайд 2

§ 69. Точность вычислений

Решение вычислительных задач на компьютере (язык С++)

§ 69. Точность вычислений Решение вычислительных задач на компьютере (язык С++)

Слайд 3

Погрешности измерений

«Недостатки математического образования с наибольшей отчетливостью проявляются в чрезмерной точности численных расчетов».
Карл

Фридрих Гаусс.

Погрешность (ошибка) – отклонение измеренного или вычисленного значения от истинного значения.

цена деления 0,1 см

измерено

фактически

8,2 см

8,15 ... 8,25 см

7,8 см

7,75 ... 7,85 см

Толщина дна:

вычислено

фактически

0,4 см

0,3 ... 0,5 см

0,4 ± 0,1см

Погрешности измерений «Недостатки математического образования с наибольшей отчетливостью проявляются в чрезмерной точности численных

Слайд 4

Погрешности измерений

абсолютная погрешность Δ x

Относительная погрешность:

x*

истинное значение

измеренное

Погрешности измерений абсолютная погрешность Δ x Относительная погрешность: x* истинное значение измеренное

Слайд 5

Погрешности вычислений

Все практические расчеты выполняются неточно. Погрешность результата вычислений определяется погрешностью исходных данных.

Погрешности вычислений Все практические расчеты выполняются неточно. Погрешность результата вычислений определяется погрешностью исходных данных.

Слайд 6

Погрешности вычислений

неточные числа в знаменателе

Метод вычислительно неустойчив: малые погрешности в исходных данных могут

привести к большим погрешностям в решении.

Погрешности вычислений неточные числа в знаменателе Метод вычислительно неустойчив: малые погрешности в исходных

Слайд 7

Источники погрешностей

• неточность исходных данных
• неточность записи вещественных чисел в двоичном коде конечной длины
• погрешности приближенного

вычисления некоторых стандартных функций (sin, cos, …)
• накопление погрешностей при арифметических действиях с неточными данными
• погрешность метода

Источники погрешностей • неточность исходных данных • неточность записи вещественных чисел в двоичном

Слайд 8

§ 70. Решение уравнений

Решение вычислительных задач на компьютере (язык С++)

§ 70. Решение уравнений Решение вычислительных задач на компьютере (язык С++)

Слайд 9

Методы решения уравнений

Точные (аналитические) методы:

Графический метод:

Методы решения уравнений Точные (аналитические) методы: Графический метод:

Слайд 10

Приближённые методы

Сжатие отрезка:

выбрать начальный отрезок [a0, b0] (одно решение!)
уточнить решение с помощью некоторого

алгоритма: ⇒ [a, b]
повторять шаг 2, пока длина отрезка [a, b] не станет достаточно мала

Завершение работы:

Приближённые методы Сжатие отрезка: выбрать начальный отрезок [a0, b0] (одно решение!) уточнить решение

Слайд 11

Приближенные методы

По одной точке:

выбрать начальное приближение x0
уточнить решение с помощью некоторого алгоритма: ⇒

x
повторять шаг 2, пока два последовательных приближения не будут отличаться достаточно мало

0

x

y

x0

x1

x2

касательная

Завершение работы:

метод Ньютона (метод касательных)

Приближенные методы По одной точке: выбрать начальное приближение x0 уточнить решение с помощью

Слайд 12

Приближенные методы

Итерационные методы (лат. iteratio – повторение) – основаны на многократном выполнении одинаковых

шагов, каждый из которых уточняет решение.

предыдущее приближение

следующее приближение

дают какое-то решение, если точное неизвестно
могут давать меньшие ошибки, чем вычисления по точным формулам

решение приближенное: x = 1,23345
ответ – число (зависимость от параметра?)
большой объем вычислений
не всегда просто оценить погрешность


Приближенные методы Итерационные методы (лат. iteratio – повторение) – основаны на многократном выполнении

Слайд 13

Метод перебора

Задача. Найти решение уравнения справа от точки с точностью ε.

Алгоритм:
разбить отрезок [a,

b] на полосы шириной δ = 2ε
найти полосу [a*, b*], в которой находится x*
решение:

Метод перебора Задача. Найти решение уравнения справа от точки с точностью ε. Алгоритм:

Слайд 14

Есть ли решение на [x, x+δ ]?

Есть ли решение на [x, x+δ ]?

Слайд 15

Метод перебора (a = 0)

алг Перебор
нач
вещ eps, x, delta
eps:= 0.001

x:= 0 | x:= a
delta:= 2*eps
нц пока f(x)*f(x+delta) > 0
x:= x + delta
кц
вывод 'x = ', x+eps
кон

алг вещ f( вещ x )
нач
знач:= x - cos(x)
кон

Метод перебора (a = 0) алг Перебор нач вещ eps, x, delta eps:=

Слайд 16

Метод перебора (a = 0)
int main() {
float eps = 0.001;
float x

= 0; # x = a;
float delta = 2*eps;
while( f(x)*f(x+delta) > 0 )
x += delta;
cout << "x = " << fixed << setw(6)
<< setprecision(3) << x + eps;
}

float f( x ) {
return x - cos(x);
}

Метод перебора (a = 0) int main() { float eps = 0.001; float

Слайд 17

Метод перебора

большой объем вычислений

Усовершенствованный перебор:
отделение корней – перебор с большим шагом
уточнение

корней – перебор с шагом 2ε

простота
можно получить решение с любой заданной точностью

Метод перебора большой объем вычислений Усовершенствованный перебор: отделение корней – перебор с большим

Слайд 18

Метод деления отрезка пополам

Алгоритм:
вычислить середину
отрезка:
если на отрезке [a,c] есть решение, присвоить b:=c,

иначе a:=c
повторять шаги 1-2 до тех пор, пока

.

Вариант:

Метод деления отрезка пополам Алгоритм: вычислить середину отрезка: если на отрезке [a,c] есть

Слайд 19

Метод деления отрезка пополам

.

delta:= 2*eps
нц пока b - a > delta
c:= (a

+ b) / 2
если f(a)*f(c) <= 0 то
b:= c
иначе
a:= c
все
кц
вывод 'x = ', (a+b)/2

Алгоритмический язык:

sign(f(a)) <> sign(f(c))

Метод деления отрезка пополам . delta:= 2*eps нц пока b - a >

Слайд 20

Метод деления отрезка пополам

.

float delta = 2*eps;
while( b - a > delta )

{
float c = (a + b) / 2;
if( f(a)*f(c) <= 0 )
b = c;
else a = c;
}
cout << "x = " << fixed << setw(6)
<< setprecision(3) << (a+b)/2;

C++:

Метод деления отрезка пополам . float delta = 2*eps; while( b - a

Слайд 21

Полёт мяча







Полёт мяча

Слайд 22

Полёт мяча

Задача. Найти угол α (и время t) при котором x = S

и y = H:

Решение:

Диапазон углов для поиска:

Полёт мяча Задача. Найти угол α (и время t) при котором x =

Слайд 23

Уточнение диапазона углов

Диапазон углов для поиска:

Уточнение диапазона углов Диапазон углов для поиска:

Слайд 24

Полёт мяча

pi:= 3.1415926
u:= 0
delta:= 2*eps
нц пока u < pi/2
если f(u)*f(u+delta) <= 0

то
вывод 'Угол: ', (u+eps)*180/pi
вывод ' градусов', нс
все
u:= u + delta
кц

Программа на алгоритмическом языке:

Полёт мяча pi:= 3.1415926 u:= 0 delta:= 2*eps нц пока u если f(u)*f(u+delta)

Слайд 25

Полёт мяча

float u = 0;
float delta = 2*eps;
while( u < M_PI/2 ) {

if( f(u)*f(u+delta) <= 0 ) {
float alpha = (u+eps)*180/M_PI;
cout << "Угол: " << fixed << setw(4)
<< setprecision(1)
<< alpha << " градусов";
}
u += delta;
}

Программа на языке C++:

Полёт мяча float u = 0; float delta = 2*eps; while( u if(

Слайд 26

Полёт мяча

Использование табличного процессора:

имя ячейки или диапазона

Диапазон углов:

Полёт мяча Использование табличного процессора: имя ячейки или диапазона Диапазон углов:

Слайд 27

Полёт мяча

Excel: РАДИАНЫ

Диаграмма XY:

Excel: Точечная

Полёт мяча Excel: РАДИАНЫ Диаграмма XY: Excel: Точечная

Слайд 28

Полёт мяча

начальное приближение

с графика!

Сервис – Подбор параметра:

нужно f(α) = 0

изменяем начальное приближение

результат

в H2!

Полёт мяча начальное приближение с графика! Сервис – Подбор параметра: нужно f(α) =

Слайд 29

Решение вычислительных задач на компьютере (язык С++)

§ 71. Дискретизация

Решение вычислительных задач на компьютере (язык С++) § 71. Дискретизация

Слайд 30

Вычисление длины линии

Ломаная:

Вычисление длины линии Ломаная:

Слайд 31

Вычисление длины линии

Кривая:







↓ h

L

L'

L'≈ L

шаг дискретизации

Вычисление длины линии Кривая: ↓ h L L' L'≈ L шаг дискретизации

Слайд 32

Дискретизация

цель – представить задачу в виде, пригодном для компьютерных расчётов
есть потеря информации
методы приближённые
для

уменьшения погрешности нужно уменьшать шаг дискретизации
при малом шаге на результат могут сильно влиять погрешности вычислений

Дискретизация цель – представить задачу в виде, пригодном для компьютерных расчётов есть потеря

Слайд 33

Вычисление длины кривой

x:= a
L:= 0
нц пока x < b
y1:= f(x)
y2:=

f(x+h)
L:= L + sqrt(h*h + (y1-y2)*(y1-y2))
x:= x + h
кц
вывод 'Длина кривой ', L

Программа на алгоритмическом языке:

Вычисление длины кривой x:= a L:= 0 нц пока x y1:= f(x) y2:=

Слайд 34

Вычисление длины кривой

float x = a;
float L = 0;
while( x < b

) {
float y1 = f(x);
float y2 = f(x+h);
L += sqrt(h*h + (y2-y1)*(y2-y1));
x += h;
}
cout << "Длина кривой " << fixed
<< setw(10) << setprecision(3) << L;

Программа на C++:

Вычисление длины кривой float x = a; float L = 0; while( x

Слайд 35

Площадь фигуры


Площадь фигуры

Слайд 36

Дискретизация







Метод прямоугольников:

Дискретизация Метод прямоугольников:

Слайд 37

Метод прямоугольников

S:= 0; x:= a
нц пока x < b
S:= S +

f1(x+h/2) - f2(x+h/2)
x:= x + h
кц
S:= h*S
вывод 'Площадь ', S

Алгоритмический язык:

float S = 0, x = a;
while( x < b ) {
S += f1(x+h/2)- f2(x+h/2);
x += h;
}
S *= h;
cout << "Площадь " << fixed
<< setw(8) << setprecision(3) << S;

C++:

в середине отрезка [x, x+h]

Метод прямоугольников S:= 0; x:= a нц пока x S:= S + f1(x+h/2)

Слайд 38

Метод трапеций






Метод трапеций

Слайд 39

Метод трапеций

S:= 0; x:= a
нц пока x < b
x:= x + h
кц


вывод 'Площадь ', S

Алгоритмический язык:

S:= S + f1(x)- f2(x)+
f1(x+h)- f2(x+h)

S:= h*S/2

Метод трапеций S:= 0; x:= a нц пока x x:= x + h

Слайд 40

float S = 0, x = a;
while( x < b ) {
S

+= f1(x)- f2(x) +
f1(x+h)- f2(x+h);
x += h;
}
S *= h/2;
cout << "Площадь " << fixed
<< setw(8) << setprecision(3) << S;

Метод трапеций

Язык C++:

S += f1(x)- f2(x)+
f1(x+h)- f2(x+h);

S *= h/2;

float S = 0, x = a; while( x S += f1(x)- f2(x)

Слайд 41

§ 72. Оптимизация

Решение вычислительных задач на компьютере (язык С++)

§ 72. Оптимизация Решение вычислительных задач на компьютере (язык С++)

Слайд 42

Что такое оптимизация?

Оптимизация – это поиск наилучшего (оптимального) решения задачи в заданных условиях.


1) Цель: выбрать неизвестный x, так чтобы

или

2) Ограничения

задача оптимизации

Что такое оптимизация? Оптимизация – это поиск наилучшего (оптимального) решения задачи в заданных

Слайд 43

Что такое минимум?

локальный минимум

глобальныйминимум

обычно нужно найти глобальный минимум
большинство численных методов находят только локальный

минимум

Что такое минимум? локальный минимум глобальныйминимум обычно нужно найти глобальный минимум большинство численных

Слайд 44

Метод дихотомии


Алгоритм:
вычислить середину отрезка:
найти симметричные точки x1= c - r, x2 =

c + r
если f(x1) > f(x2), далее ищем на [x1, b]
иначе ищем на [a, x2]

Метод дихотомии Алгоритм: вычислить середину отрезка: найти симметричные точки x1= c - r,

Слайд 45

Метод дихотомии

Уменьшение интервала:

было

стало

Метод дихотомии Уменьшение интервала: было стало

Слайд 46

Метод дихотомии

k:= 0.01
delta:= 2*eps
нц пока b - a > delta
r:= k*(b -

a)
x1:=(a + b)/2 - r
x2:=(a + b)/2 + r
если f(x1) > f(x2) то
a:= x1
иначе b:= x2
все
кц
вывод 'x = ', (a+b)/2

Алгоритмический язык:

Метод дихотомии k:= 0.01 delta:= 2*eps нц пока b - a > delta

Слайд 47

Метод дихотомии

float k = 0.01;
float delta = 2*eps;
while( b - a >

delta ) {
float r = k*(b - a);
float x1 = (a + b)/2 – r;
float x2 = (a + b)/2 + r;
if( f(x1) > f(x2) )
a = x1;
else b = x2;
}
cout << "x = " << fixed << setw(10)
<< setprecision(3) << (a+b)/2;

С++:

Метод дихотомии float k = 0.01; float delta = 2*eps; while( b -

Слайд 48

Золотое сечение – большая часть относится к меньшей как целое к большей части.


Метод золотого сечения

Отношение золотого сечения:

Золотое сечение – большая часть относится к меньшей как целое к большей части.

Слайд 49

Золотое сечение

Отношение золотого сечения:

Золотое сечение Отношение золотого сечения:

Слайд 50

Золотое сечение: спирали

Ряд Фибоначчи:
1, 1, 2, 3, 5, 8, 13, 21, 34,

55, …, Fn-1, Fn , …

Золотое сечение: спирали Ряд Фибоначчи: 1, 1, 2, 3, 5, 8, 13, 21,

Слайд 51

Метод золотого сечения

Уменьшение интервала:

Метод золотого сечения Уменьшение интервала:

Слайд 52

Оптимальный раскрой листа


Цель:

Ограничения:

Оптимальный раскрой листа Цель: Ограничения:

Слайд 53

Оптимальный раскрой листа

В табличном процессоре:



Оптимальный раскрой листа В табличном процессоре:

Слайд 54

Оптимизация в табличном процессоре

Задача оптимизации: найти максимум (или минимум) целевой функции в ячейке

…, изменяя значения ячеек … при ограничениях ….

OpenOffice.org Calc:

Excel:

модуль Solver for Nonlinear Programming (входит в LibreOffice)

надстройка Поиск решения

Оптимизация в табличном процессоре Задача оптимизации: найти максимум (или минимум) целевой функции в

Слайд 55

Оптимизация в табличном процессоре

OpenOffice.org Calc:

Оптимизация в табличном процессоре OpenOffice.org Calc:

Слайд 56

Оптимизация в табличном процессоре

Excel:

Оптимизация в табличном процессоре Excel:

Слайд 57

§ 73. Статистические расчёты

Решение вычислительных задач на компьютере (язык С++)

§ 73. Статистические расчёты Решение вычислительных задач на компьютере (язык С++)

Слайд 58

Что такое статистика?

Статистика – это наука, которая изучает методы обработки и анализа больших

массивов данных.

Ряд данных:

сумма:
среднее:
минимальное:
максимальное:
количество чисел:

Свойства ряда данных:

=СУММ(A1:A20)
=СРЗНАЧ(A1:A20)
=МИН(A1:A20)
=МАКС(A1:20)
=СЧЁТ(A1:20)

=SUM(A1:A20)
=AVERAGE(A1:A20)
=MIN(A1:A20)
=MAX(A1:A20)
=COUNT(A1:A20)

только числа!

сколько ячеек удовлетворяет условию:

=COUNTIF(A1:A20;"=5")

СЧЁТЕСЛИ

=COUNTIF(A1:A20;">3")

Что такое статистика? Статистика – это наука, которая изучает методы обработки и анализа

Слайд 59

Дисперсия

Для этих рядов одинаковы МИН, МАКС, СРЗНАЧ

Дисперсия («разброс») характеризует разброс данных относительно среднего

значения.

Дисперсия Для этих рядов одинаковы МИН, МАКС, СРЗНАЧ Дисперсия («разброс») характеризует разброс данных относительно среднего значения.

Слайд 60

Дисперсия

среднее арифметическое

квадрат отклонения от среднего

средний квадрат отклонения от среднего значения

Дисперсия среднее арифметическое квадрат отклонения от среднего средний квадрат отклонения от среднего значения

Слайд 61

Дисперсия и СКВО

Что неудобно:
если измеряется в метрах, то – в м2

СКВО =

среднеквадратическое отклонение
=STDEVP(A1:A20)
=СТАНДОТКЛОНП(A1:A20)

Дисперсия и СКВО Что неудобно: если измеряется в метрах, то – в м2

Слайд 62

Условные вычисления

Доставка:
бесплатно при >500 руб.
20% для остальных

если B2 > 500 то
C2:= 0
иначе


C2:= B2*0.2
все

= IF(B2>500;0;B2*0,2)
=ЕСЛИ(B2>500;0;B2*0,2)

условие

если «да»

если «нет»

Условные вычисления Доставка: бесплатно при >500 руб. 20% для остальных если B2 >

Слайд 63

Сложные условия

NOT (НЕ, отрицание)
AND (И, логическое умножение)
OR (ИЛИ, логическое сложение)

=IF( ;0;B2*0,2)

AND(A2<1500;B2>500)

=IF(AND(B2>1994;C2>175);

"да"; "–")

Сложные условия NOT (НЕ, отрицание) AND (И, логическое умножение) OR (ИЛИ, логическое сложение)

Слайд 64

Сложные условия

=IF(OR(B2=100;C2=100;B2+C2>=180); "да"; "–")

Сложные условия =IF(OR(B2=100;C2=100;B2+C2>=180); "да"; "–")

Слайд 65

Вложенные условия

=IF(B2>500;0; )

IF(B2>200;B2*0,1;B2*0,2)

если B2 > 500 то
C2:= 0
иначе
если B2 >

200 то
C2:= B2*0.1
иначе
C2:= B2*0.2
все
все

Доставка:
бесплатно при >500 руб.
10% при >200 руб.
20% для остальных

Вложенные условия =IF(B2>500;0; ) IF(B2>200;B2*0,1;B2*0,2) если B2 > 500 то C2:= 0 иначе

Слайд 66

Связь двух рядов данных

Два ряда одинаковой длины:

Вопросы:
есть ли связь между этими рядами (соответствуют

ли пары какой-нибудь зависимости )
насколько сильна эта связь?

Связь двух рядов данных Два ряда одинаковой длины: Вопросы: есть ли связь между

Слайд 67

Коэффициент корреляции

безразмерный!

=CORREL(A1:A20;B1:B20)
=КОРРЕЛ(A1:A20;B1:B20)

Коэффициент корреляции безразмерный! =CORREL(A1:A20;B1:B20) =КОРРЕЛ(A1:A20;B1:B20)

Слайд 68

Коэффициент корреляции

Как понимать это число?
если : увеличение приводит к увеличению
если : увеличение приводит

к уменьшению
если : связь обнаружить не удалось

Сильная связь:

: линейная зависимость

: линейная зависимость

Коэффициент корреляции Как понимать это число? если : увеличение приводит к увеличению если

Слайд 69

§ 74. Обработка результатов эксперимента

Решение вычислительных задач на компьютере (язык С++)

§ 74. Обработка результатов эксперимента Решение вычислительных задач на компьютере (язык С++)

Слайд 70

Закон Гука

Несколько опытов:

Закон Гука Несколько опытов:

Слайд 71

Метод наименьших квадратов (МНК)

неизвестно!

Ошибка определяется величиной:

Метод наименьших квадратов:

Метод наименьших квадратов (МНК) неизвестно! Ошибка определяется величиной: Метод наименьших квадратов:

Слайд 72

Метод наименьших квадратов (МНК)

Метод наименьших квадратов (МНК)

Слайд 73

Метод наименьших квадратов (МНК)

A:= 0; B:= 0
нц для i от 1 до N

A:= A + x[i]*x[i]
B:= B + x[i]*y[i]
кц
k:= B / A

Алгоритмический язык:

float A = 0, B = 0;
for(int i=0; i A += x[i]*x[i];
B += x[i]*y[i];
}
k = B / A;

C++:

вещ A, B, k
вещ x[1:N], y[1..N]

Метод наименьших квадратов (МНК) A:= 0; B:= 0 нц для i от 1

Слайд 74

Метод наименьших квадратов (МНК)

Табличный процессор:

начальное приближение

СУММКВРАЗН

Поиск решения: выбрать B1 так, что B2→min

Метод наименьших квадратов (МНК) Табличный процессор: начальное приближение СУММКВРАЗН Поиск решения: выбрать B1 так, что B2→min

Слайд 75

Восстановление зависимостей

Два ряда одинаковой длины:

задают некоторую неизвестную функцию

Зачем:
найти y в промежуточных точках

(интерполяция)
найти y вне диапазона измерений (экстраполяция, прогнозирование)

Восстановление зависимостей Два ряда одинаковой длины: задают некоторую неизвестную функцию Зачем: найти y

Слайд 76

Восстановление зависимостей

Вывод: задача некорректна, поскольку решение неединственно.

Восстановление зависимостей Вывод: задача некорректна, поскольку решение неединственно.

Слайд 77

Восстановление зависимостей

Корректная задача: найти функцию заданного вида, которая лучше всего соответствует данным.

Примеры:
линейная
полиномиальная
степенная
экспоненциальная
логарифмическая

Восстановление зависимостей Корректная задача: найти функцию заданного вида, которая лучше всего соответствует данным.

Слайд 78

Что значит «лучше всего соответствует»?

заданные пары значений

Крайние случаи:
если график проходит через точки:
если считаем,

что y не меняется и :

– среднее значение

коэффициент детерминации

когда

Что значит «лучше всего соответствует»? заданные пары значений Крайние случаи: если график проходит

Слайд 79

Восстановление зависимостей

Табличный процессор:
Диаграмма XY (Excel: Точечная)
ПКМ – Вставить линию тренда

тип функции

коэффициент

детерминации

показать уравнение

Восстановление зависимостей Табличный процессор: Диаграмма XY (Excel: Точечная) ПКМ – Вставить линию тренда

Слайд 80

Прогнозирование

хорошо соответствует данным, непригодна для прогноза!

Прогнозирование хорошо соответствует данным, непригодна для прогноза!

Слайд 81

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений

Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163, г.

Имя файла: Решение-вычислительных-задач-на-компьютере-(язык-С++).pptx
Количество просмотров: 174
Количество скачиваний: 0