
- •Информатика и программирование
- •Методические указания к лабораторным работам Содержание
- •Лабораторная работа 1 Цель работы
- •Задание
- •Теоретическая часть
- •Компоненты ide
- •Строка меню и меню
- •Наборы команд
- •Рекомендации по выполнению лабораторной работы
- •Теоретическая часть Преобразование типов операндов
- •Оператор форматного вывода printf
- •Рекомендации по выполнению лабораторной работы
- •Теоретическая часть Выражения и операции в языке си
- •Приоритеты операций в выражениях
- •Теоретическая часть Оператор цикла for
- •Оператор цикла while
- •Оператор do while
- •Теоретическая часть Массивы в языке Си
- •Указатели и массивы
- •Условный оператор
- •Оператор переключатель switch
- •Оператор перехода goto
- •Рекомендации по выполнению лабораторной работы Определение цифр числа
- •Поиск простых чисел
- •Треугольник Паскаля
- •Теоретическая часть Функции в языке Си
- •Объявление и определение функций
- •Прототип функции
- •Параметры функции
- •Локальные и глобальные переменные
- •Функции и массивы Передача одномерных массивов как параметров функции
- •Передача строк в качестве параметров функций
- •Рекомендации по выполнению лабораторной работы Комментарии к заданию 1
- •Комментарии к заданию 2
- •Теоретическая часть Ввод-вывод в языке Си
- •Потоковый ввод-вывод
- •Открытие и закрытие потока
- •Стандартные файлы и функции для работы с ними
- •Символьный ввод-вывод
- •Строковый ввод-вывод
- •Форматированный ввод-вывод
- •Рекомендации по выполнению лабораторной работы
- •Теоретическая часть Ввод-вывод для двоичных файлов
- •Прямой доступ к файлам
- •Рекомендации по выполнению лабораторной работы
- •Теоретическая часть Строки в языке Си
- •Операции со строками
- •Теоретическая часть Проверка символов
- •Теоретическая часть
- •Теоретическая часть
- •Рекомендации по выполнению лабораторной работы Определение корней функции
- •Метод деления отрезка пополам
- •Метод хорд
- •Вычисление интеграла
- •Рекомендации по выполнению лабораторной работы
- •Содержание отчета
Рекомендации по выполнению лабораторной работы Определение корней функции
Численные методы позволяют найти решения определенных задач, заранее зная, что полученные результаты будут вычислены с определенной погрешностью, поэтому для многих численных методов необходимо заранее знать "уровень точности", которому будет соответствовать полученное решение. В связи с этим задача нахождения корней многочлена вида
F(x)= anxn+…+a2x2+a1x+a0
представляет особый интерес, т.к. формулы нахождения корней даже кубического уравнения достаточно сложны, а если необходимо отыскать корни многочлена большей степени, то без помощи численных методов не обойтись. Рассмотрим два наиболее известных (и простых) методов нахождения корней: метод деления отрезка пополам и метод хорд.
Метод деления отрезка пополам
Метод деления отрезка пополам (известный еще и как метод половинного деления) также является рекурсивным, т.е. предусматривает повторение с учетом полученных результатов.
Исходные данные к методу деления отрезка пополам:
-
дана функция f(x);
-
определена допустимая погрешность Q;
-
определен некоторый интервал [a,b], содержащий решение уравнения.
Алгоритм нахождения корня:
-
Вычисляем значение координаты x, беря середину отрезка [a,b], т.е. x= (a+b)/2
-
Вычисляем значения f(a), f(b), f(x), и осуществляем следующую проверку:
Если |f(x)| <= Q, то корень с указанной точностью найден.
Если |f(x)| > Q, т.е. необходимая точность еще не достигнута, то формируем два интервала: [a,x] и [x,b] проверяем знаки f(a), f(b), f(x). На концах одного из этих интервалов знаки функции будут одинаковы, а на другом – различны. Именно тот интервал, на концах которого знаки различны, мы берем за основу при следующей итерации, т.е. приравниваем либо a, либо b к х.
-
Переходим к пункту 1.
Рис. 9. Метод деления отрезка пополам
Метод хорд
Исходные данные к методу деления отрезка пополам:
-
дана функция F(x);
-
определена допустимая погрешность Q;
-
определен некоторый интервал [a,b], содержащий решение уравнения.
Алгоритм нахождения корня:
-
Строим хорду, проходящую через точки f(a) и f(b) и вычисляем точку пересечения (x) хорды с осью абсцисс.
Формула прямой, проходящей через точки а и в, т.е. хорды:
y=k*x+y0, где
k =
y0
=
тогда точка х пересечения хорды с осью абсцисс будет вычисляться по формуле:
x =
-
Вычисляем значения f(a), f(b), f(x), и осуществляем следующую проверку:
Если |f(x)| <= Q или длина отрезка [a,b] <= Q, то корень с указанной точностью найден.
Если |f(x)| > Q, т.е. необходимая точность еще не достигнута, то формируем два интервала: [a,x] и [x,b] проверяем знаки F(a), F(b), F(x). На концах одного из этих интервалов знаки функции будут одинаковы, а на другом – различны. Именно то интервал, на концах которого знаки различны, мы берем за основу при следующей итерации, т.е. приравниваем либо a, либо b к х.
-
Переходим к пункту 1.
Рис. 10. Метод хорд
Вычисление интеграла
Известно, что определенный интеграл функции f(x) типа на интервале [a,b] численно представляет собой площадь криволинейной трапеции ограниченной прямыми x=0, y=a, y=b и функцией y=f(x) (едних прямоугольников (Рис. 3)). Есть два метода вычисления этой площади или определенного интеграла — метод трапеций (Рис. 2) и метод средних прямоугольников (Рис. 3).
Рис. 11. Криволинейная трапеция
По методам трапеций и средних прямоугольников соответственно интеграл равен сумме площадей прямоугольных трапеций (ы площадей) или сумме площадей прямоугольников (метода средних прямоугольников), в которых высота определяется по точке пересечения верхнего основания прямоугольника, которое график функции должен пересекать в середине. Соответственно получаем формулы площадей
для метода трапеций:
Рис. 12. Метод трапеций
,
где h – длина отрезка, n –
число отрезков
и для метода средних прямоугольников:
Рис. 13. Метод средних прямоугольников
,
где h – длина отрезка, n –
число отрезков
Алгоритм вычисления интеграла по любому из методов будет выглядеть следующим образом:
-
При заданном числе отрезков разбиения вычисляется (по заданному методу) первоначальное приближение S0
-
Число отрезков разбиения увеличивается на k (например, k=5) и вычисляется новое значение интеграла S1
-
Если |S0-S1| <= заданной точности, то за точное значение интеграла принимается значение S1
В противном случае за первоначальное приближение S0 принимается значение S1 и алгоритм повторяется, начиная с п.2
Содержание отчета
Отчет по лабораторной работе должен содержать:
-
задание лабораторной работы, соответствующее варианту
-
структурную схему алгоритма программы и подпрограммы (подпрограмм)
-
текст программы
-
результаты работы программы
Лабораторная работа 14
Цель работы
Закрепление пройденного материала: основные элементы языка Си, массивы, условные операторы, функции, стандартные библиотеки.
Задание
Разработать программу и подпрограмму (подпрограммы) построения графика функции на экране в виде последовательности точек и в выходном файле в виде гистограммы.
При выводе графика функции на экран ось X расположить горизонтально (количество позиций по оси X = 78), а ось Y – вертикально (количество позиций по оси Y = 25).
При выводе графика функции в выходной файл ось X расположить вертикально (количество позиций по оси X = 60), а ось Y – горизонтально (количество позиций по оси Y = 80), каждый столбец гистограммы пометить значением функции. После гистограммы вывести масштаб функции по оси Y.
Функция и координаты отрезка приведены в таблице.
№ |
Функция |
Границы отрезка |
1 |
у = 2*sin(x)- cos(3*x) |
-/2 |
2 |
y = 2*sin(x) + 3*cos(2*x) |
-/2 /2 |
3 |
y = (x-3)/(x2 + 2) |
-1 4 |
4 |
y = x2 * exp(-x) |
-1 2 |
5 |
y = exp(-x) * sin(2x) |
-/2 2 |
6 |
y = (x+2)2/3 - (x-2)2/3 |
-3 2.5 |