IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Josef Vitásek:11.6.2016 16:09

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.6.2016 16:09
Avatar
Lako
Člen
Avatar
Lako:11.6.2016 16:39

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

 
Nahoru Odpovědět
11.6.2016 16:39
Avatar
Odpovídá na Josef Vitásek
Neaktivní uživatel:11.6.2016 16:42

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.6.2016 16:42
Neaktivní uživatelský účet
Avatar
Josef Vitásek:11.6.2016 16:46

Ú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.6.2016 16:46
Avatar
Odpovídá na Josef Vitásek
Neaktivní uživatel:11.6.2016 16:56

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.6.2016 16:56
Neaktivní uživatelský účet
Avatar
Odpovídá na Josef Vitásek
Libor Šimo (libcosenior):11.6.2016 17:21

Factorial sa pocita v cykle, tak asi preto.

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

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.6.2016 18:36
Avatar
Odpovídá na Josef Vitásek
Libor Šimo (libcosenior):11.6.2016 19:08

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

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

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.6.2016 19:14
 
Nahoru Odpovědět
11.6.2016 19:12
Avatar
Josef Vitásek:11.6.2016 23:14

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.6.2016 23:14
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Josef Vitásek
Petr Šťastný:12.6.2016 12:53

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.6.2016 12:54
 
Nahoru Odpovědět
12.6.2016 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.