I. Тестирование некорректных режимов




МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ

(НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСТИТЕТ)

«МАИ»

 

 

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

по дисциплине: «Информатика»

на тему:

«Табулирование функции, заданной с помощью ряда Тейлора »

 

Выполнил:

студент гр. М4О-111Б-19

 

 

Проверил: Чечиков Ю.Б.

 

 

г.Москва

2019

Содержание

Оглавление

Содержание……………………………….….…………………….….…….2

Задание…………………………….….….……………………………….….3

Блок-схема…………………….………………………..……………………4

Псевдокод……………….….….…………………………………………….5

Код С++………………………………………………………………………7

Тесты…………………………….……………………………………….…11

Вывод…………………………….………….….…………………………..16


Задание

 

Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от Хнач до Хкон с количеством интервалов N, с шагом dx, с точностью eps.


 

Блок-схема

Псевдокод

функция вещ ln(арг вещ x, вещ eps, рез вещ 2*Sum)

перечисление вещ: Sum, n, slag, chisl, znam, step

chisl = x -1

znam = x + 1

n = 0

slag = chisl / znam

Sum = slag

пока (модуль(slag) > eps) делать

нц

если n!= 0

то

Sum + = slag

Конец если

n += 1

step = 2n + 1

slag = chisl step / (step * znam step)

кц

вывод 2*Sum

 

Начало

перечисление вещ: A, B, x, h, F_x, N, eps

ввод A, B

если А>B

то

сообщение об ошибке «А не может быть больше Б»

выход из программы

Конец если

если А=В

то

h = 0

N = 0

Иначе

ввод N

если N<=0 или округл(N)!= N

то

сообщение об ошибке «Количество интервалов число целое и >0»

Выход из программы

Конец если

h = (B-A)/N

Конец если

ввод eps

если eps <= 0

то

сообщение об ошибке «Эпсилон строго > 0»

Выход из программы

Конец если

цикл по i=0,N,1

нц

x = A + i*h

если x <= 0

то

печатать x, «F_x not defined»

Иначе

F_x = ln(x, eps);

печатать x, F_x

кц

Конец

 

Код С++

/******************************************************

* КАФЕДРА № 304 1 КУРС ИНФОРМАТИКА *

*-----------------------------------------------------*

* Project Type: Console Application *

* Project Name: LabWork3 *

* File Name: theThird.cpp *

* Language: C/C++ *

* Programmer(s): *

* Modified By: *

* Created: 14.11.19 *

* Last Revision: 15.11.19 *

* Comment(s): Табулирование функции, заданной при * * помощи ряда Тейлора *

******************************************************/

 

#include <iostream>

#include <math.h>

#include <iomanip>

using namespace std;

 

/*****************************************************/

/* О С Н О В Н А Я П Р О Г Р А М М А */

/*****************************************************/

 

//Будем вычислять сумму ряда через отдельную функцию

Double ln(double x, double eps)

{ //инициализация переменных

double Sum = 0; //сумма

double n = 0; //количество членов

double slag = 0; //слагаемое

double chisl = x - 1; //Замена повт. элемента

double znam = x + 1;

double step; //степень

 

slag = chisl / znam;

Sum = slag; //Если следующее условие ложно,то сумма соответствует 1-му слагаемому

while (fabs(slag) > eps)

{

if (n!= 0) //Не считаем дважды первое слагаемое

{

Sum += slag;

}

n++;

step = 2 * n + 1;

slag = pow(chisl, step) / (step * (pow(znam, step)));

}//end of while

 

return 2 * Sum; //Наша сумма вдвое меньше необходимой

}//end of ln-function

 

Int main()

{

setlocale(LC_ALL, "RUSSIAN"); //подключаем русский язык

system("color F0"); //Буквы черные,фон белый

//setlocale(LC_ALL, "C"); //отключение русского языка

 

//объявление переменных

double A; //начало отрезка

double B; //конец отрезка

double x; //аргумент

double h; //шаг

double N; //количество интервалов

double F_x; //функция

double eps; //точность для ряда

 

//от какого значения и до какого табулировать функцию

cout << "Введите начало отрезка: А = ";

cin >> A;

cout << "Введите конец отрезка: В = ";

cin >> B;

cout << "Эхопечать: А = " << A << " B = " << B << endl;

 

//входной контроль 1

if (A > B)

{

cout << "Некорректные введенные данные" << endl;

system("pause");

return 1;

}

 

if (A == B)

{

N = 0; //точка

h = 0; //шаг отсутствует

 

}

else

{ //Получаем количество интервалов

cout << "Введите количество интервалов: ";

cin >> N;

cout << "Эхопечать N = " << N << endl;

 

//Входной контроль 2

if ((N <= 0) || (round(N)!= N))

{

cout << "Количество интервалов - строго целое и положительное число,большее 0" << endl;

system("pause");

return 1;

}

//инициализация шага

h = (B - A) / N;

cout << "Эхопечать h = " << h << endl;

}

 

//получаем eps

cout << "Введите eps = ";

cin >> eps;

cout << "Эхопечать eps: eps = " << eps << endl;

 

//входной контроль 3

if (eps <= 0)

{

cout << "Эпсилон - строго положительное число, большее нуля" << endl;

system("pause");

return 1;

}

 

//оформление таблицы

setlocale(LC_ALL, "C"); //отключение русского языка

cout << char(218) << setfill(char(196)) << setw(15) << char(194) << setfill(char(196)) << setw(15) << char(191) << endl;

cout << char(179) << setfill(char(0)) << setw(14) << "x" << char(179) << setw(14) << "F" << char(179) << endl;

 

//основной цикл

for (int i = 0; i <= N; i++)

{

x = A + i * h;

if (x <= 0) //Функция при х<=0 не определена

{

cout << char(195) << setfill(char(196)) << setw(15) << char(197) << setfill(char(196)) << setw(15) << char(180) << endl;

cout << char(179) << setfill(char(0)) << setw(14) << x << char(179) << setw(14) << "not defined" << char(179) << endl;

}

else

{

F_x = ln(x, eps); //вычисляем значение

cout << char(195) << setfill(char(196)) << setw(15) << char(197) << setfill(char(196)) << setw(15) << char(180) << endl;

cout << char(179) << setfill(char(0)) << setw(14) << x << char(179) << setw(14) << F_x << char(179) << endl;

}

}

 

//оформление таблицы в конце программы

cout << char(192) << setfill(char(196)) << setw(15) << char(193) << setfill(char(196)) << setw(15) << char(217) << endl;

system("pause");

return 0;

} //end main

/********* End of theThird.cpp file***************/

Тесты

I. Тестирование некорректных режимов

1.1) Цель: проверить работоспособность программы при A>B

2) Исходные данные: A = 10000000, B = 1

3) Ожидаемый результат: ERROR! A > B

4) Полученный результат:

 

 

5) Полученный результат совпал с ожидаемым.

Вывод по тесту: тест ошибку не обнаружил.

2.1) Цель: проверить работоспособность программы при N<0

2) Исходные данные: A = 1, B = 10, N=-0.1

3) Ожидаемый результат: ERROR! N<=0

4) Полученный результат:

5) Полученный результат совпал с ожидаемым.

Вывод по тесту: тест ошибку не обнаружил.

3 .1) Цель: проверить работоспособность программы при N=0

2) Исходные данные: A = 1, B = 10, N=0

3) Ожидаемый результат: ERROR! N<=0

4) Полученный результат:

5) Полученный результат совпал с ожидаемым.

Вывод по тесту: тест ошибку не обнаружил.

4 .1) Цель: проверить работоспособность программы при eps=0

2) Исходные данные: A = 0, B = 1, N=1, eps = 0

3) Ожидаемый результат: ERROR! eps<=0

4) Полученный результат:

 

 

5) Полученный результат совпал с ожидаемым.

Вывод по тесту: тест ошибку не обнаружил.

5 .1) Цель: проверить работоспособность программы при eps<0

2) Исходные данные: A = 0, B = 1, N=1, eps = -0.1

3) Ожидаемый результат: ERROR! eps<=0

4) Полученный результат:

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-18 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: