лабы для 28 варианта / Лабораторная работа№3
.docxСанкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича
ПРОГРАММИРОВАНИЕ
Отчёт по Лабораторной Работе №3
тема: «Циклические вычислительные процессы.
Задача табулирования»
Санкт-Петербург 2020
А. Постановка задачи(28 вариант)
Требуется составить программу вычисления N значений функции y= для ряда равноотстоящих значений аргумента x, начиная от до . Функция y= зависит от параметра a.
y =
Результаты вычислений следует оформить в виде таблицы, снабженной заголовком.
Б. Разработка алгоритма
В программе необходимо организовать арифметический цикл для того, чтобы вычислить N значений. Следует воспользоваться циклом for, как наиболее удобным. Счетчик цикла – i.
Заведем промежуточную dx = , которая будет разницей между значениями x (иначе говоря, шагом роста x). В цикле переменная будет играть роль самой x: будет увеличиваться на dx.
В программе должен быть предусмотрен ввод исходных данных, к которым относятся переменные N, a, , ; последовательные вычисления и выводы величин i, x и y в виде оформленной таблицы.
В. Таблица идентификаторов
Обозначение в задаче |
Идентификатор |
Назначение |
N |
n |
Количество расчетных точек |
a |
a |
Параметр функции |
x |
xn |
Начальное значение аргумента |
x |
xk |
Конечное значение аргумента |
- |
dx |
Шаг изменения аргумента |
x |
x |
Текущее значение аргумента |
y |
y |
Вычисленное значение аргумента |
- |
i |
Счетчик цикла |
Г. Схема алгоритма
Д. Контрольный расчет
В качестве контрольного набора выберем N=3, a=3, xn=5, xk=15.
Результаты вычислений приведены ниже в таблице вычислений.
Назначение набора данных |
Набор данных |
Результаты вычислений |
||||||
N |
a |
xn |
xk |
ручных |
машинных |
|||
X |
y |
x |
y |
|||||
Контрольный набор |
3 |
3 |
5 |
15 |
5 |
2.512 |
5 |
2.512 |
10 |
1.545 |
10 |
1.545 |
|||||
15 |
1.116 |
15 |
1.116 |
|||||
Рабочий набор |
12 |
2,5 |
-1 |
1 |
-1 |
9.934 |
-1 |
9.934 |
-0,818 |
8.591 |
-0,818 |
8.591 |
|||||
-0,636 |
7.551 |
-0,636 |
7.551 |
|||||
-0,455 |
6.726 |
-0,455 |
6.726 |
|||||
-0,273 |
6.059 |
-0,273 |
6.059 |
|||||
-0,091 |
5.511 |
-0,091 |
5.511 |
|||||
0,091 |
5.054 |
0,091 |
5.054 |
|||||
0,273 |
4.668 |
0,273 |
4.668 |
|||||
0,455 |
4.338 |
0,455 |
4.338 |
|||||
0,636 |
4.053 |
0,636 |
4.053 |
|||||
0,818 |
3.804 |
0,818 |
3.804 |
|||||
1 |
3.586 |
1 |
3.586 |
Е. Программа на языке Си
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double xn, xk, a, x, y, dx;
int n,i;
printf("n= ");
scanf("%d", &n);
printf("a= ");
scanf("%lf", &a);
printf("xn= ");
scanf("%lf", &xn);
printf("xk= ");
scanf("%lf", &xk);
dx = (xk - xn) / (n - 1);
x=xn;
printf("| # | X | Y |\n");
printf("|----|-------|-------|\n");
for(i = 1; i <= n; i++)
{
y = (exp(-x)+exp(a))/(a+x);
printf("| %2d | %.3lf | %.3lf |\n", i, x, y);
x += dx;
}
return 0;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.