Kod:
#include<stdio.h>
#include<math.h>
#define BOYUT 16
float hesapla(float katsayi[],float x);
float turev(float katsayi[],float x);
float fmutlak(float sayi);
int main()
{
char yanit='e';
float katsayi[BOYUT]={0},a,x1,x2;
int k,derece,i,kontrol,j;
printf("ax**n+....= biçiminde");
printf("\nMax. 15. dereceden bir polinom giriniz\n");
/*okutma sorunu çözülmedi!*/
for(i=0;;i++)
{
k=scanf("%fx**%d",&a,&derece);
if((k==0)||(i>15))break;
katsayi[derece]+=a;
}
/*polinomun yanyana yazýlmasý:*/
printf("Girilen polinom:\n");
for(i=BOYUT-1;i>=0;i--)
{
if(katsayi[i])
{
printf("%fx**%d",katsayi[i],i);
for(j=i-1;j>=0;j--)/*bir sonraki terimi bulmak için*/
if(katsayi[j])break;
if((katsayi[j]>0)&&(j!=-1))printf("+");
}
}
while(yanit=='e')
{
printf("\nHangi nokta etrafýnda çözüm yapýlsýn?\n");
getchar();
scanf("%f",&x1);
kontrol=1;
for(i=0;;i++)
{
x2=x1-(hesapla(katsayi,x1)/turev(katsayi,x1));
if(fmutlak(x2-x1)<=0.01)break;
x1=x2;
if(i==1000)
{
printf("Bu nokta etrafýnda yakýnsama tamamlanmadý!\n");
kontrol=0;
break;
}
}
if(kontrol==1) printf("kök=%f",x2);
printf("\nBaþka bir nokta etrafýnda çözüm aramak ister misiniz?\n");
getchar();
scanf("%c",&yanit);
}
return 0;
}
/*fonksiyonlar:*/
float hesapla(float katsayi[],float x)
{
int i;
float toplam=0;
for(i=0;i<BOYUT;i++)
toplam+=katsayi[i]*pow(x,i);
return toplam;
}
float turev(float katsayi[],float x)
{
float turev=0;
int i;
for(i=0;i<BOYUT;i++)
turev+=i*katsayi[i]*pow(x,i-1);
return turev;
}
float fmutlak(float sayi)
{
if(sayi<0)return sayi*-1;
else return sayi;
}