Работа № 2 Цель работы
Цель работы – изучение структур повторений, приобретение практических навыков программной реализации циклических вычислительных процессов
Зачдача № 1
Вычислить функцию с помощью получения значений вспомогательных переменных и вывести ее значения при каждом Х с шагом hx.
Описание алгоритма решения поставленной задачи
Ввод а
Присваиваем начальные значения - x = 2
Если x меньше или равняется 3 то продолжаем иначе переходим к пункту 9.
Вычисляем значения
Присваиваем значение вычислений -
Выводим – r
Увеличиваем номинальное значение х = х + hx;
Переходим к пункту 3
Завершение вычислений.
Блок-схема
Текст программы с комментариями и пояснениями
#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
Описание алгоритма решения поставленной задачи
Присваиваем начальные значения - Шаг цикла -> hx = 0.1, Нижняя грань -> A = -0.9, Верхняя грань -> B = 0.9, .
Х делаем равным нижней грани
Если x меньше или равняется верхней грани продолжаем иначе переходим к пункту 16
Вычисляем значения y = atan(x);
Присваиваем первому элементу последовательности и сумме последовательности начального значения – x
Если модуль елемента последовательности больше то продолжаем иначе переходим к пункту 13
Вычисление следующего члена геометрической последовательности ch = ch * (( -x * x * n) / (n + 2));
Суммируем члены геометрической последовательности sum
Если х равен верхней грани то считаем количество членов последовательности
Увеличиваем счётчик n на 2
Переходим к пункту 7
Выводим значение х, функции и последовательности
Увеличиваем номинальное значение х = х + hx;
Переходим к пункту 4
Выводим – количество членов геометрической последовательности при х равному верхней грани
Завершение вычислений.
Блок-схема
Текст программы с комментариями и пояснениями
#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 идентичны.
Выводы
Мы с целью изучения изучение структур повторений и приобретения навыков написания и приобретения практических навыков программной реализации циклических вычислительных процессов составили алгоритмическое решение задач заданных в условии и составили их простейшую реализацию на языке программирования С++. По сему мы полностью достигли цели данной лабораторной работы.
