Косинус через ряд Тейлора - C (СИ)
Формулировка задачи:
Вот надо написать функцию косинуса через тейлора без математических библиотек. Но так как я еще нуб, у меня не правильно)). Поправьте плз. Желательно с комментариями или обьяснениями.
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
int fact (n)
{
if (n==1)
return 1;
else return fact (n-1)*n;
}
int main(void)
{
float cos;
int n=1;
clrscr();
float x;
int i;
printf ("input x");
scanf ("%2f", x);
for (i=0;i<10;i++) {
cos+=((-1)*n)*(x*2*n+1)/(fact(2*n+1));
n*=2;
}
printf ("%5f",cos);
return 0;
}Решение задачи: «Косинус через ряд Тейлора»
textual
Листинг программы
#include <stdio.h>
#define E 10//точность
int main()
{
double x;//сам х
double cos = 1;//общая сумма
double down = 1;//знаменатель(факториал)
double up = x*x;//числитель(увеличение степени х на 2)
int i;
printf("Enter x: ");
scanf("%lf", &x);
for (i = 2; i < E; i+=2)//сразу с 2 и по 2 вбудущем
{
up *= (-1)*up;//контроль -1 и увеличение степени х
down *= (i-1) * i; //факториал
cos += up / down; //добавление следующего компонента
}
printf("result: %lf\n", x);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки для работы с файлами и вывода данных
- Определение константы точности вычислений
- Ввод значения переменной x с клавиатуры
- Инициализация переменных: cos — общая сумма down — знаменатель (факториал) up — числитель (увеличение степени х на 2)
- Цикл от 2 до точности-1 с шагом 2
- Вычисление знаменателя (факториала)
- Вычисление числителя (увеличение степени х на 2)
- Вычисление значения косинуса путем добавления следующего компонента ряда Тейлора
- Вывод результата на экран
- Возврат 0, чтобы указать, что программа успешно завершилась