Hilmi BEYDEŞ 的个人资料Hilmi BEYDEŞ照片日志列表 工具 帮助

日志


4月30日

RANGE KUTLA METODU

#include <stdio.h>
#include <math.h>
double E=2.718281828;
double Dy(double t,double y){
 return( pow(E,-2*t) - 2*y);
}
void main(){
 float i, pk,yk,tk, a,b,h;
 printf("[a,b] araligi için a,b:");      scanf("%f",&tk);  scanf("%f",&b);
 printf("\nh: ");                            scanf ("%f",&h);
 printf("\nY(0): ");                        scanf ("%f",&yk);
 float f1,f2,f3,f4;
 for( i=0; tk<b; i+=1){
 tk=tk+h;
  f1=Dy(tk,yk);
  f2=Dy(tk+(h/2),yk+(h/2)*f1);
  f3=Dy(tk+(h/2),yk+(h/2)*f2);
  f4=Dy(tk+h,yk+(h/2)*f3);
 yk=yk+ h*((f1+2*f2+2*f3+f4)/6);
 printf("\ny(%f): %f",tk,yk);
 }
}
 

TAYLOR

#include <stdio.h>
#include <math.h>
double E=2.718281828;
double fDy(double t,double y){ return( pow(E,-2*t) - 2*y);            }
double fD2(double t, double y){    return -2*pow(E,-2*t)-2*fDy(t,y);   }
double fD3(double t, double y){    return 4*pow(E,-2*t)-2*fD2(t,y);    }
double fD4(double t, double y){    return -8*pow(E,-2*t)-2*fD3(t,y);   }
void main(){
 float i, pk,yk,tk, a,b,h;
 printf("[a,b] araligi için a,b:");      scanf("%f",&tk);  scanf("%f",&b);
 printf("\nh: ");                            scanf ("%f",&h);
 printf("\nY(0): ");                        scanf ("%f",&yk);
 for( i=0; tk<b; i+=1){
  double D1=fDy(tk,yk);
  double D2=fD2(tk,yk);
  double D3=fD3(tk,yk);
  double D4=fD4(tk,yk);
 tk=tk+h;
 yk=yk+ D1*h + (D2*h*h/2) + D3*h*h*h/6 + D4*h*h*h*h/24;
 printf("\ny(%f): %f",tk,yk);
 }
}
 

HEUN METODU

#include <stdio.h>
#include <math.h>
double E=2.718281828;
double Dy(double t,double y){
 return( pow(E,-2*t) - 2*y);
}
void main(){
 float i, pk,yk,tk, a,b,h;
 printf("[a,b] araligi için a,b:");      scanf("%f",&tk);  scanf("%f",&b);
 printf("\nh: ");                            scanf ("%f",&h);
 printf("\nY(0): ");                        scanf ("%f",&yk);
  for( i=0; tk<b; i+=1){
  tk=tk+h;
  pk=yk+h*Dy(tk,yk);
  yk=yk+(h/2)*(Dy(tk,yk)+Dy((tk+h),pk));
  printf("\ny(%f): %f",tk,yk);
  }
}

EULER KODLAR

EULER METODU

#include <stdio.h>
#include <math.h>
double E=2.718281828;
double Dy(double t,double y){
 return( pow(E,-2*t) - 2*y);
}
void main(){
 float i, pk,yk,tk, a,b,h;
 printf("[a,b] araligi için a,b:");      scanf("%f",&tk);  scanf("%f",&b);
 printf("\nh: ");                            scanf ("%f",&h);
 printf("\nY(0): ");                        scanf ("%f",&yk);
 for( i=0; tk<b; i+=1){
  tk=tk+h;
  yk=yk+h*Dy(tk,yk);
  printf("\ny(%f): %f",tk,yk);
 }
}
4月9日

Sayısal Ödevi Newton Bölünmüş

#include <stdio.h>

#include <stdlib.h>

double newton(double,int,double *,double**);

void yazdir(int,double *,double *);

int main()

{

            FILE *dosya;

            int boyut,i,j,k;

            double *x,*y,**tablo,temp_x,temp_y;

            if((dosya=fopen("boyut.txt","rt"))!=NULL)

            {

                        fscanf(dosya,"%d",&boyut);

                        fclose(dosya);

                        x=malloc(boyut*sizeof(double));

                        y=malloc(boyut*sizeof(double));

                        if((dosya=fopen("veri.txt","rt"))!=NULL)

                        {

                                   for(i=0;i<boyut;i++)

                                   {

                                               fscanf(dosya,"%lf %lf\n",&x[i],&y[i]);

                                   }

                                   fclose(dosya);

                        }

            }

            yazdir(boyut,x,y);

            tablo=(double**) malloc(boyut*sizeof(double));

            for(i=boyut,j=0;i>0;i--,j++)

            {

                        tablo[j]=(double *) malloc(i*sizeof(double));

            }

            for(i=0;i<boyut;i++)

            {

                        tablo[0][i]=y[i];

            }

            free(y);

            for(i=1;i<boyut;i++)

            {

                        for(j=0,k=i;j<boyut;k++,j++)

                        {

                                   tablo[i][j]=(tablo[i-1][j+1]-tablo[i-1][j])/(x[k]-x[k-i]);

                        }

            }

            do

            {

                        printf("bulunacak ara degeri girin: ");

                        scanf("%lf",&temp_x);

                        printf("f(%.2lf)= %.7lf\n",temp_x,newton(temp_x,boyut,x,tablo));

                        printf("devam etmek istiyor musunuz(0-1)");

                        scanf("%lf",&temp_y);

            }while(temp_y==1);

            return 0;

}

double newton(double a,int boyut,double *x,double **tablo)

{

            double dondur=tablo[0][0],gecici=1;

            int i,j;

            for(i=1;i<boyut;i++)

            {

                        for(j=0;j<i;j++)

                        {

                                   gecici*=(a-x[j]);

                        }

                        gecici*=tablo[i][0];

                        dondur+=gecici;

                        gecici=1;

            }

            return dondur;

}

void yazdir(int boyut,double *x,double *y)

{

            int i;

            for(i=0;i<boyut;i++)

            {

                        printf("%.2lf %.2lf\n",x[i],y[i]);

            }

}

________________________Buraya kadar kodlar.İçinde veri.txt dosyası var.Bir txt dosyasına veri adı ver ve değerleri yaz.Şu şekilde

1      1
1.3   2
1.6   3
1.9   4
2.2   5

x değerleri bu ama y değerlerini bilmiyorum.Onları da yaz.Savele kapat, projenin bulunduğu klasöre at.

bi de boyut.txt adlı bir dosya oluştur.Ona da kaç veri varsa sayısını yaz.burda 5 olduğu için sadece 5 yazıp dosyayı kapat ve kaydet aynı yere at.

Bu Kadar..

 

Sayısal Lagrange Ödevi

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

void ana_fonksiyon(int);

void tablo_yaz(double [100],double [100],int);

void lagrange_menu(double [100],double [100],int);

double lagrange_bul(double [100],double [100],double,int);

 

int main()

{

            char answer[1]="",y[1]="y",Y[1]="Y",k[1]="k",K[1]="K",c[1]="c",C[1]="C";

            do

            {

                        printf("(Y)ENI DEGER GIRMEK ISTIYORUM\n");

                        printf("(K)AYITLI DEGERI ACMAK ISTIYORUM\n");

                        printf("(C)IKMAK ISTIYORUM\n");

                        scanf("%s",answer);

                        if(strncmp(answer,y,1)==0||strncmp(answer,Y,1)==0)

                        {

                                   ana_fonksiyon(1);

                        }

                        else

                                   if(strncmp(answer,k,1)==0||strncmp(answer,K,1)==0)

                                   {

                                               ana_fonksiyon(2);

                                   }

            }while(!(strncmp(answer,c,1)==0||strncmp(answer,C,1)==0));

            return 0;

}

void ana_fonksiyon(int secenek)

{

            double *x,*y,temp_x,temp_y;

            int boyut,i;

            FILE *dosya;

            if(secenek==1)

            {

                        printf("DEGER GIRMEYI BITIRMEK ICIN X=1000 GIRIN\n");

                        boyut=1;

                        printf("X(%d)= ",boyut);

                        scanf("%lf",&temp_x);

                        printf("Y(%d)= ",boyut);

                        scanf("%lf",&temp_y);

                        x=calloc(boyut,sizeof(double));

                        y=calloc(boyut,sizeof(double));

                        x[boyut-1]=temp_x;

                        y[boyut-1]=temp_y;

                        do

                        {

                                   printf("X(%d)= ",boyut+1);

                                   scanf("%lf",&temp_x);

                                   if(temp_x!=1000)

                                   {

                                               printf("Y(%d)= ",boyut+1);

                                               scanf("%lf",&temp_y);

                                               boyut++;

                                               x=realloc(x,boyut*sizeof(double));

                                               y=realloc(y,boyut*sizeof(double));

                                               x[boyut-1]=temp_x;

                                               y[boyut-1]=temp_y;

                                   }

                        }while(temp_x!=1000);

            }

            else

                        if(secenek==2)

                        {

                                   if((dosya=fopen("ayhan\\boyut.dat","r"))==NULL)

                                               printf("KAYDEDILMIS BIR DEGER BULUNAMADI\n");

                                   else

                                   {

                                               fread(&boyut,sizeof(int),1,dosya);

                                               fclose(dosya);

                                               x=calloc(boyut,sizeof(double));

                                               y=calloc(boyut,sizeof(double));

                                               if((dosya=fopen("ayhan\\veri_x.dat","r"))!=NULL)

                                               {

                                                           for(i=0;i<boyut;i++)

                                                           {

                                                           fread(&x[i],sizeof(double),1,dosya);

                                                           }

                                                           fclose(dosya);

                                               }

                                               if((dosya=fopen("ayhan\\veri_y.dat","r"))!=NULL)

                                               {

                                                           for(i=0;i<boyut;i++)

                                                           {

                                                           fread(&y[i],sizeof(double),1,dosya);

                                                           }

                                                           fclose(dosya);

                                               }

                                   }

                        }

            lagrange_menu(x,y,boyut);

            free(x);

            free(y);

}

void tablo_yaz(double a[100], double b[100],int boyut)

{

            int i;

            for(i=0;i<boyut;i++)

            {

                        printf("F(%.2lf)= %.7lf\n",a[i],b[i]);

            }

            printf("\n");

}

void lagrange_menu(double a[100],double b[100],int boyut)

{

            double degisken;

            int i;

            FILE *dosya;

            char secenek[1]="",c[1]="c",C[1]="C",v[1]="v",V[1]="V",s[1]="s",S[1]="S";

            do

            {

                        printf("\n");

                        tablo_yaz(a,b,boyut);

                        printf("(S)ONUC BULMAK ISTIYORUM\n");

                        printf("(V)ERILERI KAYDETMEK ISTIYORUM\n");

                        printf("(C)IKMAK ISTIYORUM\n");

                        scanf("%s",secenek);

                        if(strncmp(secenek,s,1)==0||strncmp(secenek,S,1)==0)

                        {

                                   printf("X= ");

                                   scanf("%lf",&degisken);

                                   printf("F(%.2lf)= %.7lf\n",degisken,lagrange_bul(a,b,degisken,boyut));

                        }

                        else

                        {

                                   if(strncmp(secenek,v,1)==0||strncmp(secenek,V,1)==0)

                                   {

                                               if((dosya=fopen("ayhan\\boyut.dat","w"))!=NULL)

                                               {

                                                           fwrite(&boyut,sizeof(int),1,dosya);

                                                           fclose(dosya);

                                                           if((dosya=fopen("ayhan\\veri_x.dat","w"))!=NULL)

                                                           {

                                                                       for(i=0;i<boyut;i++)

                                                                       {

                                                                       fwrite(&a[i],sizeof(double),1,dosya);

                                                                       }

                                                                       fclose(dosya);

                                                           }

                                                           if((dosya=fopen("ayhan\\veri_y.dat","w"))!=NULL)

                                                           {

                                                                       for(i=0;i<boyut;i++)

                                                                       {

                                                                       fwrite(&b[i],sizeof(double),1,dosya);

                                                                       }

                                                                       fclose(dosya);

                                                           }

                                               }

                                   }

                        }

            }while(!(strncmp(secenek,c,1)==0||strncmp(secenek,C,1)==0));

}

double lagrange_bul(double a[100],double b[100],double x,int boyut)

{

            int i,j;

            double toplam=0,carpim;

            for(i=0;i<boyut;i++)

            {

                        carpim=1;

                        for(j=0;j<boyut;j++)

                        {

                                   if(j==i)

                                               continue;

                                   carpim*=((x-a[j])/(a[i]-a[j]));

                        }

                        carpim*=b[i];

                        toplam+=carpim;

            }

            return toplam;

}