Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.  
  6. #define OK 1
  7.  
  8.  
  9. /* prototypy funkcii */
  10. double mocnina(double x,int n);
  11. double absolutnaHodnota (double);
  12. double taylor_tan(double x, unsigned int n);
  13. double cfrac_tan(double x, unsigned int n);
  14.  
  15.  
  16. int main(int argc, char *argv[ ])
  17. {
  18.     double x = 1.024; // uhol v radianoch
  19.     unsigned int n = 13; // rozvoj polynomu
  20.     double vysledok = tan (x);
  21.     printf("tangens je %e \n", vysledok);
  22.     taylor_tan(x,n);
  23.     cfrac_tan(x,n);
  24.     return 0;
  25. }
  26. /* vypocet mocniny cisla x na cislo n */
  27. double mocnina(double x,int n)
  28. {
  29.      if (n==0)
  30.         return 1;
  31.     else
  32.         return x*mocnina(x,n-1);
  33. }
  34. /* vytvori absolutnu hodnotu z cisla cislo */
  35. double absolutnaHodnota(double cislo)
  36. {
  37.     return cislo>0 ? cislo : -cislo;
  38. }
  39.  
  40. double taylor_tan(double x,unsigned int n)
  41. {
  42.     double citatel[13] = {1.0, 1.0, 2.0, 17.0, 62.0, 1382.0, 21844.0, 929569.0, 6404582.0, 443861162.0, 18888466084.0, 113927491862.0, 58870668456604.0};
  43.     double menovatel[13] = {1.0, 3.0, 15.0, 315.0, 2835.0, 155925.0, 6081075.0, 638512875.0, 10854718875.0, 1856156927625.0, 194896477400625.0, 49308808782358125.0, 3698160658676859375.0};
  44.     double pociatocnyPrvok = 0; // pociatocny prvok
  45.     double sucet=x; //sucet
  46.     double old_sucet= -1.0;
  47.     unsigned int i=0;
  48.     int mocnina_x= 3;
  49.  
  50.     while(absolutnaHodnota(sucet - old_sucet) > 0)
  51.     {
  52.        if (i==n)
  53.             break;
  54.         i++;
  55.        pociatocnyPrvok = pociatocnyPrvok + ((citatel[ i ]*mocnina(x,mocnina_x)) /menovatel[ i ]);
  56.        old_sucet = sucet;
  57.        sucet += pociatocnyPrvok;
  58.        mocnina_x+=2;
  59.        pociatocnyPrvok = 0;
  60.  
  61.      // pociatocnyPrvok = 0;
  62.        printf(" %d.  %e\n",i,sucet);
  63.     }
  64.     return OK;
  65. }
  66. /* vypocet pomocou zretazenych zlomkov */
  67. double cfrac_tan(double x, unsigned int n)
  68. {
  69.     double citatel_mensenec;
  70.     double menovatel_mensenec = x;
  71.     double mensenec;
  72.  
  73.     double citatel_mensitel = 1.0;
  74.     double mensitel;
  75.     int i;
  76.     for (i = 12 ; i>=1; i--) // vykona sa n krat
  77.     {
  78.         citatel_mensenec = i*2-1;
  79.         mensenec = citatel_mensenec/menovatel_mensenec;
  80.         mensitel = citatel_mensitel/(mensenec-mensitel); // vypocet
  81.         printf("%e \n",mensitel);
  82.     }
  83.     return mensitel;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement