Thursday, February 5, 2015

Program Metode Regula Falsi dengan C++(Metode Numerik)

Assalamualaikum wr..wb..
selamat pagi sobat...semoga pagi ini sobat-sobat dalam keadaan sehat walafiat.. dan selalu dalam lindungan yang maha kuasa..Amin..,kali ini saya akan berbagi bagaimana cara membuat program metode regula falsi dengan C++,,metode ini termasuk dalam mata pelajaran metode numerik... dan regula falsi ini adalah bagiannya..dari itu saya akan berbagi cara membuat programnya dengan C++ lansung saja ke koding perogramnya :::: ::

untuk kodingnya ikuti dibawah ini:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define e 2.718281828
#define error_limit 0.00000000000001 //flexible sesuai kebutuhan
main()
{
FILE *regula_falsi, *regula_x;
double fx1, fx2, fx3,
x1, x2, x3,
x10, x20, f1f2,
x, dx, y1, y2, dy;
int i, j, k;
char lagi, belum;
do
{
clrscr();
j = 0;
regula_falsi = fopen("regula_falsi.txt", "w+");
regula_x = fopen("cross_regula.txt", "w+");
do
{
clrscr();
cout << "Metode Regula-Falsi\n";
cout << "===================\n\n";
//Persamaan utama dan persamaan untuk mencari titik potongnya
cout << "f(x) = 2*e^x - x - 3\n\n";
cout << "y1 = 2e^x dan y2 = x+3\n\n";
cout << "Mencari Titik Potong terdekat\n";
cout << "-----------------------------\n\n";
cout << "Berapa Nilai awal x = ";
cin >> x;
cout << "\nBerapa Nilai Interval x = ";
cin >> dx;
cout << "\nBerapa kali Iterasi = ";
cin >> k;
printf("\n\t-------------------------------------------------\n");
printf("\tIterasi ke-\tx\ty1\ty2\tselisih\n");
printf("\t-------------------------------------------------\n\n");
fprintf(regula_x,"\n\t-------------------------------------------------\n");
fprintf(regula_x,"\tIterasi ke-\tx\ty1\ty2\tselisih\n");
fprintf(regula_x,"\t-------------------------------------------------\n\n");
for (i = 0; i < k; i++)
{
y1 = 2*pow(e,x);
y2 = x + 3;
dy = y1 - y2;
printf("\t\t%d\t%.1f\t%.2f\t%.2f\t%.2f\n", i+1, x, y1, y2, dy);
fprintf(regula_x, "\t\t%d\t%.1f\t%.2f\t%.2f\t%.2f\n", i+1, x, y1,
y2,dy);
x += dx;
}
printf("\n\t-------------------------------------------------\n\n");
fprintf(regula_x, "\t-------------------------------------------------\n\n");
fclose(regula_x);
cout << "\nApakah Titik Potong telah ditemukan ? ";
cin >> belum;
}while(belum != 'y');
cout << "\nMencari Titik Potong sebenarnya\n";
cout << "===============================\n\n";
cout << "Masukkan Nilai x1 = ";
cin >> x1;
x10 = x1;
fx1 = 2*pow(e,x1) - x1 - 3;
do
{
cout << "\nMasukkan Nilai x2 = ";
cin >> x2;
fx2 = 2*pow(e,x2) - x2 - 3;
x20 = x2;
f1f2 = fx1*fx2;
}while(f1f2 >= 0.0);
printf("\n----------------------------------------------------------------------------\n");
printf("Iterasi ke-\tx3\tfx3\t\tfx3 (16 digit) Error Aproksimasi\n");
printf("----------------------------------------------------------------------------\n\n");
fprintf(regula_falsi,"\n----------------------------------------------------------------------------\n");
fprintf(regula_falsi,"Iterasi ke-\tx3\tfx3\t\tfx3 (16 digit) Error Aproksimasi\n");
fprintf(regula_falsi, "----------------------------------------------------------------------------\n\n");
do
{
j++;
x3 = (x1*fx2 - x2*fx1)/(fx2 - fx1);
fx3 = 2*pow(e,x3) - x3 - 3;
printf("\t%d\t%.3f\t%.6f\t%.16f\n", j, x3, fx3, fabs(fx3));
fprintf(regula_falsi,"\t%d\t%.3f\t%.6f\t%.16f\n", j, x3, fx3,
fabs(fx3));
if(fx1*fx3 < 0)
{
x2 = x3;
fx2 = fx3;
}
else
{
x1 = x3;
fx1 = fx3;
}
}while(fabs(fx3) > error_limit);
printf("\n----------------------------------------------------------------------------\n");
fprintf(regula_falsi,"\n----------------------------------------------------------------------------");
printf("\n\nDengan Nilai awal x1 = %.2f dan x2 = %.2f", x10, x20);
printf("\n\nDiperoleh Akar Persamaan x = %.3f", x3);
printf("\n\nDengan Error sebesar = %.16f", fabs(fx3));
fprintf(regula_falsi,"\n\nDengan Nilai awal x1 = %.2f dan x2 = %.2f", x10,
x20);
fprintf(regula_falsi,"\n\nDiperoleh Akar Persamaan x = %.3f", x3);
fprintf(regula_falsi,"\n\nDengan Error sebesar = %.16f", fabs(fx3));
fclose(regula_falsi);
cout << "\n\nTekan Enter untuk melanjutkan .........";
getch();
clrscr();
cout << "\n\nCoba lagi dengan x dan y berbeda (y/t) ? ";
cin >> lagi;
}while(lagi != 't');
return 0;
}
Semoga bermanfaat


2 comments: