Выход из программы по запросу реализуется по приведённой блок-схеме (рис. 2.3) с использованием функций Console.WriteLine(), Console.ReadLine(). В случае использования текстового ответа («Да», «Нет») не забудьте указать тип проверяемой в условии переменной – String.
Нет |
Да |
Выйти? |
X=”Да” |
Начало |
Конец |
Ввод: да/нет |
Рис. 2.3. Блок-схема алгоритма
Таблица 2.1. Варианты заданий к лабораторной работе № 2.
№ | k | ai | bi | № | ai | bi |
5,10,15 | i | |||||
4,8,12 | ||||||
3,7,11 | ||||||
5,9,13 | ||||||
7,10,13 | i +4 | |||||
5,10,15 | 3i–1 | |||||
8,12,16 | ||||||
5,10,15 | ||||||
7,11,15 | 4i - 3 | |||||
5,9,13 | ||||||
4,9,14 | ||||||
3,8,13 | 3 i+ 5 | |||||
4,8,12 | ||||||
5,8,11 | ||||||
4,6,8 |
ЛАБОРАТОРНАЯ РАБОТА №3
Тема: Табулирование функции. Применение табулирования к решению уравнения f(x)= 0.
Цель работы: составление программы табулирования функции y = f(x) и ее использование для нахождения корня уравнения f(x)= 0 с заданной точностью.
Варианты заданий лабораторной работы №3 приведены в таблице 3.1.
Работа состоит из двух задач:
Задача 1. Найти таблицу значений функций y = f(x) на отрезке [ a, b ] с шагом h.
Задача 2. Вычислить корень уравнения f(x) = 0 на отрезке [ a, b ] с точностью e=0,005.
Перед выполнением задания любого уровня необходимо проверить графически, что на заданном отрезке [ a, b ] находится корень уравнения. Если корня на заданном отрезке нет, то следует определить по графику новый отрезок, содержащий корень, и при решении задачи рассматривать его. График привести в отчёте.
Задание (1 уровень)
1. Графически получить приближённое решение уравнения f(x) = 0. Уравнение взять из таблицы 3.1 в соответствии с номером своего варианта.
2. Составить блок-схему алгоритма табулирования функции f(x) на отрезке [ a, b ] с шагом h =0,1.
3. Составить программу табулирования функции f(x) на отрезке [ a, b ] с шагом h =0,1.
4. Ввести программу, выполнить её, получить и выписать 11 пар значений (x, y).
5. Для вычисления корня уравнения f(x) = 0 найти и выписать отрезок , полученный в результатах табулирования, на концах которого f(x) имеет разные знаки.
6. Повторно запуская программу табулирования, получить таблицу значений функции f(x) на отрезке с шагом h =0,1.
7. С экрана выписать новый отрезок , на концах которого функция f(x) имеет разные знаки. Вычислить середину этого отрезка – это и будет приближённый корень уравнения f(x)=0, с точностью
8. Вычислить значение функции в корне. Выписать полученные результаты.
Задание (2 уровень)
1. Графически получить приближенное решение уравнения f(x) = 0. Уравнение взять из таблицы 3.1 в соответствии с номером своего варианта.
2. Изменить блок-схему задачи табулирования функции f(x), предусмотрев возможность повторного запуска алгоритма табулирования на новом интервале с новым шагом h ( Выход из программы должен быть выполнен, если длина найденного интервала окажется меньше либо равна заданной погрешности e Перед выходом вычислить корень уравнения как середину последнего отрезка и значение функции в корне.
3. Составить программу табулирования f(x) на [ a, b ] с шагом h по новой блок-схеме.
4. Запустить программу, получить результаты по табулированию функции f(x) последовательно на данном интервале [ a, b ] с шагом h =0,1 и на каждом новом интервале , где функция меняет знак на противоположный, с шагом .
5. С экрана выписать результаты табулирования на первом интервале, а для последующих результатов – выписывать две строки, где функция меняет свой знак. Выписать корень уравнения и значение функции в корне.
Задание (3 уровень)
1. Графически получить приближённое решение уравнения f(x) = 0. Уравнение взять из таблицы 3.1 в соответствии с номером своего варианта.
2. Составить блок-схему и программу, реализующие алгоритм вычисления корня уравнения f(x)= 0 на интервале [ a, b ] с заданной точностью . Для нахождения корня использовать алгоритм табулирования функции f(x), последовательно уменьшая в 10 раз интервал поиска , где пока не выполнится условие: .
Замечания:
а) на каждом отрезке проводить не более 10 вычислений значений функции f(x);
б) приближенным решением уравнения считать середину последнего отрезка .
3. Ввести программу, выполнить её и получить результат. На экран вывести границы каждого нового интервала поиска корня, корень уравнения, заданную точность и значение функции в корне.
Пример
Задача 1. Найти таблицу значений функций y = f(x ) на отрезке [ a, b ] с шагом h =0.1, где , a =1, b =2.
Задача 2. Найти корень уравнения f(x) = 0 на отрезке [ a, b ] с точностью
e= 0.005.
Порядок выполнения задания (1 уровень)
1. Решение уравнения графическим методом.
1.1. Проверим графически, что на заданном отрезке [ a, b ] есть корень уравнения f(x)= 0, т.е.
. (1)
Перепишем уравнение (1):
Построим два графика (рис. 3.1)
M |
X * |
Рис. 3.1. Пересечение графиков
Графики пересекаются друг с другом в точке М. Абсцисса точки М (X*) – есть корень уравнения
1.2. Если на заданном в условии отрезке графики не пересекаются, то это означает, что данный отрезок не содержит корня уравнения. В этом случае следует определить по графику новый отрезок, содержащий корень, и при решении задачи рассматривать его.
2. Составление блок-схемы задачи табулирования.
2.1. Входные данные: a, b – границы отрезка, h - шаг.
Выходные данные: 11 пар значений (x, y).
L t1UKDXHTtVBSKC5JzEtJzMnPS7VVqkwtVrK34+UCAAAA//8DAFBLAwQUAAYACAAAACEAUwHCU8IA AADaAAAADwAAAGRycy9kb3ducmV2LnhtbESPQYvCMBSE7wv7H8Jb8LKsqSKydI1SCqIHYdHV+6N5 tsXkpSTR1n9vhAWPw8x8wyxWgzXiRj60jhVMxhkI4srplmsFx7/11zeIEJE1Gsek4E4BVsv3twXm 2vW8p9sh1iJBOOSooImxy6UMVUMWw9h1xMk7O28xJulrqT32CW6NnGbZXFpsOS002FHZUHU5XK2C 350pvSmp35T30/Z4mhWfu3mh1OhjKH5ARBriK/zf3moFM3heSTdALh8AAAD//wMAUEsBAi0AFAAG AAgAAAAhAPD3irv9AAAA4gEAABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQ SwECLQAUAAYACAAAACEAMd1fYdIAAACPAQAACwAAAAAAAAAAAAAAAAAuAQAAX3JlbHMvLnJlbHNQ SwECLQAUAAYACAAAACEAMy8FnkEAAAA5AAAAEAAAAAAAAAAAAAAAAAApAgAAZHJzL3NoYXBleG1s LnhtbFBLAQItABQABgAIAAAAIQBTAcJTwgAAANoAAAAPAAAAAAAAAAAAAAAAAJgCAABkcnMvZG93 bnJldi54bWxQSwUGAAAAAAQABAD1AAAAhwMAAAAA ">
начало |
a, b, h |
x= a,b,h |
y=f(x) |
a, b, h |
конец |
Рис. 3.2. Блок-схема алгоритма табулирования
3. Составление программы по блок-схеме из п.2.
3.1. Объявить переменные A, B, H, Y, X одинарной точности вещественного типа (Single).
3.2. Запросить ввод исходных данных с клавиатуры (Console.WriteLine()).
3.3. Открыть цикл для вычисления значения функции Y для аргумента X, изменяющегося от A до B с шагом H (For X = A To В Step H).
3.4. В цикле вычислить и вывести на экран значение функции Y(X) и соответствующего аргумента X.
3.5. Закрыть цикл (Next X) и завершить программу.
4. Выполнить программу и выписать результаты в отчёт (по аналогии с рис. 3.3).
x = 1 | y = - 0.5 | x = 1.6 | y = - 0.126 |
x = 1.1 | y = - 0.425 | x = 1.7 | y = - 0.77 |
x = 1.2 | y = - 0.356 | x = 1.8 | y = - 0.032 |
x = 1.3 | y = - 0.292 | x = 1.9 | y = 1.08 E-02 |
x = 1.4 | y = - 0.232 | x = 2 | y = 5.10 E-02 |
x = 1.5 | y = - 0.177 |
Рис. 3.3. Результаты: 11 пар значений (x, y)
5. Из таблицы значений, полученной в п.4, найти и выписать отрезок, на котором функция f(x) меняет свой знак. В данном случае это отрезок [ 1.8, 1.9 ], т.к. f(1.8)< 0, а f(1.9)> 0.
6. На найденном отрезке [ 1.8, 1.9 ] запустить программу табулирования функции f(x) с шагом h =0.01.
7. Из полученных результатов найти и выписать две строки, где функция f(x) меняет знак:
x = 1.87 y = - 1.732Е-08 f(x) < 0
x = 1.88 y= 2.474Е-03 f(x) > 0
8. Вычислить середину выбранного отрезка [1.87, 1.88]: X1 =(1.87+1.88)/2 = 1.875 и значение функции в корне X1 (y = 3.743E-04).
9. Выписать результаты: значение корня (X1), значение функции в корне (y(X1)).
Вывод: значение X1 =1.875 является приближённым значением корня уравнения с точностью .