Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Standart Polinom kökünü bulan program... (C)

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,113
  • MFC Puanı
    10
  • MFC Seviyesi

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&yacute;lmas&yacute;:*/
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&yacute;nda çözüm yap&yacute;ls&yacute;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&yacute;nda yak&yacute;nsama tamamlanmad&yacute;!\n");
 	   kontrol=0;
	   break;
 	 }  
   }
  if(kontrol==1) printf("kök=%f",x2);
  printf("\nBa&thorn;ka bir nokta etraf&yacute;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;
}
 
Üst Alt