Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. double powfonk(double, int);
  4. double bisection(double *varis, char *operats);
  5.  
  6. int main()
  7. {
  8. double vars[4];
  9. char operat[2];
  10. printf("y = f(x) = x^a (+/-) x (+/-) c\n");
  11. printf("y Fonksiyonunu oluşturarak alt üst sınırlarını belirleyerek Bisection Metodu ile köklerini bulabilirsiniz.\n");
  12. printf("Fonksiyonun kuvvet değerini giriniz:");
  13. scanf("%lf", &vars[0]);
  14. printf("y = f(x) = x^%0.lf (+/-) x (+/-) c\n", vars[0]);
  15. printf("Fonksiyonun ilk aritmetik operatörünü giriniz (+/-):");
  16. scanf(" %c", &operat[0]);
  17. printf("y = f(x) = x^%0.lf %c x (+/-) c\n", vars[0], operat[0]);
  18. printf("Fonksiyonun ikinci aritmetik operatörünü giriniz (+/-):");
  19. scanf(" %c", &operat[1]);
  20. printf("y = f(x) = x^%0.lf %c x %c c\n", vars[0], operat[0], operat[1]);
  21. printf("Fonksiyonun c değerini giriniz aritmetik operatörünü giriniz:");
  22. scanf("%lf", &vars[1]);
  23. printf("y = f(x) = x^%0.lf %c x %c %0.f \n", vars[0], operat[0], operat[1], vars[1]);
  24. printf("Yukarıdaki oluşturduğunuz y fonksiyonunun alt ve üst sınırını oluşturunuz,\n");
  25. printf("Alt sınır :");
  26. scanf("%lf", &vars[2]);
  27. printf("Üst sınır :");
  28. scanf("%lf", &vars[3]);
  29. bisection(vars, operat);
  30. return 0;
  31. }
  32.  
  33. //Kuvvet alan fonksyion
  34. double powfonk(double say, int kuv)
  35. {
  36. double npow =1;
  37. for(int i = 0; i< kuv; i++)
  38. npow *= say;
  39. return npow;
  40. }
  41.  
  42. //Varis, dizisi elemanları; //operats, dizisi elemanları;
  43. //0 - Kuvvet değeri, // 0 - ilk aritmetik operatör
  44. //1 - Fonksiyonun c değeri, // 1 - ikinci aritmetik operatör
  45. //2 - Alt sınır,
  46. //3 - Üst sınır
  47. double bisection(double *varis, char *operats)
  48. {
  49. double xa = varis[2], xu = varis[3];
  50. double fxa, fxu, xy, fxy;
  51. if(operats[0] == '+' && operats[1] == '+')
  52. {
  53. fxa = powfonk(xa, varis[0]) + xa + varis[1];
  54. fxu = powfonk(xu, varis[0]) + xu + varis[1];
  55. xy = (varis[2] + varis[3]) / 2;
  56. fxy = powfonk(xy, varis[0]) + xy + varis[1];
  57. if(fxa * fxy == 0)
  58. {
  59. printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
  60. return 1;
  61. }
  62. else if((fxy*fxa) < 0)
  63. {
  64. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  65. varis[3] = xy;
  66. bisection(varis, operats);
  67. }
  68. else if((fxy*fxa) > 0)
  69. {
  70. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  71. varis[2] = xy;
  72. bisection(varis, operats);
  73. }
  74. }
  75. else if(operats[0] == '+' && operats[1] == '-')
  76. {
  77. fxa = powfonk(xa, varis[0]) + xa - varis[1];
  78. fxu = powfonk(xu, varis[0]) + xu - varis[1];
  79. xy = (varis[2] + varis[3]) / 2;
  80. fxy = powfonk(xy, varis[0]) + xy - varis[1];
  81. if(fxa * fxy == 0 || fabs(fxa-fxy) < 0.01)
  82. {
  83. printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
  84. return 1;
  85. }
  86. else if((fxy*fxa) < 0)
  87. {
  88. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  89. varis[3] = xy;
  90. bisection(varis, operats);
  91. }
  92. else if((fxy*fxa) > 0)
  93. {
  94. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  95. varis[2] = xy;
  96. bisection(varis, operats);
  97. }
  98. }
  99. else if(operats[0] == '-' && operats[1] == '+')
  100. {
  101. fxa = powfonk(xa, varis[0]) - xa + varis[1];
  102. fxu = powfonk(xu, varis[0]) - xu + varis[1];
  103. xy = (varis[2] + varis[3]) / 2;
  104. fxy = powfonk(xy, varis[0]) - xy + varis[1];
  105. if(fxa * fxy == 0 || fabs(fxa-fxy) < 0.01)
  106. {
  107. printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
  108. return 1;
  109. }
  110. else if((fxy*fxa) < 0)
  111. {
  112. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  113. varis[3] = xy;
  114. bisection(varis, operats);
  115. }
  116. else if((fxy*fxa) > 0)
  117. {
  118. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  119. varis[2] = xy;
  120. bisection(varis, operats);
  121. }
  122. }
  123. else
  124. {
  125. fxa = powfonk(xa, varis[0]) - xa - varis[1];
  126. fxu = powfonk(xu, varis[0]) - xu - varis[1];
  127. xy = (varis[2] + varis[3]) / 2;
  128. fxy = powfonk(xy, varis[0]) - xy - varis[1];
  129. if(fxa * fxy == 0 || fabs(fxa-fxy) < 0.01)
  130. {
  131. printf("Denklemin kökleri = [%lf,%lf]\n", xa,xu);
  132. return 1;
  133. }
  134. else if((fxy*fxa) < 0)
  135. {
  136. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  137. varis[3] = xy;
  138. bisection(varis, operats);
  139. }
  140. else if((fxy*fxa) > 0)
  141. {
  142. printf("Yeni sınır = [%lf,%lf]\n", xa, xu);
  143. varis[2] = xy;
  144. bisection(varis, operats);
  145. }
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement