CARA MENGHITUNG DIFERENSIASI NUMERIK DENGAN METODE SELISIH TINGKAT TINGGI

CARA MENGHITUNG DIFERENSIASI NUMERIK DENGAN METODE SELISIH TINGKAT TINGGI

Differensiasi tingkat tinggi
Differensiasi tingkat tinggi merupakan proses pendifferensialan secara terus-menerus, hingga tingkatan yang ditentukan. diferensiasi tingkat tinggi merupakan penyempurnaan dari metode metode sebekumnya seperti selisih maju, selisih tengahan. untuk tingakat pendekatan akurasinya sudah dibuktikan hasilnya lebih bagus dengan diferensiasi tingkat tinggi. Tingkat tinggi ada beberapa jenis misal ada tingkat 2 tingkat 3 dan seterusnya untuk rumusnya bisa googling. Saya hanya membahas dengan kode program bagaimana cara mengimplementasikan metode diferensiasi tingkat tinggi di program berikut kodenya :)

#include<stdio.h>
#include<math.h>
double a, b, iter, h, i;
double akar[100];
int j;
double f(double); //prototype mencari nilai f(x)
double tengah(double, double); //prototype mencari nilai f'(x)
double ftinggi(double, double); //prototype mencari nilai f''(x)
main(){
int wek=0, k;
char choice;
double cek;
do{
if(wek!=0){ //ketika variable wek tidak sama dengan nol, lakukan triple break
printf("\n\n\n");
}
fflush(stdin); //me-refresh memory
printf("Selamat datang!\n");
printf("f(x)=x*exp(-x)+cos(2*x)\n");
printf("\nSilahkan masukkan nilai-nilai parameternya\n");
printf("Peringatan: Nilai batas atas harus lebih besar dari nilai batas bawah!\n\n");
printf("Masukkan nilai batas atas ==> "); //memasukkan nilai batas atas
scanf("%lf", &a);
printf("Masukkan nilai batas bawah ==> "); //memasukkan nilai bats bawah
scanf("%lf", &b);
printf("Masukkan nilai iterasi maksimal ==> "); //memasukkan nilai iterasi masksimal
scanf("%lf", &iter);
if(a<b){ //ketika batas atas lebih kecil dari batas bawah, tukarkan nilainya
printf("\nAnda terbalik memasukkan nilai batas\n");
printf("Menukarkan nilai batas\n");
cek=a;
a=b;
b=cek;
}
h=(a-b)/iter; //mendapatkan nilai update
i=b; //memberikan nilai b ke i
j=0; //deklarasi indeks matriks ke nol
printf("\n\nx\tf(x)\t\tf'(x)\t\tf''(x)\n");
while(i<(a+h)){ //looping selama tidak melebihi nilai batas atas
if(i>a){ //ketika melebihi batas atas, lakukan break
break;
}
printf("%g\t%lf\t%lf\t%lf\n", i, f(i), tengah(i, h), ftinggi(i, h));
if(tengah(i, h)*tengah((i+h), h)<0){ //kondisi untuk mendapatkan akar titik puncak
if(fabs(tengah(i, h)<fabs(tengah((i+h), h)))){
akar[j]=i;
}
else{
akar[j]=(i+h);
}
j++;
}
i=i+h;
}
printf("\n\nDi antara range %g dan %g terdapat %d titik puncak\n", b, a, j);
for(k=0; k<j; k++){ //looping untuk menentukan tipe titik puncak
printf("Titik puncak yang berada di %g adalah titik puncak ", akar[k]);
if(ftinggi(akar[k], h)<0){
printf("maksimum\n");
}
else{
printf("minimum\n");
}
}
wek=1;
fflush(stdin); //me-refresh memory
printf("Apakah kembali ke menu utama? (Y/N) ");
scanf("%c", &choice);
}while((choice=='Y')||(choice=='y'));
printf("Terima kasih telah datang berkunjung!\n");
}
double f(double x){
return (x*exp(-x)+cos(2*x));
}
double tengah(double x, double y){
return((f(x+y)-f(x-y))/2*y);
}
double ftinggi(double x, double y){
return((f(x+2*y)-2*f(x)+f(x-2*y))/4*y*y);
}


nah itu kodenya silakan di ikutkan dan dicoba di komputer anda semoga manfaat.

Formulir Kontak

Shipping & Returns

Email : wahyuumaya@gmail.com
Instagram : wahyuumaya
Telegram : wahyuumaya
Facebook : wahyuumaya
Whatsapp : Klik aja disini

Info Section

Closet 2.0