Diskuze: Cos x v C#

C# .NET .NET (C# a Visual Basic) Cos x v C# American English version English version

Avatar
Josef Vitásek:

Ahoj,
neví někdo prosím jak vypočítat kosinus x v C#? Dostali jsme za úkol vytvořit program, který vypočítá kosinus zadaného úhlu s požadovanou přesností, ale podle Taylorova rozvoje tj. cos x = 1- x2/2! + x4/4! - x6/6! ... Nikde o tom nemůžu najít ani zmínku.
Děkuju za pomoc

 
Odpovědět 11. června 16:09
Avatar
Lako
Člen
Avatar
Lako:

Math.Cos ?
Úhel je v radiánech..

 
Nahoru Odpovědět 11. června 16:39
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Josef Vitásek
Lukas C#:

Nevím jak jste daleko v C#, ale tohle je naprosto elementární FOR cyklus:

double x = zadaný_úhel;
double cosinusX = 0;
for(int n = 0; n < pozadovana_pres­nost; n++)
{
cosinusX += Math.Pow(x, 2*n) / Factorial(2*n);
}

Metodu Factorial() si musíš napsat sám, ta v C# pokud vím není. Ale na Internetu je doslova miliarda takových funkcí, takže si je můžeš okopírovat.

 
Nahoru Odpovědět 11. června 16:42
Avatar
Josef Vitásek:

Úhel je zadaný ve stupních. Nejsme v C# zatím nijak daleko ale co si pamatuju tak nám učitel říkal, že tam je dokonce nějak for cyklus vloženej do dalšího for cyklu tak sám nevím. Nečekal jsem, že to bude na čtyři řádky. :D
Moc děkuju

 
Nahoru Odpovědět 11. června 16:46
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Josef Vitásek
Lukas C#:

Tak ještě než dostanete další domácí úkol, tak si projdi seriál o C#, základní konstrukce:http://www.itnetwork.cz/csharp/zaklady
(snad kromě 1. dílu). Budeš mít život mnohem lehčí :-)

 
Nahoru Odpovědět 11. června 16:56
Avatar
Odpovídá na Josef Vitásek
Libor Šimo (libcosenior):

Factorial sa pocita v cykle, tak asi preto.

Nahoru Odpovědět 11. června 17:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Josef Vitásek:

Stejně jsem se znovu dostal do potíží... I když normálně zadám ten cyklus pro výpočet faktoriálu, tak mi to celý skončí u 2! a dělí jenom dvojkou. Proč? Já už to fakt nedávám :D

 
Nahoru Odpovědět 11. června 18:36
Avatar
Odpovídá na Josef Vitásek
Libor Šimo (libcosenior):

Používaš funkciu pre výpočet faktoriálu?

Nahoru Odpovědět 11. června 19:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Josef Vitásek:

Použil jsem toto:
static long Factorial(long number)
{
if( number <= 1 )
return 1;
else
return number * Factorial(number - 1);
}
Prostě mi to nechce "sežrat" ten faktoriál (2*n).

Editováno 11. června 19:14
 
Nahoru Odpovědět 11. června 19:12
Avatar
Josef Vitásek:

static void Main(string[] args)
{Console.Write­Line("Tento program vypočítá kosinus zadaného úhlu s požadovanou přesností");
Console.Write("Za­dejte velikost úhlu v radiánech:");
float a = float.Parse(Con­sole.ReadLine());
Console.Write("Za­dejte požadovanou přesnost výpočtu:");
float b = float.Parse(Con­sole.ReadLine());
double x = a;
double cosinusX = 0;
for (int n = 0 ; n < b ; n++)
{
cosinusX = Math.Pow(-1, n) * ( Math.Pow(x, 2 * n) / Factorial(2 * n) );

}
Console.Write("Ko­sinus zadaného úhlu je:" + Math.Cos(x));
Console.ReadKey();}
static int Factorial(int m)
{
if (m <= 1) return 1;
else return Factorial(m - 1);}
}

}

Může to být takhle a nebo to jenom obchází celý ten program a na konci to spočítá hodnotu pomocí Math.Cos?

 
Nahoru Odpovědět 11. června 23:14
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Josef Vitásek
Petr Stastny:

Používej tlačítko pro vložení kódu (to </> nahoře, nebo CTRL+K)

Kód se jinak nedá číst.

1. kód

static long Factorial(long number)
{
if( number <= 1 )
return 1;
else
return number * Factorial(number - 1);
}

2. kód

static void Main(string[] args)
{Console.WriteLine("Tento program vypočítá kosinus zadaného úhlu s požadovanou přesností");
Console.Write("Zadejte velikost úhlu v radiánech:");
float a = float.Parse(Console.ReadLine());
Console.Write("Zadejte požadovanou přesnost výpočtu:");
float b = float.Parse(Console.ReadLine());
double x = a;
double cosinusX = 0;
for (int n = 0 ; n < b ; n++)
{
cosinusX = Math.Pow(-1, n) * ( Math.Pow(x, 2 * n) / Factorial(2 * n) );

}
Console.Write("Kosinus zadaného úhlu je:" + Math.Cos(x));
Console.ReadKey();}
static int Factorial(int m)
{
if (m <= 1) return 1;
else return Factorial(m - 1);}
}

}
Editováno 12. června 12:54
 
Nahoru Odpovědět 12. června 12:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.