Showing posts with label Komputasi. Show all posts
Showing posts with label Komputasi. Show all posts
Teknik Komputasi >> Interpolasi DIFFERENSIAL

Teknik Komputasi >> Interpolasi DIFFERENSIAL

/* Contoh soal Metode Runge-Kutta orde 4 untuk penyelesaian Diferensiasi Numerik Bab
VII Hal. 67-68 Diktat Metode Komputasi 2004 */
/* Nama Program : runge-kutta4.cpp */
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define MaksData 100
main()
{
FILE *runge_kutta4;
double k1[MaksData], k2[MaksData],
k3[MaksData], k4[MaksData],
x, x0, y0, yn1, ytemp,
h;
int i;
char lagi;
do
{
clrscr();
runge_kutta4 = fopen("runge_kutta4.txt", "w+");
cout << "\n\nMetode Runge-Kutta Orde 4 untuk Diferensiasi Numerik\n";
cout << "====================================================\n\n";
cout << "Contoh pada Diktat Metode Komputasi\n\n";
cout << "Persamaan Diferensial : f(x,y) = dy/dx = y + x\n";
cout << "----------------------------------------------\n\n";
/***************************************************/
/* Setiap perubahan persamaan matematika, YAKINKAN */
/* bahwa Anda telah merubah persamaan matematika */
/* di dalam program ini -------------------------- */
/***************************************************/
/* Pemasukan Data yang diberikan */
cout << "\nMasukkan x[0] ? ";
cin >> x0;
cout << "\nMasukkan y[0] ? ";
cin >> y0;
cout << "\nNilai titik x yang dicari ? ";
cin >> x;
cout << "\nInterval h ? ";
cin >> h;
printf("\n\n\tx[0] = %.2f", x0);
printf("\n\n\ty[0] = %.2f", y0);
printf("\n\n\tYang dicari adalah y[%.2f]", x);
printf("\n\n\th = %.2f", h);
/* Cetak x[i], y[i] dan f[i] serta penghitungan Runge-Kutta Orde 4 */
printf("\n\n\t-------------------------------------------------------\n");
printf("\tIterasi\t\tk1\tk2\tk3\tk4\ty[i]\n");
printf("\t-------------------------------------------------------\n");
fprintf(runge_kutta4,"\n\t-------------------------------------------------------\n");
fprintf(runge_kutta4,"\tIterasi\t\tk1\tk2\tk3\tk4\ty[i]\n");
fprintf(runge_kutta4,"\t-------------------------------------------------------\n");
i = 0;
/* Pemasukan dan Penghitungan Data */
while(x0 != x)//for(i = 0; i < n; i++)
{
k1[i] = y0 + x0;
k2[i] = (y0 + h*k1[i]/2) + (x0 + h/2);
k3[i] = (y0 + h*k2[i]/2) + (x0 + h/2);
k4[i] = (y0 + h*k3[i]) + (x0 + h);
/* Rumus Diferensiasi Runge-Kutta Orde 4 */
yn1 = y0 + h*(k1[i] + 2*k2[i] + 2*k3[i] + k4[i])/6;
x0 += h;
printf("\t %d\t\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\n", i+1, k1[i], k2[i],
k3[i], k4[i], yn1);
fprintf(runge_kutta4,"\t %d\t\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\n", i+1,
k1[i], k2[i], k3[i], k4[i], yn1);
}
printf("\t-------------------------------------------------------\n");
fprintf(runge_kutta4,"\t-------------------------------------------------------\n");
fprintf(runge_kutta4,"\n\nx[0] = %.2f", x0);
fprintf(runge_kutta4,"\n\ny[0] = %.2f", y0);
fprintf(runge_kutta4,"\n\nYang dicari adalah y[%.2f]", x);
fprintf(runge_kutta4,"\n\nh = %.2f", h);
printf("\n\nMaka y[%.2f] = %.5f", x, y0);
fprintf(runge_kutta4,"\n\nMaka y[%.2f] = %.5f", x, y0);
fclose(runge_kutta4);
cout << "\n\nCoba lagi dengan data awal atau rumus yang berbeda (y/t) ? ";
cin >> lagi;
}while(lagi != 't');
return 0;
}
Teknik Komputasi >> Interpolasi Linier

Teknik Komputasi >> Interpolasi Linier

// Interpolasi Linier
# include <stdio.h>
# include <math.h>
# include <conio.h>
# include <iostream.h>

float x1, y1, x2, y2, x,y ;

void main ( )
{
   cout<<"****** PROGRAM INTERPOLASI LINIER *******\n";
cout<<"\nInput data x[1] = "; cin>>x1;
   cout<<"Input data y[1] = "; cin>>y1;
   cout<<"Input data x[2] = "; cin>>x2;
   cout<<"Input data y[2] = "; cin>>y2;
  cout<<"\nInput x = "; cin>>x;

y = ((y2 - y1) / (x2 - x1))*(x - x1)+ y1;

cout<<"\nHasil perhitungan y = "<<y<<endl;
   cout<<"\nTitik Terbaru adalah ("<<x<<" , "<<y<<" )";
   getch();
}

Teknik Komputasi >> Interpolasi Kuadratik

Teknik Komputasi >> Interpolasi Kuadratik

// Interpolasi Kuadratik
# include <stdio.h>
# include <math.h>
# include <conio.h>
# include <iostream.h>

float x1, y1, x2, y2, x3, y3, x, P1, P2, P3, y ;

void main ( )
{
cout<<"****** PROGRAM INTERPOLASI KUADRATIK *******\n";
cout<<"\nInput data x[1] = "; cin>>x1;
   cout<<"Input data y[1] = "; cin>>y1;
   cout<<"Input data x[2] = "; cin>>x2;
   cout<<"Input data y[2] = "; cin>>y2;
   cout<<"Input data x[3] = "; cin>>x3;
   cout<<"Input data y[3] = "; cin>>y3;
  cout<<"\nInput x = "; cin>>x;

P1 = y1*((x - x2)*(x - x3)/(x1 - x2)*(x1 - x3)) ;
P2 = y2*((x - x1)*(x - x3)/(x2 - x1)*(x2 - x3)) ;
P3 = y3*((x - x1)*(x - x2)/(x3 - x1)*(x3 - x2)) ;
   y = P1 + P2 + P3 ;

cout<<"\n==> Hasil perhitungan y = "<<y<<endl;
cout<<"\nTitik Terbaru adalah ("<<x<<" , "<<y<<" )";
   getch();
}
Teknik Komputasi >> SIMPSON 1/3

Teknik Komputasi >> SIMPSON 1/3

/* Contoh soal Metode Simpson 1/3 untuk penyelesaian Integrasi Numerik. Bab VI Hal.
52-53 Diktat Metode Komputasi 2004 */
/* Nama Program : simpson1_3.cpp */
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define MaksU 100
#define e  2.718281828
main()
{
FILE *simpson1_3;
double u[MaksU], x[MaksU],
h, x1, x2,
L, L1, L2;
int i, j, k, opsi;
char lagi;
do
{
clrscr();
simpson1_3 = fopen("simpson1_3.txt", "w+");
cout << "\n\nMetode Simpson 1/3 untuk Integrasi Numerik\n";
cout << "==========================================\n";
/***************************************************/
/* Setiap perubahan persamaan matematika, YAKINKAN */
/* bahwa Anda telah merubah persamaan matematika */
/* di dalam program ini -------------------------- */
/***************************************************/
cout << "\nMasukkan Batas Bawah (x1) ? ";
cin >> x1;
cout << "\nMasukkan Batas Atas (x2) ? ";
cin >> x2;
cout << "\nMasukkan Besar Interval (h) ? ";
cin >> h;
cout << "\n\nCara pemasukan data : \n\n";
cout << "1. Rumus Integral (rubah dulu kode program ssi rumus)\n";
cout << "Contoh dalam program ini adalah : integral(0-10) x^2 dx\n\n";
cout << "2. Tabel Data\n\n";
cout <<"Masukkan pilihan : ";
cin >> opsi;
switch(opsi)
{
case 1 :
{
cout << "\n\nPersamaan Integral : integral(0-10) 2x + 5 e-2 dx\n\n";
j = 0;
while(x1 != x2+h)
{
u[j] = 2*x1 + 5 e-2;
x[j] = x1;
x1 += h;
printf("\nu[%d] = %.2f", j, u[j]);
}
break;
}
case 2 :
{
cout << "\n\nPemasukan Data Berdasarkan Tabel Data\n";
cout << "-------------------------------------\n";
while(x1 != x2+h)
{
printf("\nx[%.1f] = ", x1);
cin >> u[j];
j++;
}
break;
}
default : cout << "\nTry Again .....\n\n";
}
printf("\n\nu[%d] = %.2f", j-j, u[j-j]);
printf("\tu[%d] = %.2f", j-1, u[j-1]);
printf("\th = %.2f", h);
printf("\n\n\t-------------------------------\n");
printf("\tdata ke-\tx\tU(x)\n");
printf("\t--------------------------------\n\n");
fprintf(simpson1_3,"\n\t-------------------------------\n");
fprintf(simpson1_3,"\tdata ke-\tx\tU(x)\n");
fprintf(simpson1_3,"\t--------------------------------\n\n");
//Tampilkan data x dan U(x)
for(i = 0; i < j; i++)
{
printf("\t %d\t\t%.1f\t%.2f\n", i, x[i], u[i]);
fprintf(simpson1_3,"\t %d\t\t%.1f\t%.2f\n", i, x[i], u[i]);
}
printf("\n\t--------------------------------\n\n");
fprintf(simpson1_3,"\n\t--------------------------------\n\n");
cout << "\nTekan Enter untuk melihat hasil perhitungan ......\n";
getch();
printf("\n\n\t----------------------------------------\n");
printf("\titerasi ke-\tU(x)\tL1(x)\tL2(x)\n");
printf("\t----------------------------------------\n\n");
fprintf(simpson1_3,"\n\t---------------------------------------\n");
fprintf(simpson1_3,"\titerasi ke-\tU(x)\tL1(x)\tL2(x)\n");
fprintf(simpson1_3,"\t----------------------------------------\n\n");
for(i = 1; i <= j-2; i++)
{
k = fmod(i,2);
if(k != 0)
{
L1 += u[i];
printf("\t\t%d\t%.2f\t%.2f\t%.2f\n", i, u[i], L1, L2);
fprintf(simpson1_3,"\t\t%d\t%.2f\t%.2f\t%.2f\n", i, u[i], L1,L2);
}
else
{
L2 += u[i];
printf("\t\t%d\t%.2f\t%.2f\t%.2f\n", i, u[i], L1, L2);
fprintf(simpson1_3,"\t\t%d\t%.2f\t%.2f\t%.2f\n", i, u[i], L1,L2);
}
/* Rumus Integrasi Simpson 1/3 */
L = h*(u[j-j] + 4*L1 + 2*L2 + u[j-1])/3;
}
printf("\n\t----------------------------------------\n\n");
fprintf(simpson1_3,"\n\t----------------------------------------\n\n");
printf("\nMaka Luas daerah kurva L adalah %.2f", L);
fprintf(simpson1_3,"\nMaka Luas daerah kurva L adalah %.2f", L);
fclose(simpson1_3);
cout << "\n\nCoba lagi dengan data awal yang berbeda (y/t) ? ";
}while(lagi != 't');
return 0;
}