Язык Си. Лабораторные работы / Примеры отчетов / Lab3
.docx
Лабораторная работа №3
ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
Студент гр. ИКПИ-81
Коваленко Л. А.
А. Постановка задачи
Требуется составить программу вычисления N значений функции для ряда равноотстоящих значений аргумента x, начиная от до . Функция зависит от параметра a.
Результаты вычислений оформить в виде таблицы, снабженной заголовком.
Б. Разработка алгоритма
В программе необходимо организовать арифметический цикл для того, чтобы вычислить N значений. Следует воспользоваться циклом for, как наиболее удобным. Счетчик цикла – i.
Введем промежуточную переменную , посчитаем перед выполнением цикла для упрощения вычислений. Помимо этого, заведем ещё одну промежуточную , которая будет разницей между значениями x (иначе говоря, шагом роста x). В цикле переменная будет играть роль самой x: будет увеличиваться на dx по каждой итерации цикла (т. е. выполнять роль аргумента функции, роль переменной x; это сэкономит память).
В программе должен быть предусмотрен ввод исходных данных, к которым относятся переменные N, a, ; последовательные вычисления и выводы величин i, x и y в виде оформленной таблицы.
В. Таблица идентификаторов
N |
Обозначение в задаче |
Идентификатор |
Назначение |
1 |
N |
N |
Входные данные |
2 |
a |
a |
Входные данные |
3 |
xn |
Входные и выходные данные |
|
4 |
xk |
Входные данные |
|
5 |
y |
y |
Выходные данные |
6 |
– |
dx |
Промежуточные данные |
7 |
– |
i |
|
8 |
– |
b |
Г. Схема алгоритма
Начало 0
1
Ввод
N,
a,
xn,
xk Останов Вывод
i,
x,
y 8
Вывод
заголовка таблицы 3 2 4 7 5 6
Д. Контрольный расчет
В качестве контрольного набора выберем N=3, a=3, xn=5, xk=15.
Результаты вычислений приведены ниже в таблице вычислений.
Назначение набора данных |
Набор данных |
Результаты вычислений |
||||||||
N |
a |
xn |
xk |
Ручные |
Машинные |
|||||
x |
y |
x |
y |
|||||||
Контрольный набор |
3 |
3 |
5 |
15 |
5 |
0.007 |
5 |
0.007 |
||
10 |
- 0.049 |
10 |
- 0.049 |
|||||||
15 |
-0.095 |
15 |
-0.095 |
|||||||
Рабочий набор |
15 |
2 |
1.5 |
2.9 |
1.5 |
0.194 |
1.5 |
0.194 |
||
1.6 |
0.154 |
1.6 |
0.154 |
|||||||
1.7 |
0.115 |
1.7 |
0.115 |
|||||||
1.8 |
0.078 |
1.8 |
0.078 |
|||||||
1.9 |
0.044 |
1.9 |
0.044 |
|||||||
2.0 |
0.015 |
2.0 |
0.015 |
|||||||
2.1 |
-0.009 |
2.1 |
-0.009 |
|||||||
2.2 |
-0.027 |
2.2 |
-0.027 |
|||||||
2.3 |
-0.037 |
2.3 |
-0.037 |
|||||||
2.4 |
-0.038 |
2.4 |
-0.038 |
|||||||
2.5 |
-0.030 |
2.5 |
-0.030 |
|||||||
2.6 |
-0.013 |
2.6 |
-0.013 |
|||||||
2.7 |
0.013 |
2.7 |
0.013 |
|||||||
2.8 |
0.048 |
2.8 |
0.048 |
|||||||
2.9 |
0.089 |
2.9 |
0.089 |
Е. Программа на языке Си
/* Файл Lab3.c */
#include <stdio.h>
#include <math.h>
/*
Лабораторная работа 3
ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
Студент гр. ИКПИ-81
Коваленко Л. А.
*/
int main(int argc, char **argv)
{
int i, N;
float a, b, xn, xk, y, dx;
/* Ввод исходных данных */
printf("Input N, a, xn, xk: ");
scanf("%d %f %f %f", &N, &a, &xn, &xk);
/* Вычисления и вывод результатов */
dx = (xk - xn) / (N-1);
b = pow(sin(a),2);
printf("%4s %10s %10s\n", "No", "Argument", "Function");
for (i = 1; i <= N; i++) {
y = (sin(a*xn)+b)/(4+pow(sin(xn),2));
printf("%4d %10.3f %10.3f\n", i, xn, y);
xn += dx;
}
return 0;
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.