9160
.pdfРис.1.7. Сохранение проекта
Рис.1.8. Указание пути сохранения проекта
5. Изменение способа ввода исходных данных (ввод с клавиатуры).
Для ввода данных с клавиатуры используйте функцию Console.ReadLine(). Примериспользования:
A = Val(Console.ReadLine()).
Здесь переменной A присваивается значение, введѐнное с клавиатуры. Функция Val() преобразует введѐнное с клавиатуры значение из текстового типа в числовой.
5.1.Самостоятельно измените текст программы так, чтобы все исходные данные вводились с клавиатуры.
5.2.Выполните сборку и запуск программы, введите исходные данные и сравните полученный результат с результатом, полученным в п.4.
ЛАБОРАТОРНАЯ РАБОТА №2
Тема: Разветвляющийся алгоритм. Вычисление суммы и произведения. Цель работы: составление программ нахождения суммы и произведения
kпервых членов числовой последовательности с использованием оператора условного перехода IF.
Варианты заданий лабораторной работы №2 приведены в таблице 2.1.
Задание (1 уровень)
1. Составить блок – схему алгоритма, находящего сумму k первых членов
последовательности ( ) при заданном k.
=1
2.Составить программу по подготовленной блок-схеме, взяв выражение для
общего члена последовательности и значения k из таблицы 2.1 в соответствии с номером своего варианта.
3.Ввести программу и выполнить ее три раза, чтобы получить решение для трех значений k, заданных в Таблице 2.1. Выписать с экрана полученные значения суммы и соответствующие значения k.
4.Повторить п.п. 1 – 3 для задачи нахождения произведения k первых
членов последовательности ( =1 ) при заданных значениях k. Выражение для общего члена последовательности и значения k взять из таблицы 2.1 в соответствии с номером своего варианта.
5.Выписать с экрана полученные значения произведения и соответствующие значения k.
|
|
|
Задание (2 уровень) |
||||
1. |
Составить общую блок – схему алгоритма нахождения суммы kпервых |
||||||
членов |
последовательности |
( |
|
|
|
) и произведения k первых членов |
|
|
|
|
|
=1 |
|
|
|
последовательности ( |
) при трех значениях k. |
||||||
|
|
=1 |
|
|
|
|
|
2. |
По общей блок-схеме составить программу так, чтобы за один запуск |
программы была рассчитана сумма и произведение членов ряда при 3-х значениях kи результат был получен в виде:
S= |
P= |
приk = k1 |
S= |
P= |
приk = k2 |
S= |
P= |
приk = k3 |
3.Выход из программы или повторный ее запуск должны производиться по желанию пользователя с помощью ответа с клавиатуры. Выражение для
4.общего члена последовательности и , а также значения k взять из таблицы 2.1 в соответствии с номером своего варианта.
Задание (3 уровень)
Составить общую блок–схему алгоритма и программу для нахождения
суммы k первых членов последовательности ( |
|
|
|
) и произведения k |
||
|
|
|
=1 |
|
|
|
первых членов последовательности ( |
|
) при М значениях k так, чтобы М |
||||
|
=1 |
|
|
|
|
|
значений k автоматически формировались и за один запуск программы был получен результат в следующем виде:
S= |
P= |
приk = k1 |
S= |
P= |
приk = k2 |
…………………………………………………………………………………………………………
S= P= при k = kМ
Исходными данными программы должны быть начальное значение k – K1, количество М значений kи шаг изменения значенийk.
П р и м е р
Составить блок – схемы и программы вычисления суммы kпервых членов
последовательности |
|
= |
|
|
|
|
|
|
|
|
|
|
и |
|
произведения kпервых членов |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
+1 |
2 |
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
последовательности |
= (1 − |
|
|
1 |
|
|
) для k=5, 10, 15. |
|
|
|
|
|
|||||||||||||||
+1 2 |
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
2 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
= |
|
|
|
|
= |
|
|
|
|
+ |
|
|
+ + ( |
|
|
) |
|
|||||||||
|
|
+ 1 2 |
|
22 |
32 |
+ 1 2 |
|||||||||||||||||||||
|
=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
1 |
|
1 |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
= |
(1 − |
|
) = |
|
|
1 − |
|
|
1 − |
|
|
… (1 − |
|
) |
|||||||||||||
+ 1 2 |
|
|
22 |
32 |
+ 1 2 |
=1
Порядок выполнения работы первого уровня
1. Составление блок-схемы алгоритма, находящего сумму k первых членов последовательности .
1.1. Входные данные:k– число слагаемых.
Выходные данные: S– сумма k слагаемых. 1.2. Блок – схема (рис. 2.1):
Рис. 2.1. Блок-схема алгоритма, вычисляющего сумму k первых членов последовательности
2.Составление программы по блок-схеме (рис. 2.1) из п.1.
2.1.Объявить переменные K и I целого типа (Integer) и переменную S – вещественного типа двойной точности (Double).
2.2.Вывести сообщение «Введите число слагаемых» (Console.WriteLine()).
2.3.Присвоить переменной K значение, введѐнное с клавиатуры (Console.ReadLine()), предварительно преобразовав его в число функцией Val().
2.4.Обнулить значение переменной S, приравнять к единице значение переменной I.
2.5.Вычислить значение переменной S.
2.6.Увеличить значение переменной I на единицу.
2.7.С помощью оператора IFпроверить - достигла ли переменная I значения K (I≤K). Если не достигла, то вернуться (Goto) к вычислению переменной S, иначе вывести на экран значения переменных Sи K.
Примечание: синтаксис оператора условия: IF<условие>THEN
<значение, если условие истинно>
ELSE
<значение, если условие ложно>
ENDIF
3.Выполнить программу для трѐх разных значений Kи выписать результаты в отчѐт.
4.Составление блок-схемы алгоритма, находящего произведение k первых членов
последовательности .
4.1 Входные данные: k - число сомножителей. Выходные данные: P– произведение kсомножителей.
4.2 Блок – схема (рис.2.2):
4.3Программу нахождения произведения k первых членов последовательности составить самостоятельно по аналогии с программой, описанной в п. 2.
4.4Выполнить программу для трѐх разных значений kи выписать результаты в отчѐт.
Пояснения к выполнению задания второго уровня
Выход из программы по запросу реализуется по приведѐнной блок-схеме
(рис. 2.3) с использованием функций Console.WriteLine(), Console.ReadLine(). В
случае использования текстового ответа («Да», «Нет») не забудьте указать тип проверяемой в условии переменной – String.
ЛАБОРАТОРНАЯ РАБОТА №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] с точностью
=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) имеет разные знаки. Вычислить середину этого отрезка 1 = ( + )/2 – это
ибудет приближѐнный корень уравнения f(x)=0, с точностью = 0,005.
8.Вычислить значение функции в корне. Выписать полученные результаты.
Задание (2 уровень)
1. Графически получить приближенное решение уравнения f(x) = 0. Уравнение взять из таблицы 3.1 в соответствии с номером своего варианта.
2. Изменить блок-схему задачи табулирования функции f(x), предусмотрев возможность повторного запуска алгоритма табулирования на новом интервале с новым шагом h ( = − /10). Выход из программы должен быть выполнен, если длина найденного интервала окажется меньше либо равна заданной погрешности ( − ≤ ).Перед выходом вычислить корень уравнения как середину последнего отрезка и значение функции в корне.
3.Составить программу табулирования f(x) на [a, b] с шагом hпо новой блок-схеме.
4.Запустить программу, получить результаты по табулированию функции f(x) последовательно на данном интервале [a, b] с шагом h=0,1 и на каждом новом
интервале [ , ], где функция меняет знак на противоположный, с шагом
= − /10.
5.С экрана выписать результаты табулирования на первом интервале, а для последующих результатов – выписывать две строки, где функция меняет свой знак. Выписать корень уравнения и значение функции в корне.
Задание (3 уровень)
1.Графически получить приближѐнное решение уравнения f(x) = 0. Уравнение взять из таблицы 3.1 в соответствии с номером своего варианта.
2.Составить блок-схему и программу, реализующие алгоритм вычисления корня уравнения f(x)=0 на интервале [a, b] с заданной точностью . Для нахождения корня использовать алгоритм табулирования функции f(x),
последовательно уменьшая в 10 раз интервал поиска [ , ], где |
|
< 0 |
|||||||
|
|
|
|
|
|
|
|
|
|
пока не выполнится условие: |
− |
|
≤ . |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Замечания: |
|
|
|
|
|
|
|
|
|
а) на каждом отрезке , |
|
проводить не более 10 вычислений значений |
|||||||
|
|
|
|
|
|
|
|
|
|
функции f(x); |
|
|
|
|
|
|
|
|
|
б) приближенным решением уравнения считать середину последнего |
|||||||||
отрезка 1 = ( + )/2. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Ввести |
программу, |
выполнить еѐ и получить |
результат. |
На |
экран |
вывести границы каждого нового интервала поиска корня, корень уравнения, заданную точность и значение функции в корне.
П р и м е р
Задача 1.Найти таблицу значений функций y= f(x) на отрезке [a, b] с шагом h=0.1,
где = lg − 2− , a=1, b=2.
Задача 2. Найти корень уравнения f(x) = 0 на отрезке [a, b] с точностью
= 0.005.
Порядок выполнения задания (1 уровень)
1. Решение уравнения графическим методом.
1.1. Проверим графически, что на заданном отрезке [a, b] есть корень уравнения f(x)= 0, т.е.
− 2− = 0. |
(1) |
Перепишем уравнение (1): = 2− |
|
Построим два графика 1 = и |
2 = 2− (рис. 3.1) |
Графики пересекаются друг с другом в точке М. Абсцисса точки М (X*)– есть корень уравнения − 2− = 0.
1.2.Если на заданном в условии отрезке графики не пересекаются, то это означает, что данный отрезок не содержит корня уравнения. В этом случае следует определить по графику новый отрезок, содержащий корень, и при решении задачи рассматривать его.
2.Составление блок-схемы задачи табулирования.
2.1.Входные данные: a, b – границы отрезка, h - шаг.
Выходные данные: 11 пар значений (x, y).
2.2.Блок – схема (рис. 3.2):
Рис. 3.2. Блок-схема алгоритма табулирования
3. Составление программы по блок-схеме из п.2.
3.1. Объявить переменные A, B, H, Y, Xодинарной точности вещественного типа (Single).
3.2.Запросить ввод исходных данных с клавиатуры (Console.WriteLine()).
3.3.Открыть цикл для вычисления значения функции Yдля аргумента X, изменяющегося от Aдо B с шагом H (ForX = ATo В StepH).
3.4.В цикле вычислить и вывести на экран значение функции Y(X) и соответствующего аргумента X.
3.5.Закрыть цикл (NextX) и завершить программу.
4.Выполнить программу и выписать результаты в отчѐт (по аналогии с рис. 3.3).
x = 1 |
y = - 0.5 |
x = 1.1 |
y = - 0.425 |
x = 1.2 |
y = - 0.356 |
x = 1.3 |
y = - 0.292 |
x = 1.4 |
y = - 0.232 |
x = 1.5 |
y = - 0.177 |
x = 1.6 |
y = - 0.126 |
x = 1.7 |
y = - 0.77 |
x = 1.8 |
y = - 0.032 |
x = 1.9 |
y = 1.08 E-02 |
x = 2 |
y = 5.10 E-02 |
Рис. 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: у = ( 1) − 2−1 (y=3.743E-04).
9. Выписать результаты: значение корня (X1), значение функции в корне
(y(X1)).
Вывод: значение X1=1.875 является приближѐнным значением корня уравнения с точностью = 0,005.
Пояснения к выполнению задания второго уровня
Для реализации выхода из программы выполнить проверку длины найденного отрезка ( − ≤ ). Если это условие не выполняется, то программа должна запросить границы следующего отрезка, на котором функция имеет разные знаки на концах отрезка. Взять границы отрезка с экрана из результатов табулирования на предыдущем отрезке. Если условие выполняется, то