Организация циклических вычислительных процессов. Отчет по лабораторной работе 3 На тему Организация циклических вычислительных процессов
Скачать 112.97 Kb.
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение Высшего профессионального образования Восточно-Сибирский государственный университет технологий и управления (ФГБОУ ВПО ВСГУТУ) Электротехнический факультет Кафедра «Системы Информатики» Дисциплина «Программирование на языке С\С++» Отчет по лабораторной работе №3 На тему: «Организация циклических вычислительных процессов» Вариант 7
Улан-Удэ 2018 1 Постановка задачиНеобходимо вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, с точностью e: Таблицу снабдить заголовком и шапкой. Каждая строка должна содержать значение аргумента, значение функции и количество просуммированных членов ряда 2 Решение задачи2.1 Формальная постановка задачиВходные данные:x – действительное число, e – заданная точность, положительное число. Выходные данные:y – значение функции в точке x, вычисленное с заданной точностью , n – количество просуммированных членов ряда. Метод решения задачи. Значение функции рассчитывается как сумма членов ряда Тейлора, больших e. Текущий член ряда an определяется по формуле . Если an >, то прибавляем его к общей сумме, иначе вычисление завершается. 2.2 ПроектированиеБлок-схема к программе представлена в разделе «Приложение». 2.3 Реализация#include #include "conio.h" #include "locale.h" #include "math.h" #include "windows.h" #define p 3.1415926 int main (){ SetConsoleCP(1251); SetConsoleOutputCP(1251); double x,e,y,a; int n = 0; printf("Введите аргумент x:\n"); scanf_s("%lf", &x); printf("Введите точность e:\n"); scanf_s("%lf", &e); a=x; y=p/2-a; /*Вывод шапки таблицы*/ printf("|-----------|----------|-----------|\n"); printf("|Аргумент | Функция | Количество|\n"); printf("|-----------|----------|-----------|\n"); /*Вычисление значения функции по заданному аргументу*/ if (fabs(x)<=1) { while (fabs(a)>e) { if (n%2= =1){ printf("| %-6lf | %-5lf | %-10d|\n", a, y, n+1); printf("|-----------|----------|-----------|\n"); } else { printf("| %-6lf | %-5lf | %-10d|\n", -a, y, n+1); printf("|-----------|----------|-----------|\n"); } n++; a=pow(x,2*n+1)/(2*n+1); if (n%2= =0) y+=a; else y-=a; } } else { printf("| Ошибка |\n"); printf("|-----------|----------|-----------|\n");} _getch(); return 0; } 2.4 ТестированиеНиже представлены результаты, полученные вручную, для x=0,5 и e=0,0001. a=-0.5, y=1.070796, n=1 a=0.41667, y=1.029130, n=2 a=-0.006250, y=1.035380, n=3 a=0.001116, y=1.034264, n=4 a=-0.000217, y=1.034481, n=5 На рисунке представлена консоль с результатами работы программы. 3 ЗаключениеБыла написана программа, вычисляющая и выводящая на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, с точностью e, в результате чего был приобретён навык применения различных циклов языка С (с известным числом повторений, с предусловием, с постусловием). 4 Приложение |