Tuesday, 15 April 2014

metode numerik gaus seidel error ditentuakan user.menggunakan bahasa pemrograman c/c++

hasilnya
---------------------------------------------------------------------------------------------------------
include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#define X1(x2,x3) ((b[1] + ((-1)*a[1][2]*(x2)) + ((-1)*a[1][3]*(x3)))/a[1][1])
#define X2(x1,x3) ((b[2] + ((-1)*a[2][1]*(x1)) + ((-1)*a[2][3]*(x3)))/a[2][2])
#define X3(x1,x2) ((b[3] + ((-1)*a[3][1]*(x1)) + ((-1)*a[3][2]*(x2)))/a[3][3])

int main()
{
int i,j,n,k;
double x1=0,x2=0,x3=0;
float a[10][10],b[10],y1,y2,y3,inerror,error;
printf("\tprogram untuk gaus-seidel\n\n");
printf("masukan banyak matrik yang digunakan : ");
scanf("%d",&n);
printf("\nmasukan nilai matriknya : \n");
for (i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("niali a[%d][%d]= ",i,j);
scanf("%f",&a[i][j]);
}
printf("\n");
}
printf("masukan nialai konstanta : \n");
for(i=1;i<=1;i++)
{
for(j=1;j<=n;j++)
{
printf("nilai b[%d]= ",j);
scanf("%f",&b[j]);
}
printf("\n");
}

printf("masukan nilai errornya (dalam persen) = ");
scanf("%f",&inerror);
printf("\n");
error=inerror/100;
printf("persamaan sebagai berikut : \n");
int i1=1,i2=2,i3=3;
for(j=1;j<=n;j++)
{
printf("%fx1 + %fx2 + %fx3 =%f\n",a[j][i1],a[j][i2],a[j][i3],b[j]);
}


printf("\npersamaan gausidel : \n");
printf("x1=(%f - %fx2 - %fx3)/ %f \n",b[1],a[1][2],a[1][3],a[1][1]);
printf("x2=(%f - %fx1 - %fx3)/ %f \n",b[2],a[2][1],a[2][3],a[2][2]);
printf("x3=(%f - %fx1 - %fx2)/ %f \n",b[3],a[3][1],a[3][2],a[3][3]);
printf("\n");
printf("-------------------------------------------------------------------------------\n");
printf("      \tx1\t\t\tx2\t\t\tx3\n");
printf("-------------------------------------------------------------------------------\n");
printf("\t%f\t\t%f\t\t%f",x1,x2,x3);
do
{
y1=X1(x2,x3);
y2=X2(y1,x3);
y3=X3(y1,y2);
if(fabs(y1-x1)<error && fabs(y2-x2)<error && fabs(y3-x3)<error)
{
printf("\n-------------------------------------------------------------------------------\n");
printf("\n\nx1 = %.3lf",y1);
printf("\n\nx2 = %.3lf",y2);
printf("\n\nx3 = %.3lf",y3);
k = 1;
}
else
{
x1 = y1;
x2 = y2;
x3 = y3;
printf("\n\t%f\t\t%f\t\t%f",x1,x2,x3);
}
}
while(k != 1);
printf("\n");
system("pause");
return 0;
}

hasilnya

No comments:

Post a Comment