Advertisement
Guest User

Untitled

a guest
Oct 16th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "math.h"
  4.  
  5. float fonksiyon(float x) // İşlem uygulanacak fonksiyonu temsil etmektedir.
  6. {
  7. return x*x*x+4*x*x-10; // Fonksiyon sonucunu döndürür.
  8. }
  9.  
  10. float bisection(float A, float B, float hassasiyet)
  11. {
  12. printf("\n\t\t ARALIK [%f,%f] | HASSASIYET %f\n\n",A,B,hassasiyet);
  13. int MAX=log2((B-A)/hassasiyet); // MAX değişkeni hata sınırına ulaşmak için kaç adım uygulanacağını taşımaktadır.
  14. float deger[MAX][5]; // deger değişkeni fonksiyon çözümlenirken hesaplanan tüm değerleri taşımaktadır.
  15.  
  16. float _A,P,_P,_B; // _A,_B,_P fonksiyona girilen değerlerin sonuçlarını, P ortanca değeri temsil etmektedir.
  17.  
  18. int i,j,k; // Döngüler için işlem n'leri temsil etmektedir.
  19.  
  20. for(i=1; i<=MAX; i++) // Değerler kümesine değişken atanırken sınırı hesaplar.
  21. {
  22. P=(A+B)/2; // Aralığın ortancası P değişkenine atanır.
  23. _A=fonksiyon(A); // Fonksiyona gönderilen A değerinin sonucu _A değişkenine atanır.
  24. _P=fonksiyon(P); // Fonksiyona gönderilen P değerinin sonucu _P değişkenine atanır.
  25. deger[i-1][0] = A; // Matrisin satırlarının ilk elemanı daraltılmış aralığın küçük değeri ile doldurulur.
  26. deger[i-1][1] = B; // Matrisin satırlarının ikinci elemanı daraltılmış aralığın büyük değeri ile doldurulur.
  27. deger[i-1][2] = P; // Matrisin satırlarının üçüncü elemanı daraltılmış aralığın ortanca değeri ile doldurulur.
  28. deger[i-1][3] = _P; // Matrisin satırlarının dördüncü elemanı, ortanca değerin fonksiyon sonucu ile doldurulur.
  29.  
  30. if(_A*_P<0) // Kökün hangi aralıkta olduğu belirlenir.
  31. B=P; // Kökün P ile A aralığında olduğu tespit edildiğinde B değişkenine P atanır.
  32. else
  33. A=P; // Kökün P ile B aralığında olduğu tespit edildiğinde A değişkenine P atanır.
  34. }
  35.  
  36. for(j=1; j<=MAX; j++) // Erroru bulmak için for döngüsü kullandım.
  37. {
  38. deger[j-1][4]=fabs((deger[MAX-1][2]-deger[j-1][2])/deger[MAX-1][2]); // Matrisin satırlarının beşinci elemanı hata payı ile doldurulur.
  39. }
  40.  
  41. printf("n An\t Bn\t Pn\t F(An) F(Bn) F(Pn)\t ERROR\n");
  42. printf("_________________________________________________________________________\n");
  43. for(k=0; k<i-1; k++) // Matrisin satırları döndürülür.
  44. {
  45. printf("%d %f %f %f %f %f %f %f\n",k+1,deger[k][0],deger[k][1],deger[k][2],fonksiyon(deger[k][0]),fonksiyon(deger[k][1]),fonksiyon(deger[k][2]),deger[k][4]);
  46. }
  47. printf("\t\t\t____________________________");
  48. printf("\n\t\t\tFonksiyonun koku = %f ",deger[i-2][2]);
  49. printf("\n\t\t\t____________________________");
  50. printf("\n_________________________________________________________________________\n\n");
  51. }
  52.  
  53. int main()
  54. {
  55. bisection(1,2,0.001); //Ana fonksiyona degerleri yolluyoruz.
  56. printf("\t\t\t <<< SEFA GENC 141024064 >>>");
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement