Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- #include "math.h"
- float fonksiyon(float x) // İşlem uygulanacak fonksiyonu temsil etmektedir.
- {
- return x*x*x+4*x*x-10; // Fonksiyon sonucunu döndürür.
- }
- float bisection(float A, float B, float hassasiyet)
- {
- printf("\n\t\t ARALIK [%f,%f] | HASSASIYET %f\n\n",A,B,hassasiyet);
- 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.
- float deger[MAX][5]; // deger değişkeni fonksiyon çözümlenirken hesaplanan tüm değerleri taşımaktadır.
- float _A,P,_P,_B; // _A,_B,_P fonksiyona girilen değerlerin sonuçlarını, P ortanca değeri temsil etmektedir.
- int i,j,k; // Döngüler için işlem n'leri temsil etmektedir.
- for(i=1; i<=MAX; i++) // Değerler kümesine değişken atanırken sınırı hesaplar.
- {
- P=(A+B)/2; // Aralığın ortancası P değişkenine atanır.
- _A=fonksiyon(A); // Fonksiyona gönderilen A değerinin sonucu _A değişkenine atanır.
- _P=fonksiyon(P); // Fonksiyona gönderilen P değerinin sonucu _P değişkenine atanır.
- deger[i-1][0] = A; // Matrisin satırlarının ilk elemanı daraltılmış aralığın küçük değeri ile doldurulur.
- deger[i-1][1] = B; // Matrisin satırlarının ikinci elemanı daraltılmış aralığın büyük değeri ile doldurulur.
- deger[i-1][2] = P; // Matrisin satırlarının üçüncü elemanı daraltılmış aralığın ortanca değeri ile doldurulur.
- deger[i-1][3] = _P; // Matrisin satırlarının dördüncü elemanı, ortanca değerin fonksiyon sonucu ile doldurulur.
- if(_A*_P<0) // Kökün hangi aralıkta olduğu belirlenir.
- B=P; // Kökün P ile A aralığında olduğu tespit edildiğinde B değişkenine P atanır.
- else
- A=P; // Kökün P ile B aralığında olduğu tespit edildiğinde A değişkenine P atanır.
- }
- for(j=1; j<=MAX; j++) // Erroru bulmak için for döngüsü kullandım.
- {
- 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.
- }
- printf("n An\t Bn\t Pn\t F(An) F(Bn) F(Pn)\t ERROR\n");
- printf("_________________________________________________________________________\n");
- for(k=0; k<i-1; k++) // Matrisin satırları döndürülür.
- {
- 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]);
- }
- printf("\t\t\t____________________________");
- printf("\n\t\t\tFonksiyonun koku = %f ",deger[i-2][2]);
- printf("\n\t\t\t____________________________");
- printf("\n_________________________________________________________________________\n\n");
- }
- int main()
- {
- bisection(1,2,0.001); //Ana fonksiyona degerleri yolluyoruz.
- printf("\t\t\t <<< SEFA GENC 141024064 >>>");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement