Professional Documents
Culture Documents
Halim Budiman (140310090060) Riyan Adiputra (140310090080) Kelas Dosen :B : Dr. Irwan Ary Dharmawan
Program Studi Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Padjadjaran 2012
Kasus 1 Sebuah pelat konduktor tipis berbentuk persegi dengan ukuran 3 x 3 cm. distribusi temperature dalam keadaan setimbangnya memenuhi persamaan sebagai berikut :
Dengan syarat batas kiri dan kanan berupa temperature konstan sebesar 500C dan 1000C berturut-turut. Sedangkan syarat batas untuk atas dan bawah terjadi kehilangan kalor yang diungkapkan dengan persamaan :
a. Bila pada permukaan bidang atas dan bawah dari pelat tersebut terinsulasi, jelaskan bagaimana solusi numeric dari kasus ini dengan menggunakan metode beda hingga ( finite defference ), gunakan N=3 dengan x=y.
( (
) )
Pada kasus di atas termasuk dalam kasus 2 dimensi dalam koordinat kartesian, maka persamaannya dapat diuraikan menjadi :
Dengan grid yang kita gunakan ialah bujur sangkar atau x=y, maka :
Bila indeksnya kita sorting secara ascending, sehingga : ( ) Persamaan (a) merupakan sistem persamaan linier berupa iterasi berindeks i dan j. j=1, i=1 ( j=1, i=2 ( j=1,i=3 ( j=2, i=1 ) ( ) ) ( ) ) ( )
( j=2,i=2 (
) )
j=2,i=3
( ) Maka, bila sembilan persamaan di atas ditulis dalam matriks sebagai berikut :
][
Karena yang kita gunakan n=3 dan L=3 cm, maka x=y dapat dicari dengan rumus :
matriks di atas
][
b. Jelaskan pula metode yang digunakan untuk mencari solusi persamaan liniernya !! Jawab Untuk mencari solusi dari sistem persamaan linier di atas, kita dapat menggunakan metode iterasi Gauss-Seidel dengan rumusan sebagai berikut :
( )
( )
Dengan : aii = elemen pada matriks koefisien pada saat i=j m = ordo matriks m x m k = iterasi ke-k , k=1,2,3,. bi = elemen matriks konstanta (mx1) pada saat i, i=1,2,3,.m uj = elemen matriks variabel (mx1) pada saat j=1,2,3,m Listing Program
#include <stdio.h> #include <math.h> #include <conio.h> float u1(float a,float b){ float H; H=(65.9375+a+b)/3; return(H); } float u2(float a,float b,float c){ float H; H=(15.9375+a+b+c)/3; return(H); } float u3(float a,float b){ float H; H=(115.9375+a+b)/3; return(H); } float u4(float a,float b,float c){
float H; H=(47.1875+a+b+c)/4; return(H); } float u5(float a,float b,float c){ float H; H=(-2.8125+a+b+c)/4; return(H); } float u6(float a,float b,float c){ float H; H=(97.1875+a+b+c)/4; return(H); } float u7(float a,float b){ float H; H=(28.4375+a+b)/3; return(H); } float u8(float a,float b,float c){ float H; H=(-21.5625+a+b+c)/3; return(H); } float u9(float a,float b){ float H; H=(28.4375+a+b)/3; return(H); } main(){ int i,j,m,k; float a1,a2,a3,a4,a5,a6,a7,a8,a9; float u[9][9]; float delta0, delta1,delta2,delta3,delta4; float delta5,delta6,delta7,delta8, delta9; u[1][0]=0; u[6][0]=0; u[2][0]=0; u[7][0]=0; u[3][0]=0; u[8][0]=0; u[4][0]=0; u[9][0]=0; u[5][0]=0; printf("input nilai terkecil <<1 : "); scanf("%f",&delta0); k=1; do { u[1][1]=u1(u[2][0],u[4][0]); delta1=fabs(u[1][1]-u[1][0]); u[1][0]=u[1][1];
a1=u[1][1]; u[2][1]=u2(u[1][0],u[3][0],u[5][0]); delta2=fabs(u[2][1]-u[2][0]); u[2][0]=u[2][1]; a2=u[2][1]; u[3][1]=u3(u[2][0],u[6][0]); delta3=fabs(u[3][1]-u[3][0]); u[3][0]=u[3][1]; a3=u[3][1]; u[4][1]=u4(u[1][0],u[5][0],u[7][0]); delta4=fabs(u[4][1]-u[4][0]); u[4][0]=u[4][1]; a4=u[4][1]; u[5][1]=u5(u[2][0],u[6][0],u[8][0]); delta5=fabs(u[5][1]-u[5][0]); u[5][0]=u[5][1]; a5=u[5][1]; u[6][1]=u6(u[3][0],u[5][0],u[9][0]); delta6=fabs(u[6][1]-u[6][0]); u[6][0]=u[6][1]; a6=u[6][1]; u[7][1]=u7(u[4][0],u[8][0]); delta7=fabs(u[7][1]-u[7][0]); u[7][0]=u[7][1]; a7=u[7][1]; u[8][1]=u8(u[5][0],u[7][0],u[9][0]); delta8=fabs(u[8][1]-u[8][0]); u[8][0]=u[8][1]; a8=u[8][1]; u[9][1]=u9(u[6][0],u[8][0]); delta9=fabs(u[9][1]-u[9][0]); u[9][0]=u[9][1]; a9=u[9][1]; printf("u1\tu2\tu3\n"); printf("%f\t%f\t%f\n",a1,a2,a3); printf("u4\tu5\tu6\n"); printf("%f\t%f\t%f\n",a4,a5,a6); printf("u7\tu8\tu9\n"); printf("%f\t%f\t%f\n",a7,a8,a9); k++; }
while(delta1<delta0 && delta2<delta0 && delta3<delta0 && delta3<delta0 && delta4<delta0 && delta5<delta0 && delta6<delta0 && delta7 < delta0 && delta8< delta0 && delta9<delta0); getch(); }
Tampilan Program
maka didapat : ( )
Kasus 2 Tekanan udara gelombang. ( ) dalam sebuah pipa organ dibentuk dengan persamaan
dengan l ialah panjang pipa dan c adalah konstanta fisis. jika pipa terbuka, maka syarat batas yang berlaku adalah : ( ) ( )
jika nilai c=1, l=1 dengan nilai syarat awal diberikan oleh : ( ) ( ) ( )
tentukan nilai tekanan pada kasus pipa tertutup dengan nilai p0=0.9 dan gunakan x=t=0.1
Pada kasus di atas termasuk dalam kasus 1 dimensi dalam koordinat kartesian, maka persamaannya dapat diuraikan menjadi :
Dengan menetapkan bahwa x=t, maka : secara eksplisit : ( ) dari syarat batas diketahui bahwa : ( ( ) )
dengan n=
( (
) )
k=0, i=2
k=0, i=9
maka matriksnya persamaan eksplisit di atas pada t=0 sekon sebagai berikut :
[ ]
( ( ( (
) ) ) )]
listing program:
#include <stdio.h> #include <math.h> #include <conio.h> #include<stdlib.h> main(){ int i,j,n,k; float p1[100][1000], A[100][100]; float c[100],p0[100]; printf("masukkan ordo matriks :"); scanf("%d",&n); printf("p1=Ap0+c\n"); printf("matriks A\n"); for(i=1 ; i<=n; i++){ for( j=1; j<=n ; j++){ printf("A[%d][%d]=",i,j); scanf("%f",&A[i][j]); }printf("\n");
} printf("matriks p0\n"); for(i=1 ; i<=n ; i++){ p0[i]=cos(i*0.628); printf("p0[%d]=%f\n",i,p0[i]); } printf("matriks c\n"); for (i=1; i<=n; i++){ printf("c[%d]=",i);scanf("%f",&c[i]);} system("cls"); printf("Matriks A\n"); for(i=1;i<=n;i++){ for (j=1;j<=n; j++){ printf("%.0f",A[i][j]); } printf("\n");} printf("matriks p0\n"); for(i=1;i<=n;i++){ printf("%f\n",p0[i]); } printf("matriks c\n"); for(i=1;i<=n;i++){ printf("%f\n",c[i]); } printf(" maka p1=Ap0 + c, didapat matriks p1 yaitu \n"); for (i=1;i<=n;i++){ for (j=1;j<=1;j++){ p1[i][j]=0; for(k=1;k<=n;k++){ p1[i][j]=p1[i][j]+A[i][k]*p0[k];} p1[i][j]=p1[i][j]+c[i]; printf("p1[%d]=%f\n",i,p1[i][j]);}} getch(); }
Tampilan program:
maka didapat :
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )