/** * Spocita tangens pomoci cfrac_tan() se zadanou presnosti * @param a Uhel pro vypocet * @param eps Presnost vypoctu * @return Tangens zadaneho uhlu */ double getAcurateTan(double a, double eps) { double prevTan = 0.0; double actTan = cfrac_tan(a, eps); for (unsigned int i = 2; my_fabs(actTan - prevTan) > eps; i++) { prevTan = actTan; actTan = cfrac_tan(a, i); } return actTan; }
/** * Spocita tangens nekolika zpusoby a vypocita absolutni chyby * @param val Hodnoty pro vypocet */ void calculateTan(TValue val) { double tan_lib = tan(val.A); double tan_taylor; double tan_cfrac; double te; double ce; for (unsigned int i = val.N; i <= val.M; i++) { tan_taylor = taylor_tan(val.A, i); tan_cfrac = cfrac_tan(val.A, i); te = my_fabs(tan_taylor - tan_lib); ce = my_fabs(tan_cfrac - tan_lib); printf("%d %e %e %e %e %e\n", i, tan_lib, tan_taylor, te, tan_cfrac, ce); } }
int tang(int argc, char * argv[]) { double x; unsigned int n,i; char * err; if (argc >5) { fprintf(stderr, "ERROR bolo zadanych vela argumentov pre funkciu --tan \n");// ak je zadanych viac argumentov ako je dane pre funkciu vypise chybu return EXIT_FAILURE; } x = strtod(argv[2],&err); //osterenie chybneho vstupu if (err == argv[2]) { fprintf(stderr,"ERROR zaddana zla hodnota\n"); return EXIT_FAILURE; } n = atoi(argv[4]); //posledny prvok rozsahu i= atoi(argv[3]);// prvy prvok rozsahu if (x>1.4) { fprintf(stderr, "ERROR zadany zly rozsah parametrov\n");// ak je zadany zly rozsah parametrov tak vypise chybove hlasenie return EXIT_FAILURE; } if (i>n || n >14) { fprintf(stderr, "ERROR zadany zly rozsah\n"); // ak je zadany zly rozsah tak vypise chybove hlasenie return EXIT_FAILURE; } for(;i<=n;i++) printf ("%d %e %e %e %e %e\n",i , tan(x), taylor_tan(x,i-1), MYABS(tan(x) - taylor_tan(x,i-1) ) , cfrac_tan(x,i),MYABS((tan(x) - cfrac_tan(x,i)) )); // vypis funkcie --tan return EXIT_SUCCESS; }
int range(int argc, char * argv[]) { double x,vyska,vzdialenost; unsigned int n; char *err; if ((strcmp(argv[1],"-m")==0)) // ak je zadany argument -m prebehne vypoccet vzdialenosti { if (argc >4) { fprintf(stderr, "ERROR bolo zadanych vela argumentov pre funkciu -m\n");// ak je zadanych viac argumentov ako je dane pre funkciu vypise chybu return EXIT_FAILURE; } else if (argc==3 || argc == 4) { vyska=1.5; n=ITERNUMB; //lebo po 10 iteracii uz nemame odchylku x = strtod(argv[2],&err); //osterenie chybneho vstupu if (err == argv[2]) { fprintf(stderr,"ERROR zaddana zla hodnota\n"); return EXIT_FAILURE; } printf("%.10e\n",vyska/(cfrac_tan(x,n)) ); vzdialenost=vyska/cfrac_tan(x,n);// vypocet vzdialenosti pomocou zretazenych zlomkov if (argc==4) { x = strtod(argv[3],&err); //osterenie chybneho vstupu if (err == argv[3]) { fprintf(stderr,"ERROR zaddana zla hodnota\n"); return EXIT_FAILURE; } printf("%.10e\n",(cfrac_tan(x,n)*vzdialenost+vyska ));// vypocet vysky pomocou zretazenych zlomkov } } } else if ((strcmp(argv[1],"-c")==0) && (strcmp(argv[3],"-m")==0) )// ak je zadany aj parameter -c tak zmenime vysku meracieho pristroja pri merani vzdialenosti a vysky { if(argc==5 || argc == 6) { vyska = strtod(argv[2],&err); //osterenie chybneho vstupu if (err == argv[2]) { fprintf(stderr,"ERROR zaddana zla hodnota\n"); return EXIT_FAILURE; } if (vyska>100 || vyska <0 )// osetrenie zadanych hodnout podla zadania { fprintf(stderr,"ERROR zadany zly rozsah"); return EXIT_SUCCESS; } n=ITERNUMB; //lebo po 10 iteracii uz nemame odchylku x = strtod(argv[4],&err); if (err == argv[4]) { fprintf(stderr,"ERROR zaddana zla hodnota\n"); return EXIT_FAILURE; } printf("%.10e\n",vyska/(cfrac_tan(x,n)) ); vzdialenost=vyska/cfrac_tan(x,n);// vypocet vzdialenosti objektu pomocou zretazenych zlomkov if (argc==6) { x = strtod(argv[5],&err); //osterenie chybneho vstupu if (err == argv[5]) { fprintf(stderr,"ERROR zaddana zla hodnota\n"); return EXIT_FAILURE; } printf("%.10e\n",(cfrac_tan(x,n)*vzdialenost+vyska ));//vypocet vysky objektu pomocou zretazenych zlomkov a predchadzajuceho vypoctu vzdialenosti } } } else { fprintf(stderr, "ERROR neplatny argument, pre napovedu spustite program v tvar /proj1 --help\n"); //ak je zadany argument ini ako su povolee vypise chybu return EXIT_FAILURE; } return EXIT_SUCCESS ; }