Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- double powfonk(double, int);
- double bisection(double *varis, char *operats);
- int main()
- {
- double vars[4];
- char operat[2];
- printf("y = f(x) = x^a (+/-) x (+/-) c\n");
- printf("y Fonksiyonunu oluşturarak alt üst sınırlarını belirleyerek Bisection Metodu ile köklerini bulabilirsiniz.\n");
- printf("Fonksiyonun kuvvet değerini giriniz:");
- scanf("%lf", &vars[0]);
- printf("y = f(x) = x^%0.lf (+/-) x (+/-) c\n", vars[0]);
- printf("Fonksiyonun ilk aritmetik operatörünü giriniz (+/-):");
- scanf(" %c", &operat[0]);
- printf("y = f(x) = x^%0.lf %c x (+/-) c\n", vars[0], operat[0]);
- printf("Fonksiyonun ikinci aritmetik operatörünü giriniz (+/-):");
- scanf(" %c", &operat[1]);
- printf("y = f(x) = x^%0.lf %c x %c c\n", vars[0], operat[0], operat[1]);
- printf("Fonksiyonun c değerini giriniz aritmetik operatörünü giriniz:");
- scanf("%lf", &vars[1]);
- printf("y = f(x) = x^%0.lf %c x %c %0.f \n", vars[0], operat[0], operat[1], vars[1]);
- printf("Yukarıdaki oluşturduğunuz y fonksiyonunun alt ve üst sınırını oluşturunuz,\n");
- printf("Alt sınır :");
- scanf("%lf", &vars[2]);
- printf("Üst sınır :");
- scanf("%lf", &vars[3]);
- bisection(vars, operat);
- return 0;
- }
- //Kuvvet alan fonksyion
- double powfonk(double say, int kuv)
- {
- double npow =1;
- for(int i = 0; i< kuv; i++)
- npow *= say;
- return npow;
- }
- //Varis, dizisi elemanları; //operats, dizisi elemanları;
- //0 - Kuvvet değeri, // 0 - ilk aritmetik operatör
- //1 - Fonksiyonun c değeri, // 1 - ikinci aritmetik operatör
- //2 - Alt sınır,
- //3 - Üst sınır
- double bisection(double *varis, char *operats)
- {
- double xa = varis[2], xu = varis[3];
- double fxa, fxu, xy, fxy;
- if(operats[0] == '+' && operats[1] == '+')
- {
- fxa = powfonk(xa, varis[0]) + xa + varis[1];
- fxu = powfonk(xu, varis[0]) + xu + varis[1];
- xy = (varis[2] + varis[3]) / 2;
- fxy = powfonk(xy, varis[0]) + xy + varis[1];
- if(fxa * fxy == 0)
- {
- printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
- return 1;
- }
- else if((fxy*fxa) < 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[3] = xy;
- bisection(varis, operats);
- }
- else if((fxy*fxa) > 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[2] = xy;
- bisection(varis, operats);
- }
- }
- else if(operats[0] == '+' && operats[1] == '-')
- {
- fxa = powfonk(xa, varis[0]) + xa - varis[1];
- fxu = powfonk(xu, varis[0]) + xu - varis[1];
- xy = (varis[2] + varis[3]) / 2;
- fxy = powfonk(xy, varis[0]) + xy - varis[1];
- if(fxa * fxy == 0 || fabs(fxa-fxy) < 0.01)
- {
- printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
- return 1;
- }
- else if((fxy*fxa) < 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[3] = xy;
- bisection(varis, operats);
- }
- else if((fxy*fxa) > 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[2] = xy;
- bisection(varis, operats);
- }
- }
- else if(operats[0] == '-' && operats[1] == '+')
- {
- fxa = powfonk(xa, varis[0]) - xa + varis[1];
- fxu = powfonk(xu, varis[0]) - xu + varis[1];
- xy = (varis[2] + varis[3]) / 2;
- fxy = powfonk(xy, varis[0]) - xy + varis[1];
- if(fxa * fxy == 0 || fabs(fxa-fxy) < 0.01)
- {
- printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
- return 1;
- }
- else if((fxy*fxa) < 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[3] = xy;
- bisection(varis, operats);
- }
- else if((fxy*fxa) > 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[2] = xy;
- bisection(varis, operats);
- }
- }
- else
- {
- fxa = powfonk(xa, varis[0]) - xa - varis[1];
- fxu = powfonk(xu, varis[0]) - xu - varis[1];
- xy = (varis[2] + varis[3]) / 2;
- fxy = powfonk(xy, varis[0]) - xy - varis[1];
- if(fxa * fxy == 0 || fabs(fxa-fxy) < 0.01)
- {
- printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
- return 1;
- }
- else if((fxy*fxa) < 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[3] = xy;
- bisection(varis, operats);
- }
- else if((fxy*fxa) > 0)
- {
- printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
- varis[2] = xy;
- bisection(varis, operats);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement