Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Cos x v C#

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

Aktivity (1)
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
Lukas C#
Redaktor
Avatar
Odpovídá na Josef Vitásek
Lukas C#: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
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
Lukas C#
Redaktor
Avatar
Odpovídá na Josef Vitásek
Lukas C#: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
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 Stastny
Redaktor
Avatar
Odpovídá na Josef Vitásek
Petr Stastny: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.