Anda di halaman 1dari 11

NAMA : ISWARI AFALA

NIM : 4183540001

No.1

i3 = i1 + i2 ...... Persamaan (1)

∑V = 0
-14 V + i1.(6 ohm) – 10 V – i2.(4 ohm) = 0
6 i1 – 4 i2 = 24 V
3 i1 – 2 i2 = 12 V...... Persamaan (2)
∑V = 0
10 V – i1.(6 ohm) – i3.(2 Ohm) = 0

Karena, i3 = i1 + i2, maka


10 V – i1.(6 ohm) – (i1 + i2)(2 Ohm) = 0
8 i1 + 2 i2 = 10 V ........ Persamaan (3)

Eliminasi i2 pada persamaan (2) dan (3)


3 i1 – 2 i2 = 12
8 i1 + 2 i2 = 10
------------------------ +
11 i1 = 22
i1 = 22/11 = 2 A

Kemudian substitusi i1 = 2A ke persamaan (2)


3 i1 – 2 i2 = 12
3 (2) – 2 i2 = 12
2 i2 = -6
i2 = -6/2 = -3 A(berlawanan arus sebenarnya)
Gunakan persamaan 1 untuk mencari nilai i3
i3 = i1 + i2 = 2 A – 3 A = -1 A

Jadi, besarnya arus i1, i2 dan i3 adalah 2 A, 3A, dan 1 A.

LAPLACE
%persamaan laplace dengan menggunakan metode gauss seidel

%create a blank scalar field


T=nan(5,5);
T(1,2:end-1)=0;
T(end,2:end-1)=100;
T(2:end-1,1)=50;
T(2:end-1,end)=75:

%initialize to zero
T(2:end-1, 2:end-1)=0;

for k=1:100
Tp=T;
for x=2:4;
for y=2:4;
T(x,y) = 0.25*(T(x+1,y) + T(x-1,y) + T(x,y+1) + T(x,y-1));
end
end
E=T-Tp;
e=mean(mean(E(2:end-1, 2:end-1).^2));
mesh(T);
disp(e);
if (e < 1e-3);
disp( [k e]);
pause;

POISSON
nx = 40; ny = 40;
nt = 200; ngs= 20;

rho = 1;
nu = .5;
dt = .001;

dx = 2/(nx-1); dy = 29ny-1);

x = 0:dx:2; y = 0;dy:2;
[Y,X] = meshgrid(y,x);

u = zeros(nx,ny);
v = zeros(nx,ny);
p = zeros(nx,ny);
b = zeros(nx,ny);

p(1,:)= 5;
p(nx, :) = 2;

for n = 1:nt %outer time step loop

for i=2:nx-1 %fill b array


for j=2:ny-1
b(i,j)=
end
end

for igs=1:ngs %gauss seidel loop for p

for i = 2:nx-1
for j=2:ny-1
p(i,j)=
end
end

%enforce neumann b.c for p


p(:,1) = %dp/dy = 0 at y = 0
p(:,ny) = %dp/dy = 0 t y = 2

end

un =
vn =
for i = 2:nx-1
for j = 2:nx-1
u(i,j) =
v(i,j) =
end
end

%enforce neumann b.c. for u and v


u(1,:) = (2,:); %du/dx = 0 at x = 0
u(nx,:)=(nx-1),:); %du/dx = 0 @ x + 2
v91,:) = v(2,:); %dv/dx = 0 at x = 0
v9nx,:)= v(nx-1),:); %dv/dx = ) @ x = 2
if mod(n-1,5) == 0 %animate
contourf(X,Y,u)
hold on
colorbar()
contour(X,Y,u)
quiver(X(1:2:nx,1:2:ny),Y(1:2:nx,1:2:ny),u(1:2:nx,1:2:ny), ......
v(1:2:nx,1:2:ny) %looks better plotting every other arror
title ('channel flow - velocity contour')
pause(.2)
end
end %end of time stepping loop

3. Tentukan solusi dari persamaan Lorenz.

a. Susun algoritmanya,

b. Susun bahasa pemrogramannya, dan

c. Tujukkan hasil runningnya.

Jawab

persamaan differensial berikut.

dxdt=σ(y–x)

dydt=ρx–y–xz

dzdt=xy–βz
Dengan σ = 10, ρ = 28, dan β = 8/3. Dengan menggunakan Runge-Kutta orde-4,

Tampilan di code bloks

#include <iostream>

#include <fstream>

using namespace std;

// DEFINISI NILAI sigma, rho, dan beta

#define sigma 8

#define rho 28

#define beta 2.667 // beta = 8/3

// INISIALISASI FUNGSI untuk x, y, dan z

float fx(float,float,float);

float fy(float,float,float,float);

float fz(float,float,float,float);

// FUNGSI UTAMA

int main() {

float h = 0.01; // nilai step h

int i,iter = 10000; // iter = jumlah iterasi

// inisialisasi matriks untuk menampung x,y,z

float xdat[iter],ydat[iter],zdat[iter];

// inisialisasi k1,k2,k3,k4 untuk x,y,z


float kx1,kx2,kx3,kx4;

float ky1,ky2,ky3,ky4;

float kz1,kz2,kz3,kz4;

// nilai awal t,x,y,z

float t=0,x=1,y=1,z=1;

xdat[0]=x;ydat[0]=y;zdat[0]=z;

// iterasi untuk mencari nilai x,y,z

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

// NILAI K1

kx1 = fx(t, x, y);

ky1 = fy(t, x, y, z);

kz1 = fz(t, x, y, z);

// NILAI K2

kx2 = fx(t+(0.5*h), x+(0.5*kx1*h), y+(0.5*ky1*h));

ky2 = fy(t+(0.5*h), x+(0.5*kx1*h), y+(0.5*ky1*h), z+(0.5*kz1*h));

kz2 = fz(t+(0.5*h), x+(0.5*kx1*h), y+(0.5*ky1*h), z+(0.5*kz1*h));

// NILAI K3

kx3 = fx(t+(0.5*h), x+(0.5*kx2*h), y+(0.5*ky2*h));

ky3 = fy(t+(0.5*h), x+(0.5*kx2*h), y+(0.5*ky2*h), z+(0.5*kz2*h));

kz3 = fz(t+(0.5*h), x+(0.5*kx2*h), y+(0.5*ky2*h), z+(0.5*kz2*h));

// NILAI K4
kx4 = fx(t+h, x+(kx3*h), y+(ky3*h));

ky4 = fy(t+h, x+(kx3*h), y+(ky3*h), z+(kz3*h));

kz4 = fz(t+h, x+(kx3*h), y+(ky3*h), z+(kz3*h));

// NILAI X, Y, Z

xdat[i] = xdat[i-1] + (0.1667 * (kx1 + 2*kx2 + 2*kx3 + kx4) * h);

ydat[i] = ydat[i-1] + (0.1667 * (ky1 + 2*ky2 + 2*ky3 + ky4) * h);

zdat[i] = zdat[i-1] + (0.1667 * (kz1 + 2*kz2 + 2*kz3 + kz4) * h);

// UPDATE NILAI t, x, y, dan z

t = t + h;

x = xdat[i];

y = ydat[i];

z = zdat[i];

// MEMASUKKAN NILAI X,Y,Z YANG DIPEROLEH KE DALAM FILE data.txt

ofstream writefile;

writefile.open("data.txt"); // membuka file data.txt

cout << "x y z";

for (i=0;i<iter;i++) { // mulai memasukkan data x,y,z ke data.txt

writefile << xdat[i];

writefile << " ";

writefile << ydat[i];


writefile << " ";

writefile << zdat[i];

writefile << "\n";

// menampilkan data x,y,z ke commandline

cout << xdat[i] << " " << ydat[i] << " " << zdat[i] << endl;

writefile.close(); // menutup file data.txt

// MENAMPILKAN KETERANGAN PROGRAM SELESAI DIJALANKAN

// DAN MENAMPILKAN TAMBAHAN PERINTAH UNTUK MENAMPILKAN GRAFIK

cout << "\nPROGRAM SELESAI DIJALANKAN\n";

cout << "Data x, y, dan z ada dalam file data.txt.\n";

cout << "Untuk menampilkan grafik x-y-z, dapat digunakan aplikasi gnuplot dengan perintah
:\n\n";

cout << "splot \"data.txt\" using 1:2:3 with lines\n\n";

cout << "atau dengan menggunakan MATLAB/Octave dengan perintah : \n\n";

cout << "m = dlmread('data.txt',' ');\n";

cout << "plot3(m(:,1),m(:,2),m(:,3));\n";

// FUNGSI X

float fx(float t, float x, float y) {

float valfx;
valfx = sigma * (y - x);

return valfx;

// FUNGSI Y

float fy(float t, float x, float y, float z) {

float valfy;

valfy = x * (rho - z) - y;

return valfy;

// FUNGSI Z

float fz(float t, float x, float y, float z) {

float valfz;

valfz = (x * y) - (beta * z);

return valfz;

Tampilan di gnuplot