C Programlama Dilinde Newton Raphson ve Regula Falsi Algoritması

C programlama dilinde Newton Raphson ve Regula Falsi hesaplamalarının algoritma ve kodlamasının nasıl yapılacağına dair kodlar aşağıda verilmiştir. Bu kodların .c uzantılı dosyası ve .exe uzantılı windows işletim sisteminde çalışan dosyasını da dilerseniz aşağıdan indirebilirsiniz.

#include <stdio.h>

int main()
{
    int mi,a,z;
    int dizi[5];
    float x0,x1,xR,xM,yM,xL,e,yL,yR;
    printf("Islemi regula falsi ile yapmak icin 1 , newton raphson ile yapmak icin 2 sayisini giriniz\n");
    scanf("%d",&z);
    if (z==1)
    {
        //Terimlerin Katsayılarının Alındığı Yer ...
    a=0;
    printf("Lutfen sirayla terimlerin katsayisini gir\n");
    printf("x^4=");
    scanf("%d",&dizi[4]);
    printf("x^3=");
    scanf("%d",&dizi[3]);
    printf("x^2=");
    scanf("%d",&dizi[2]);
    printf("x^1=");
    scanf("%d",&dizi[1]);
    printf("x^0=");
    scanf("%d",&dizi[0]);
    printf("Maksimum iterasyon sayisini giriniz\n");
    scanf("%d",&mi);
    printf("Bir epsilon degeri giriniz\n");
    scanf("%f",&e);
    //Büyük ve Küçük 2 Tahminin Alındığı Yer
    printf("Lutfen sirayla buyuk ve kucuk tahminlerinizi giriniz \n");
    printf("Buyuk olan tahmin = ");
    scanf("%f",&xR);
    printf("Kucuk olan tahmin = ");
    scanf("%f",&xL);
    yM=1;
    printf("%f\n",yM);
 	while((yM>e)&&(a<mi))
    // xM in bulunduğu kısım
    {
    xM=(xL*((dizi[4]*xR*xR*xR*xR)+(dizi[3]*xR*xR*xR)+(dizi[2]*xR*xR)+(dizi[1]*xR)+dizi[0])-
    xR*((dizi[4]*xL*xL*xL*xL)+(dizi[3]*xL*xL*xL)+(dizi[2]*xL*xL)+(dizi[1]*xL)+dizi[0])) / 
    (((dizi[4]*xR*xR*xR*xR)+(dizi[3]*xR*xR*xR)+(dizi[2]*xR*xR)+(dizi[1]*xR)+dizi[0])-
    ((dizi[4]*xL*xL*xL*xL)+(dizi[3]*xL*xL*xL)+(dizi[2]*xL*xL)+(dizi[1]*xL)+dizi[0]));
    //yL ve yR nin bulunduğu kısım
    yL=(dizi[4]*xL*xL*xL*xL)+(dizi[3]*xL*xL*xL)+(dizi[2]*xL*xL)+(dizi[1]*xL)+dizi[0];
    yR=(dizi[4]*xR*xR*xR*xR)+(dizi[3]*xR*xR*xR)+(dizi[2]*xR*xR)+(dizi[1]*xR)+dizi[0];
    // yM nin bulunduğu kısım
    yM=(dizi[4]*xM*xM*xM*xM)+(dizi[3]*xM*xM*xM)+(dizi[2]*xM*xM)+(dizi[1]*xM)+dizi[0];
    //Yeni değerlerin okutulduğu kısım
    printf("\n%d.adimda ki degerler\n",a+1);
    printf("Kucuk olan X degeri (xL) = %f\n",xL);
    printf("Kucuk X degeri ile cikan sonuc (yL) = %f\n",yL);
    printf("Buyuk olan X degeri = %f\n",xR);
    printf("Buyuk X degeri ile cikan sonuc (yR) = %f\n",yR);
    printf("X'in yeni tahmini (xM) = %f\n",xM);
    printf("Yeni X degeri ile cikan sonuc (yM) = %f\n\n",yM);
    //İşaret kontrolünün yapıldığı kısım
    if (yM*((dizi[4]*xL*xL*xL*xL)+(dizi[3]*xL*xL*xL)+(dizi[2]*xL*xL)+(dizi[1]*xL)+dizi[0])>0)
    {
        xL=xM;
    }
    else 
    {
        xR=xM;
    }
    //Maks iterasyon kontrolü
    a=a+1;
    if (yM<0)
    {
        yM=-yM;	
    }
    }
    //En son çıktının verildiği kısım
    printf("Denklemin koku = %f",xM);	
    }
    else
    {
        //Terimlerin katsayılarının alındığı yer
    a=0;
    printf("Lutfen sirayla terimlerin katsayisini girin\n");
    printf("x^4=");
    scanf("%d",&dizi[4]);
    printf("x^3=");
    scanf("%d",&dizi[3]);
    printf("x^2=");
    scanf("%d",&dizi[2]);
    printf("x^1=");
    scanf("%d",&dizi[1]);
    printf("x^0=");
    scanf("%d",&dizi[0]);
    //Tahmini değerin alındığı yer
    printf("Lutfen tahmini bir baslangic degeri atayin\n");
    scanf("%f",&x0);
    //Maks iterasyon ve epsilon değerinin alındığı yer
    printf("Maksimum iterasyon sayisini giriniz\n");
    scanf("%d",&mi);
    printf("Bir epsilon degeri giriniz\n");
    scanf("%f",&e);
    yM=1;
    while((yM>e)&&(a<mi))
    {
        // x1 in bulunduğu kısım	
        x1=x0-(((dizi[4]*x0*x0*x0*x0)+(dizi[3]*x0*x0*x0)+(dizi[2]*x0*x0)+(dizi[1]*x0)+dizi[0])/
        ((dizi[4]*4*x0*x0*x0)+(dizi[3]*3*x0*x0)+(dizi[2]*x0)+dizi[1]));
        // yM nin bulunduğu kısım
        yM=(dizi[4]*x1*x1*x1*x1)+(dizi[3]*x1*x1*x1)+(dizi[2]*x1*x1)+(dizi[1]*x1)+dizi[0];
        // Yeni değerlerin okutulduğu kısım
        printf("\n%d.adimda ki degerler\n",a+1);
        printf("Yeni X degeri = %f\n",x1);
        printf("Yeni X degeri ile cikan sonuc = %f\n",yM);
        x0=x1;
        a=a+1;
        if (yM<0)
        {
        yM=-yM;	
        }
    }		
    }
    getch();
    return 0;
}

newton-raphson-regula-falsi.c dosyasını indirmek için buraya tıklayınız.

newton-raphson-regula-falsi.exe dosyasını indirmek için buraya tıklayınız.