- •Лабораторная работа 4 Структуры повторения
- •4.1. Оператор цикла while
- •4.2. Оператор цикла do. .While
- •Using namespace std;
- •Int main()
- •Return 0;
- •4.3. Оператор цикла for
- •Int main()
- •Return 0;
- •4.4. Операторы break и continue
- •Return 0;
- •Using namespace std;
- •Return 0;
- •4.5. Вложенные циклы
- •Using namespace std;
- •Int main()
- •Return 0;
- •4.6. Пример решения задачи. Вычисление синуса
- •Int main () {
- •4.7. Задачи для самостоятельного решения
4.6. Пример решения задачи. Вычисление синуса
Как
известно, функция
может быть вычислена в виде ряда
.
На практике при вычислении значения функции соответствующий ряд ограничивают, т.е. рассматривают приближенное выражение
Воспользуемся этим выражением при создании программы, в которой вычисляется значение функции . Аргумент x вводится пользователем с клавиатуры, а параметр N описывается как целочисленная константа. Программный код приведен ниже в листинге.
// Calc_Sinx.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
//Граница ряда:
const int N=100;
Int main () {
//Аргумент функции и "рабочие" переменные:
double x,q,s=0,s1;
//Индексная переменная:
int n;
cout << "Enter x = ";
cin >> x;
q=x;
//Вычисление синуса:
for(n=1;n<=N;n++) {
s+=q;
q*=(-1)*x*x/(2*n)/(2*n+1);}
//Результат:
cout << "sin ("<< x <<") = "<< s << endl;
//Проверка правильности вычисления
s1 = sin(x);
cout << "s1= " << s1<< endl;
cin >> x;
return 0;
}
Желающие могут сравнить результат вычисления с помощью описанного алгоритма с результатом вычисления синуса через встроенную функцию.
Обращаем внимание читателя на способ вычисления ряда. Значение суммы ряда записывается в переменную s. В рамках оператора цикла эта переменная изменяется на величину добавки q. Эта добавка фактически является слагаемым ряда, в каждом цикле она меняется. При значении индексной переменной п добавка равняется
Формально для расчета добавки можно отдельно вычислить х2п+1 и (2п + 1)!, но это плохой подход. Дело в том, что при больших n значение (2n + 1)! очень велико, большим может быть и значение выражения х2п+1. Значения быстро становятся настолько большими, что выходят за допустимые пределы. При всем этом добавка qn с увеличением п уменьшается: добавка является результатом деления одного большого числа на другое, еще большее число. Поэтому в программе для вычисления добавки используется итерационное соотношение
Именно это соотношение использовано в программе, благодаря чему удается избежать проблемы расчета больших числовых значений.
4.7. Задачи для самостоятельного решения
Назовите и опишите основное назначение каждого из трех выражений, входящих в состав оператора цикла for.
Создайте цикл while, который будет выводить на экран чисел от 100 до 110.
Создайте цикл do..while, который будет выводить на экран сумму чисел от 10 до 11.
Написать программу для вычисления косинуса с заданной точностью
:
.
Написать программу для вычисления экспоненты с заданной точностью :
.
Написать программу для вычисления гиперболического косинуса с заданной точностью :
.
Написать программу для вычисления гиперболического синуса с заданной точностью :
.
Написать программу для вычисления логарифма с заданной точностью :
.
