Anda di halaman 1dari 12

SOAL NO.

3
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.
Penyelesaian

Gambar 1. Batas-batas temperature pada pelat konduktor


Syarat batas :

Kasus ini termasuk dalam kasus 2D dalam koordinat kartesian, persamaannya menjadi:

Kemudian bentuk kasus PDP di atas, didiskritisasi menjadi:

* x=y, maka :

Bila indeksnya disorting secara ascending, hasilnya:


( )

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

j=3,i=1
(

)
(

j=3,i=2
(

j=3,i=3
(

)
(

Hasil Matriksnya adalah

][

Karena yang kita gunakan n=3 dan L=3 cm, maka x=y dapat dicari dengan rumus :

Masukkan nilai x=y=0,75 cm pada matriks, diperoleh:

][

b. Jelaskan pula metode yang digunakan untuk mencari solusi persamaan liniernya!
Penyelesaian:
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>

float H;

#include <conio.h>

H=(-2.8125+a+b+c)/4;
return(H);

float u1(float a,float b)


{

}
float u6(float a,float b,float c)

float H;

H=(65.9375+a+b)/3;

float H;

return(H);

H=(97.1875+a+b+c)/4;

return(H);

float u2(float a,float b,float c)

{
float H;

float u7(float a,float b)

H=(15.9375+a+b+c)/3;

return(H);

float H;

H=(28.4375+a+b)/3;

float u3(float a,float b)


{
float H;

return(H);
}
float u8(float a,float b,float c)

H=(115.9375+a+b)/3;

return(H);

float H;

H=(-21.5625+a+b+c)/3;

float u4(float a,float b,float c)


{
float H;

return(H);
}
float u9(float a,float b)

H=(47.1875+a+b+c)/4;

return(H);

float H;

H=(28.4375+a+b)/3;

float u5(float a,float b,float c)

return(H);

u[3][0]=u[3][1];
a3=u[3][1];

main(){
int i,j,m,k;

u[4][1]=u4(u[1][0],u[5][0],u[7][0]);

float a1,a2,a3,a4,a5,a6,a7,a8,a9;

delta4=fabs(u[4][1]-u[4][0]);

float u[9][9];

u[4][0]=u[4][1];

float delta0, delta1,delta2,delta3,delta4;

a4=u[4][1];

float delta5,delta6,delta7,delta8, delta9;


u[1][0]=0; u[6][0]=0;

u[5][1]=u5(u[2][0],u[6][0],u[8][0]);

u[2][0]=0; u[7][0]=0;

delta5=fabs(u[5][1]-u[5][0]);

u[3][0]=0; u[8][0]=0;

u[5][0]=u[5][1];

u[4][0]=0; u[9][0]=0;

a5=u[5][1];

u[5][0]=0;
printf("Program mencari nilai U\n\n");
printf("\nMasukkan nilai terkecil (dx <<1 ): ");
scanf("%f",&delta0);

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];

k=1;
a6=u[6][1];
do {
u[7][1]=u7(u[4][0],u[8][0]);
u[1][1]=u1(u[2][0],u[4][0]);
delta7=fabs(u[7][1]-u[7][0]);
delta1=fabs(u[1][1]-u[1][0]);
u[7][0]=u[7][1];
u[1][0]=u[1][1];
a7=u[7][1];
a1=u[1][1];
u[8][1]=u8(u[5][0],u[7][0],u[9][0]);
u[2][1]=u2(u[1][0],u[3][0],u[5][0]);
delta8=fabs(u[8][1]-u[8][0]);
delta2=fabs(u[2][1]-u[2][0]);
u[8][0]=u[8][1];
u[2][0]=u[2][1];
a8=u[8][1];
a2=u[2][1];
u[9][1]=u9(u[6][0],u[8][0]);
u[3][1]=u3(u[2][0],u[6][0]);
delta9=fabs(u[9][1]-u[9][0]);
delta3=fabs(u[3][1]-u[3][0]);

u[9][0]=u[9][1];
a9=u[9][1];

}
while(delta1<delta0 && delta2<delta0 &&
delta3<delta0 && delta3<delta0

printf("u1\tu2\tu3\n");
printf("%f\t%f\t%f\n",a1,a2,a3);

&& delta4<delta0 && delta5<delta0 &&


delta6<delta0 && delta7 < delta0

printf("u4\tu5\tu6\n");

&& delta8< delta0 && delta9<delta0);

printf("%f\t%f\t%f\n",a4,a5,a6);
printf("u7\tu8\tu9\n");

getch();

printf("%f\t%f\t%f\n",a7,a8,a9);

k++;

Tampilan Program

Untuk nilai tiap U, diperoleh:


o
o
o
o
o

u1 = u11 = 21,979166 C
u2 = u21 = 12,638888 C
u3 = u31 = 42,858795 C
u4 = u12 = 17,291666 C
u5 = u22 = 2,456597 C

o
o
o
o

u6 = u32 = 35,625725 C
u7 = u13 = 15,243055 C
u8 = u23 = -1,287616 C
u9 = u33 = 20,925203 C

Soal No.4
Tekanan udara (

) dalam sebuah pipa organ dibentuk dengan persamaan gelombang.

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
Penyelesaian:
Gambar pipa untuk kasus di atas :

Pada kasus di atas termasuk dalam kasus 1 dimensi dalam koordinat kartesian, maka
persamaannya dapat diuraikan menjadi :

Kemudian bentuk kasus PDP di atas, didiskritisasi menjadi :

Dengan menetapkan bahwa x=t, maka :

secara eksplisit :
( )

dari syarat batas diketahui bahwa :

dengan n=

)
(

(
)

iterasi :
k=0, i=1

k=0, i=2

k=0, i=9

Matriksnya persamaan eksplisit di atas pada t=0s adalah

diketahui bahwa :

[ ]

) dengan xi = i*x dan p0=0.9, maka


(
(
(
(
(

(
(
(
(

)
)
)
)
)

)
)
)
)]

Listing program:
#include <stdio.h>

printf("p1=Ap0+c\n");

#include <math.h>

printf("matriks A\n");

#include <conio.h>

for(i=1 ; i<=n; i++){

#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);

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("matriks c\n");

printf("%f\n",c[i]);

for (i=1; i<=n; i++){

}
printf(" maka p1=Ap0 + c, didapat

printf("c[%d]=",i);scanf("%f",&c[i]);}

matriks p1 yaitu \n");


for (i=1;i<=n;i++){

system("cls");

for (j=1;j<=1;j++){

printf("Matriks A\n");

p1[i][j]=0;

for(i=1;i<=n;i++){

for(k=1;k<=n;k++){

for (j=1;j<=n; j++){

p1[i][j]=p1[i][j]+A[i][k]*p0[k];}

printf("%.0f",A[i][j]);

p1[i][j]=p1[i][j]+c[i];

} printf("\n");}

printf("p1[%d]=%f\n",i,p1[i][j]);}}

printf("matriks p0\n");

getch();

for(i=1;i<=n;i++){

printf("%f\n",p0[i]);

Tampilan program:

Diperoleh hasil akhirnya:


o p1(1) = 0,400
o p2(1) = 0,191
o p3(1) = -0,190
o p4(1) = -0.499
o p5(1) = -0,618
o p6(1) = -0,500
o p7(1) = -0,192
o p8(1) = 0,189
o p9(1) = 0.399

Anda mungkin juga menyukai