close

Вход

Забыли?

вход по аккаунту

?

Лабораторная 3

код для вставкиСкачать

Лабораторная работа №3 "Циклические вычислительные процессы. Задача табулирования"
Питенко Алексей, ИКПИ-31
Вариант 17
А. Постановка задачи Необходимо решить на компьютере задачу вычисления N значений функции y = f(x) для ряда равноотстоящих значений аргумента x, начиная от значения xn вплоть до значения xk. Функция y = f(x) зависит от параметра a. Результаты вычислений следует оформить в виде таблицы, снабженной заголовком.
Б. Таблица идентификаторов
NОбозначение в задачеИдентификаторНазначение1aaКоэффициент a в функции f(x)2xnxnX начальное3xkxkX конечное4dxdxΔx (изменение X)5x_tempx_tempВременная переменная6NNКоличество точек для табулирования
В. Разработка алгоритма Решаемая задача требует организации арифметического цикла.
Необходимо организовать цикл для вычисления значений функции в N точках на отрезке [xn; xk] и оформить результаты в виде таблицы.
В программе должен быть предусмотрен ввод исходных данных, к которым относятся переменные a, N, xn, xk; вычисление значения величины y в N точках на отрезке [xn; xk] и вывод результатов вычислений (значения y), оформленных в виде таблицы.
После ввода сделаем проверку N, чтобы не было ошибок деления на 0, и были точки для вычислений.
Для вычисления нужных точек мы используем переменную dx. Это изменение x - величина, которая прибавляется к x_temp каждый шаг. Мы найдём её, разделив разницу между xn и xk на количество точек минус 1. Так как простое прибавление в цикле грозит неточностями в рассчётах, то вместо него мы используем переменную x_temp = xn+dx*i, где i - текущий шаг.
Г. Блок-схема
Д. Контрольный расчёт
Назначение набора данныхНабор данныхРезультаты вычисленийРучныхМашинныхaNxnxkx_tempyx_tempyКонтрольный3311013.271.0000003.2712615.52.875.5000002.874788103.12510.0000003.125214526764.46.0000004.40109774.857.0000004.848788Рабочий1346--4.0000000.9667725.0000000.8375296.0000000.880019
Е. Программа на языке Си
/* Файл lab03.c
Лабораторная работа №3
"Циклические вычислительные процессы. Задача табулирования"
Студент гр. ИКПИ-31 Питенко А.А.
*/
#include <stdio.h>
#include <math.h>
double a=0.0; //глобальная переменная, так как нет нужды каждый раз передавать её в функцию calculate().
double f(double x) //наша функция f(x)
{
return (pow(sin(x),5)+a*x)/(x+pow(cos(x),5));
}
int main(void)
{
double xn = 0.0, //x начальное
xk = 0.0, //x конечное
dx = 0.0, //изменение x
x_temp = 0.0; //текущее значение x (временная переменная)
int N = 0; //количество точек для табуляции
printf("Лабораторная работа #3: \n");
printf("\"Циклические вычислительные процессы. Задача табулирования\"\n");
printf("Питенко Алексей ИКПИ-31\n\n");
printf("Введите коэффициент (A): ");
scanf("%lf", &a);
printf("Введите количество точек (N): ");
scanf("%i", &N);
printf("Введите X начальное (XN): ");
scanf("%lf", &xn);
printf("Введите X конечное (XK): ");
scanf("%lf", &xk);
if(N<=0)
{
printf("Ошибка! Нет точек для определения. (N равен 0) \n");
}
else
{
if(N == 1)
{
dx = 0;
}
else
{
//вычисление delta x - изменение x за один шаг
dx = (xk-xn)/(N-1);
}
printf("Значения функции f(x): \n");
printf("----------------------------------\n");
printf("| n | x | y |\n");
printf("----------------------------------\n");
for(int i=0; i<N; i++)
{
x_temp = xn+dx*i;
printf("|%10d|%10lf|%10lf|\n", i, x_temp, f(x_temp));
}
printf("----------------------------------\n");
}
return 0;
}
1
Документ
Категория
Рефераты
Просмотров
14
Размер файла
108 Кб
Теги
лабораторная
1/--страниц
Пожаловаться на содержимое документа