現在の閲覧者数:

オームの法則

オームの法則の計算

I:電流. E:電圧. R:抵抗.
3つの変数の内2つがわかれば、残りの1つが計算される

♪ プログラムコード code

% cat ohm_prolog.pl

ohm_IER( I, E, R ):-
    number(I),
    number(E),
    number(R),
    I =:= E / R,
    E =:= I * R,
    R =:= E / I.
ohm_IER( I, E, R ):- var(I), number(E), number(R),  I is E / R.
ohm_IER( I, E, R ):- var(E), number(I), number(R),  E is I * R.
ohm_IER( I, E, R ):- var(R), number(E), number(I),  R is E / I.

serial( [], 0).
serial( [Ra|Rz], R ):-
    serial( Rz, R1 ), R is Ra + R1.


parallel( A, R ):- ppp( A, B ), R is 1/B.

ppp( [], 0 ).
ppp( [A|B], R ) :-
ppp( B, R1 ), R is 1/A + R1.




実行例

mugenkai:uema% swipl -qs ohm_prolog.pl        [~/ドキュメント/ohm_prolog]
?- ohm_IER( 0.02, 2, R ).
R = 100.0.

?- ohm_IER( 0.02, E, 100 ).
E = 2.0 ;
false.

?- ohm_IER( I, 2, 100 ).
I = 0.02 ;
false.

?- ohm_IER( 0.02, 2, 100 ).
true ;
false.

?- serial( [50,50], R ).
R = 100.

?- serial( [50,50], R ), ohm_IER( I, 2, R ).
R = 100,
I = 0.02 ;
false.

?- parallel( [200, 200], R ).
R = 100.0.

?- parallel( [200, 200], R ), ohm_IER( 0.02, E, R ). 

R = 100.0,
E = 2.0 .

?- parallel( [200,200], A ), parallel( [200,200], B ), serial( [A,B],R ).
A = B, B = 100.0,
R = 200.0.

?-

inserted by FC2 system