Серия C ++ Taylor и таблица Trig

Итак, я создаю программу, которая выводит значения косинуса, греха и других триггеров в одной таблице для углов от 0 до 360 с шагом 15. Как часть задания, мы должны показать как системный косинус, так и системный синус. использование заданных команд sin и cos в C ++, а также значений синуса и косинуса, вычисленных с использованием ряда Тейлора. Моя ошибка в моей программе возникает, когда я вычисляю значения синуса и косинуса, используя ряд Тейлора. Я закомментировал часть кода так, надеюсь, что это облегчит его просмотр. Любые и все предложения будут оценены. Также я выложу пример вывода программы в ее нынешнем виде.

 Angle  Sys Cos   Cosine  Sys Sin    Sine  Tangent   Cotangent   Secant Cosecant

0   1.0000   1.0000   0.0000   0.0000   0.0000      inf
15   0.9659   0.0341   0.2588  -0.9659  -0.9659     -inf
30   0.8660   0.1340   0.5000  -0.8660  -0.8660     -inf
45   0.7071   0.2929   0.7071  -0.7071  -0.7071     -inf
60   0.5000   0.5000   0.8660  -0.5000  -0.5000     -inf
75   0.2588   0.7412   0.9659  -0.2588  -0.2588     -inf
90   0.0000   1.0000   1.0000   0.0000   0.0000     -inf
105  -0.2588   1.2588   0.9659   0.2588   0.2588     -inf
120  -0.5000   1.5000   0.8660   0.5000   0.5000     -inf
135  -0.7071   1.7071   0.7071   0.7071   0.7071     -inf
150  -0.8660   1.8660   0.5000   0.8660   0.8660     -inf
165  -0.9659   1.9659   0.2588   0.9659   0.9659     -inf
180  -1.0000   2.0000   0.0000   1.0000   1.0000     -inf
195  -0.9659   1.9659  -0.2588   0.9659   0.9659     -inf
210  -0.8660   1.8660  -0.5000   0.8660   0.8660     -inf
225  -0.7071   1.7071  -0.7071   0.7071   0.7071     -inf
240  -0.5000   1.5000  -0.8660   0.5000   0.5000     -inf
255  -0.2588   1.2588  -0.9659   0.2588   0.2588     -inf
270  -0.0000   1.0000  -1.0000  -0.0000  -0.0000     -inf
285   0.2588   0.7412  -0.9659  -0.2588  -0.2588     -inf
300   0.5000   0.5000  -0.8660  -0.5000  -0.5000     -inf
315   0.7071   0.2929  -0.7071  -0.7071  -0.7071     -inf
330   0.8660   0.1340  -0.5000  -0.8660  -0.8660     -inf
345   0.9659   0.0341  -0.2588  -0.9659  -0.9659     -inf
360   1.0000  -0.0000  -0.0000  -1.0000  -1.0000   0.9501

Process returned 0 (0x0)   execution time : 0.044 s
Press any key to continue.

Исходный код:

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

// Function Prototypes..
//  These are the only function you need to write
//      See Sample functions below main()
double Factorial(double);   // For loop version
double Sine(double);        // Taylor Series Sine
double Cosine(double);      // Taylor Series Cosine
double Tangent(double);     // Tangent(x) = Sine(x)/Cosine(x)
double Cotangent(double);   // Cotangent(x) = Cosine(x)/Sine(x)
double Secant(double);      // Secant(x) = 1.0/Cosine(x)
double Cosecant(double);    // Cosecant(x) = 1.0/Sine(x)

void PrintTrigTable(void);  // Print Trignometric Table// This main function is complete
int main()
{
PrintTrigTable();

return 0;
}

// PrintTrigTable - write this function
void PrintTrigTable()
{
cout << fixed<<setw(6)<<"Angle";
cout <<fixed << setw(9) << "Sys Cos" << setw(9) << "Cosine" << setw(9) << "Sys Sin" << setw(8) << "Sine";
cout << fixed << setw(9) << "Tangent" << setw(12) << "Cotangent" << setw(9) << "Secant" << setw(9) << "Cosecant" <<endl;
for (double x = 0.0; x <= 360.0; x += 15.0)

{

cout << fixed << setw (6) << setprecision(0) << x;

cout << fixed << setw (9) << setprecision(4)<< cos(x*3.1415926/180);

cout << fixed << setw (9) << setprecision(4)<< Cosine(x);

cout << fixed << setw (9) << setprecision(4)<< sin(x*3.1415926/180);

cout << fixed << setw (9) << setprecision(4)<< Sine(x);

cout << fixed << setw (9) << setprecision(4)<< Tangent(x);

cout << fixed << setw (9) << setprecision(4)<< Cotangent(x) <<endl;

//cout << fixed << setw (9) << setprecision(4)<< Secant(x)<<endl;

//cout << fixed << setw (9) << setprecision(4)<< Cosecant(x) <<endl;

}
}
// Factorial - write this function
double Factorail(double angle)
{
double fact = 1;
for (double i =1; i <= angle; i++)
fact *=i;
return(fact);
}

// Sine - write this function
double Sine(double angle)
{
double PI = 3.1415926;
double mysin= 0, mysin2= 9999;
double anglerad = angle*PI/180.0;
double  c =1., counter, fact;
while (abs(mysin2-mysin)> .0001)
{

mysin2= mysin;
fact = 1;
for ( double k =1; k <= counter; k++)
fact *=k;
mysin= mysin + pow(-1,c)*(pow(anglerad,counter)/fact);
c = c+1;
counter = counter +2;

}
return(mysin);
}

double Cosine(double angle)
{
double PI = 3.1415926;
double mycos= 1, mycos2= 9999;
double anglerad = angle*PI/180.0;
double c =1, counter, fact;
while (abs(mycos2-mycos)> .0001)
{

mycos2= mycos;
fact = 1;
for ( double k =1; k <= counter; k++)
fact *=k;
mycos= mycos + pow(-1,c)*(pow(anglerad,counter)/fact);
c = c+1;
counter = counter +2;

}
return(mycos);
}
// Tangent - Tangent(x) = Sine(x)/Cosine(x)
double Tangent(double angle)
{
double inf = (Sine(angle)/Cosine(angle));
if (inf > 100)
{
inf =1.0/0.0;
}
else if (inf < -100)
{
inf = -1.0/0.0;
}
return inf;
}

// Cotangent - write this function -
double Cotangent(double angle)
{
double inf = (Cosine(angle)/Sine( angle));
if (inf > 100)
{
inf =1.0/0.0;
}
else if (inf < -100)
{
inf = -1.0/0.0;
}
return inf;
}

// Secant - Secant(x) = 1.0/Cosine(x)
double Secant(double angle)
{
double inf = (1.0/Cosine(angle));
if (inf > 100)
{
inf =1.0/0.0;
}
else if (inf < -100)
{
inf = -1.0/0.0;
}
return inf;
}

// Cosecant - write this function
double Cosecant(double angle)
{
double inf = (1.0/Sine(angle));
if (inf > 100)
{
inf =1.0/0.0;
}
else if (inf < -100)
{
inf = -1.0/0.0;
}
return inf;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]