`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).