Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define OK 1
- /* prototypy funkcii */
- double mocnina(double x,int n);
- double absolutnaHodnota (double);
- double taylor_tan(double x, unsigned int n);
- double cfrac_tan(double x, unsigned int n);
- int main(int argc, char *argv[ ])
- {
- double x = 1.024; // uhol v radianoch
- unsigned int n = 13; // rozvoj polynomu
- double vysledok = tan (x);
- printf("tangens je %e \n", vysledok);
- taylor_tan(x,n);
- cfrac_tan(x,n);
- return 0;
- }
- /* vypocet mocniny cisla x na cislo n */
- double mocnina(double x,int n)
- {
- if (n==0)
- return 1;
- else
- return x*mocnina(x,n-1);
- }
- /* vytvori absolutnu hodnotu z cisla cislo */
- double absolutnaHodnota(double cislo)
- {
- return cislo>0 ? cislo : -cislo;
- }
- double taylor_tan(double x,unsigned int n)
- {
- 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};
- 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};
- double pociatocnyPrvok = 0; // pociatocny prvok
- double sucet=x; //sucet
- double old_sucet= -1.0;
- unsigned int i=0;
- int mocnina_x= 3;
- while(absolutnaHodnota(sucet - old_sucet) > 0)
- {
- if (i==n)
- break;
- i++;
- pociatocnyPrvok = pociatocnyPrvok + ((citatel[ i ]*mocnina(x,mocnina_x)) /menovatel[ i ]);
- old_sucet = sucet;
- sucet += pociatocnyPrvok;
- mocnina_x+=2;
- pociatocnyPrvok = 0;
- // pociatocnyPrvok = 0;
- printf(" %d. %e\n",i,sucet);
- }
- return OK;
- }
- /* vypocet pomocou zretazenych zlomkov */
- double cfrac_tan(double x, unsigned int n)
- {
- double citatel_mensenec;
- double menovatel_mensenec = x;
- double mensenec;
- double citatel_mensitel = 1.0;
- double mensitel;
- int i;
- for (i = 12 ; i>=1; i--) // vykona sa n krat
- {
- citatel_mensenec = i*2-1;
- mensenec = citatel_mensenec/menovatel_mensenec;
- mensitel = citatel_mensitel/(mensenec-mensitel); // vypocet
- printf("%e \n",mensitel);
- }
- return mensitel;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement