Вычисление косинуса
Приводится пример программы для вычисления тригонометрической функции косинус, разложенной в ряд Маклорена.
$$cos\left(x \right)=1-x^{2}/2!+x^{4}/4!-x^{6}/6!+...$$
В программе создается несколько функций. В частности, функцией set() заполняется массив с членами ряда. Аргументами функции указываются имя заполняемого массива, верхняя граница ряда (на единицу меньше числа элементов в массиве), а также аргумент косинуса. Именно в этой функции выполняются основные вычисления: в частности, рассчитываются чле ны ряда. Функция show() используется для отображения элементов массива, пере данного первым аргументом функции. Второй аргумент функции - верхняя граница ряда.
С помощью функции МуСоs() вычисляется приближенное значение для косинуса. Аргументами функции передается имя массива и верхний индекс в сумме ряда. Результатом функции является сумма всех элементов массива от начального до элемента с индексом, определяемым вторым аргументом функции МуСоs(). В главном методе программы вводится верхняя граница ряда для вычисления косинуса, а также непосредственно аргумент косинуса. После этого создается динамический массив, и он заполняется значениями - членами ряда. Полученный массив выводится на экран. На основе полученного ряда в разных приближениях (разное количество членов ряда) вычисляется косинус указанного пользователем аргумента. Выводится пять приближенных значений. Одновременно с вычислением косинуса вычисляется ошибка, связанная с использованием для вычисления косинуса функции пользователя вместо встроенной функции. В конце выводится значение для косинуса, рассчитанное с помощью встроенной
функции.
#include#include using namespace std; //Функция, для заполнения массива: void set(double *a,int N,double x){ int i; a[0]=1; for(i=1; i < = N; i++) a[i]=a[i-1]*(-1)*x*x/(2*i-1)/(2*i); } //Функция для отображения массива: void show(double *a,int k){ int i; for(i=0; i < = k; i++) cout << a[i]<<" "; cout << endl;} //Функция для вычисления косинуса: double MyCos(double *a,int k){ double s=0; int i; for(i=0; i < = k; i++) s+=a[i]; return s;} int main(){ int i,N; double x; double *a; //Ввод параметров: cout << "Enter x = "; cin >> x; cout << "Enter N = "; cin >> N; //Создание массива: a=new double[N+1]; //Заполнение массива: set(a,N,x); //Отображение массива: show(a,N); //Разные приближения для косинуса и погрешность (в %): for(i=1; i < = 5; i++) cout << N*i/5 << " : " << MyCos(a,N*i/5) << " : " << (1-MyCos(a,N*i/5)/cos(x))*100 << "%\n"; //Точное (вычисленное встроенной функцией) значение: cout << "cos(x) = " << cos(x) << endl; return 0; }