| 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 KODLAREULER 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 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",°isken); 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; } |
|
|