Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по АПР за первую лаборатуорную.docx
Скачиваний:
5
Добавлен:
15.07.2019
Размер:
347 Кб
Скачать
☆

Работа № 2 Цель работы

Цель работы – изучение структур повторений, приобретение практических навыков программной реализации циклических вычислительных процессов

Зачдача № 1

Вычислить функцию с помощью получения значений вспомогательных переменных и вывести ее значения при каждом Х с шагом hx.

Описание алгоритма решения поставленной задачи

  1. Ввод а

  2. Присваиваем начальные значения - x = 2

  3. Если x меньше или равняется 3 то продолжаем иначе переходим к пункту 9.

  4. Вычисляем значения

  5. Присваиваем значение вычислений -

  6. Выводим – r

  7. Увеличиваем номинальное значение х = х + hx;

  8. Переходим к пункту 3

  9. Завершение вычислений.

Блок-схема

Текст программы с комментариями и пояснениями

#define _USE_MATH_DEFINES // Математические константы M_E, //M_PI, ...

#include <cmath> // Сложные математические

// операции

#include <iostream> // Библиотека ввода вывода

using namespace std; // её инициализация

#include "stdafx.h"

int _tmain(){ // начало главной функции

const float Hx = 0.25; // шаг цикла

double x = 2, // начальное значение Х в цикле

r, t, a; // пременные необходимые для

// вычисления значения формулы

// а - не задано ни чем, по этому вводим его с клавиатуры

cout << " a = ";

cin >> a;

cout << "\n";

while ( x <= 3) { // начало цикла

// вычисления элементов функции

t = a* sin ( x - 3 );

// вычисления результата функции

r = 2.35 * pow(t, 2) + 1/pow(M_E, t*x) - pow(a, 2);

// вывод значения Х

cout << " X = " << x;

// вывод значения функции при этом Х

cout << " --> R = " << r << "\n\n";

// Шаг

x += Hx;

}

return 0;

}

Результаты работы программы и их анализ

Результат программы при табличных значениях и вывод результатов вычислений. И аналогичные вычисления их и вывод на альтернативном сервисе .

По сколку значение переменной а не задано по условию оно было введено с клавиатуры как единица. Вычисления начались при начальном значении х = 2 которое с каждой итерацией цикла увеличивалось на шаг hx и вычисление значений переменной R по формуле заданной в условии. Повторения цикла будут повторятся до тех пор пока х не станет равно 3. Результаты с учётом погрешности хранения данных типа float идентичны.

Зачдача № 2

Вычислить функцию с помощью ряда и вывести ее значения при каждом с шагом . Суммирование ряда длится до тех пор, пока новый прибавляемый член ряда больше (по абсолютной величине), чем . Подсчитать количество вычисленных членов ряда для значения .

= Ряд =

a = -0.9 b =0.9 = 0.1

Описание алгоритма решения поставленной задачи

  1. Присваиваем начальные значения - Шаг цикла -> hx = 0.1, Нижняя грань -> A = -0.9, Верхняя грань -> B = 0.9, .

  2. Х делаем равным нижней грани

  3. Если x меньше или равняется верхней грани продолжаем иначе переходим к пункту 16

  4. Вычисляем значения y = atan(x);

  5. Присваиваем первому элементу последовательности и сумме последовательности начального значения – x

  6. Если модуль елемента последовательности больше то продолжаем иначе переходим к пункту 13

  7. Вычисление следующего члена геометрической последовательности ch = ch * (( -x * x * n) / (n + 2));

  8. Суммируем члены геометрической последовательности sum

  9. Если х равен верхней грани то считаем количество членов последовательности

  10. Увеличиваем счётчик n на 2

  11. Переходим к пункту 7

  12. Выводим значение х, функции и последовательности

  13. Увеличиваем номинальное значение х = х + hx;

  14. Переходим к пункту 4

  15. Выводим – количество членов геометрической последовательности при х равному верхней грани

  16. Завершение вычислений.

Блок-схема

Текст программы с комментариями и пояснениями

#include <cmath> // #include "math.h" - математические операции

#include "stdafx.h" // Библиотека ввода вывода

int main() // Начало главной функции

{

// Обьявление первичных констант

const float Hx = 0.1, // Шаг цикла

A = -0.9, // Нижняя грань

B = 0.9, // Верхняя грань

E = 0.000001; // Нижний проходной уровень для

// элемента последовательности

int b_count = 0; // Счётчик элементов

// последовательности при Х = В

double x, y, sum, ch, n; /*

у = arctg(х); A <= x <= B;

sum - сумма элементгов последовательности;

ch - элемент последовательности;

n - вспомогательный член последовательноси;

*/

for (x = A; x <= B + E; x += Hx) {

y = atan(x); // у = arctg(х);

ch = x; // Присваиваем первому элементу //последовательноси и сумме //последовательноси

sum = ch; //начального значения – Х

for (n = 1; fabs(ch) > E; n += 2) {

// Альтернативная формула

// ch = ch * ( ( pow(x, 2) * (-n) ) / (n + 2) );

// Вычисление следующего члена геометрической

// последовательноси

ch = ch * (( -x * x * n) / (n + 2));

// Суммирование членов геометрической

// последовательноси

sum += ch;

// Если Х = В - то считаем количество суммированых

// членов

if (x > (B - Hx)) b_count++;

}

// Выводим результаты вычислений

printf (" x = %f --> arctg(x) = %f --> sum = %f \n\n", x, y, sum);

}

// Выводим количество просумированых членов

// последовательноси при Х =В

printf (" b_count = %i \n\n", b_count);

// Выходим из главной функции оповещая о её удачном

// выполнении

getchar();

return 0;

}

Результаты работы программы и их анализ

Результат программы при табличных значениях и вывод результатов вычислений. И аналогичные вычисления их и вывод на альтернативном сервисе .

Вычисления начались при начальном значении х = -0,9 которое с каждой итерацией цикла увеличивалось на шаг hx и вычисление значений переменной sum по формуле последовательности заданной в условии. Повторения цикла будут совершатся до тех пор пока следующий член последовательности будет больше значения , и х не станет равно 0,9.

Результаты с учётом погрешности хранения данных типа float идентичны.

Выводы

Мы с целью изучения изучение структур повторений и приобретения навыков написания и приобретения практических навыков программной реализации циклических вычислительных процессов составили алгоритмическое решение задач заданных в условии и составили их простейшую реализацию на языке программирования С++. По сему мы полностью достигли цели данной лабораторной работы.