`The best software.` – Yuri.
Wystarczy dodać 'input’ i gotowe. Pokazuje wyniki obliczeń i wynik dawany przez jave.
Można też dopisać kilka poprawek, aby dokładniej (!) i szybciej liczyć o czym wspominał na ćwiczeniach (dla sin/cos zostawić jako X resztę z dzielenia przez 2PI, im wyższy stopień tym niższa precyzja obliczeń, a wyniki się powtarzają co 360 stopni).
Możliwe, że wykonuje złą ilość obrotów pętli (pierwszy 'obrót’ – dla 'n = 0′ jest wykonywany przed pętlą 'for’), bo dla 'k =8′ wykonywane jest obliczanie 8 elementów (n od 0 do 7). Jak ktoś wie, że ma ich być mniej liczone, to wystarczy w 'for’ zmienić z 'i < k’ na 'i < k-1′.
public class Main
{
public static void main(String[] args)
{
int k = 9;
double x = 3; // moze byc np. 60 stopni: Math.PI / 3
// pamietamy poczatkowe X do obliczania kwadratu
double startX = x;
// pierwszy wyraz szeregu dla sinus to X, wiec go nie liczymy
double sin = x;
// pierwszy wyraz szeregu dla cosinus to 1, wiec go nie liczymy
double cos = 1;
// pamietamy jaka silnie obliczylismy przed chwila, zeby moc wyliczyc nastepna: silniaWynik = silniaWynik * silnia
double silnia = 1;
double silniaWynik = 1;
// do liczenia 'e do x' potrzebujemy innych silni i poteg
double eDoX = 1 + x;
double xEx = x;
double silniaEx = 1;
double silniaExWynik = 1;
// liczymy od 'i=1', bo dla k = 8 chcemy policzyc tylko 7 (a moze 6?) obrotow petli
for(int i = 1; i < k; i++)
{
// ponosimy potege X o jeden w gore
xEx = xEx * startX;
// zwiekszamy silnie o jeden w gore
silniaExWynik *= ++silniaEx;
// obliczamy kolejny element szeregu 'e do x'
eDoX += xEx / silniaExWynik;
// ponosimy potege X o jeden w gore
x = x * startX;
// zwiekszamy silnie o jeden w gore
silniaWynik *= ++silnia;
if(i % 2 == 0)
{
// dla parzystych dodajemy
cos += (1 / silniaWynik) * x;
}
else
{
// dla nie parzystych odejmujemy
cos -= (1 / silniaWynik) * x;
}
// ponosimy potege X o jeden w gore
x = x * startX;
// zwiekszamy silnie o jeden w gore
silniaWynik *= ++silnia;
if(i % 2 == 0)
{
sin += (1 / silniaWynik) * x;
}
else
{
sin -= (1 / silniaWynik) * x;
}
}
System.out.println(sin + " | " + Math.sin(startX));
System.out.println(cos + " | " + Math.cos(startX));
System.out.println(eDoX + " | " + Math.pow(Math.E, startX));
}
}
Pamiętajcie, żeby nie ściągać, a ten materiał jest tylko w celach nauki (sam oddaje inny).