Użytkownik: reason
Tytuł: Cosinus
Język: C
Data: 13 mar 2010, 16:15
Link: http://3paste.com/s/186r/c/cosinus
Ocena:
  1. #include <stdio.h>
  2. #include<math.h>
  3.  
  4. /* Napisać program tabelaryzujący funkcję cosinus w zadanym przedziale.
  5. Tabela powinna zawierać 3 kolumny: wartość argumentu x, wartość cos(x) policzoną z wykorzystaniem
  6. funkcji bibliotecznej oraz wartość cos(x) policzoną z rozwinięcia w szereg Taylora. */
  7.  
  8. float pochcos(int x, int i) {
  9. if(i%4 == 0) return cos(3.14*x/180);
  10. else if (i%4 == 1) return -sin(3.14*x/180);
  11. else if (i%4 == 2) return -cos(3.14*x/180);
  12. else return sin(3.14*x/180);
  13. }
  14.  
  15. float taylor(int x) {
  16. float wynik = 0; /* xi = x do potęgi i-tej; isilnia = silnia i-tej liczby */
  17. int xi = 1, i = 0, isilnia = 1;
  18. for (i = 0; i < 7; i++) {
  19. wynik=wynik+pochcos(x,i)*xi/isilnia; /* pochcos(x,i) = i-ta pochodna cos(x); */
  20. isilnia=isilnia*(i+1);
  21. xi=xi*x*3.14/180;
  22. }
  23. return wynik;
  24. }
  25.  
  26. int main(void) {
  27. int i, j, a, b, c;
  28. float tab[360];
  29. printf ("Podaj przedzial a, b oraz wielkosc skoku c (w stopniach):");
  30. scanf ("%d%d%d", &a, &b, &c);
  31. printf ("Kąt(st.)\tCos kąta (math)\t\tCos kąta (Taylor)\n");
  32. j = 0;
  33. for (i = a; i <= b; i+=c) {
  34. tab[j] = cos(3.14*i/180);
  35. printf ("%d \t\t %f \t\t %f\n", i, tab[j], taylor(i));
  36. j++;
  37. }
  38.  
  39.  
  40. return 0;
  41. }
© 2008 3paste.com Pytania i odpowiedzi | Kontakt | Zmiany 3paste_Poland 3paste_England