Пояснения к выполнению задания второго уровня. Выход из программы по запросу реализуется по приведённой блок-схеме (рис
Выход из программы по запросу реализуется по приведённой блок-схеме (рис. 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 | 3i+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 является приближённым значением корня уравнения с точностью .