RosettaCodeData/Task/Resistor-mesh/Octave/resistor-mesh.octave
2015-02-20 00:35:01 -05:00

40 lines
604 B
Text

N = 10;
NN = N*N;
G = sparse(NN, NN);
node = 0;
for row=1:N;
for col=1:N;
node++;
if row > 1
G(node, node)++;
G(node, node - N) = -1;
end
if row < N;
G(node, node)++;
G(node, node + N) = -1;
end
if col > 1
G(node, node)++;
G(node, node - 1) = -1;
end
if col < N;
G(node, node)++;
G(node, node + 1) = -1;
end
end
end
current = sparse(NN, 1);
Ar = 2; Ac = 2; A = Ac + N*( Ar - 1 );
Br = 7; Bc = 8; B = Bc + N*( Br - 1 );
current( A ) = -1;
current( B ) = +1;
voltage = G \ current;
VA = voltage( A );
VB = voltage( B );
full( abs( VA - VB ) )