新しく発言する  EXIT  インデックスへ

論理演算や集合演算の計算して、その結果を...


  論理演算や集合演算の計算して、その結果を真理値表やベン図で表す 山中和義 2008/03/08 14:38:52  (修正1回)
  つづき(真理値表、ベン図) 山中和義 2008/03/08 14:41:15 
  │└つづき(式の評価eval) 山中和義 2008/03/08 14:43:25  (修正1回)
  │ └つづき 山中和義 2008/03/08 14:44:12  (修正1回)
  │  └つづき 山中和義 2008/03/08 14:44:53 
  │   └つづき(メイン) 山中和義 2008/03/08 14:46:11  (修正1回)
  真理値表(truthtable)から論理式(論理関... 山中和義 2008/03/10 10:55:33 
  !真理値表から多変数多項式をつくる 山中和義 2008/04/08 14:22:27 
Re: 論理演算や集合演算の計算して、その結果を真理値表やベン図で表す  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/04/08 14:22:27
!真理値表から多変数多項式をつくる

!n変数a,b,c,…の論理関数f(a,b,c,…)を、n変数の多項式で表す

!1変数の場合、項a,1を使った多項式で表現する。
!係数x1,x2とすると、a op b=x1*a+x2*1となる。
! 否定 NOT a = -a+1
!
!2変数の場合、項a,b,ab,1を使った多項式で表現する。
!係数x1,x2,x3,x4とすると、a op b=x1*a+x2*b+x3*ab+x4*1となる。
!
! 論理積 a AND b = ab
! 論理和 a OR b = a+b-ab
! 排他的論理和 a XOR b = a+b-2ab
! 包含 a → b = -a+ab-1
!
!※n変数では2^n個の項がある


LET N=3 !変数の数

DIM T(2^N,2^N) !項 a b c ab bc ca abc 1
DEF idx(a,b,c)=(a*2+b)*2+c+1 !※真理値表から機械的に生成する
FOR a=0 TO 1
FOR b=0 TO 1
FOR c=0 TO 1
LET T(idx(a,b,c),1)=a
LET T(idx(a,b,c),2)=b
LET T(idx(a,b,c),3)=c
LET T(idx(a,b,c),4)=a*b
LET T(idx(a,b,c),5)=b*c
LET T(idx(a,b,c),6)=c*a
LET T(idx(a,b,c),7)=a*b*c
LET T(idx(a,b,c),8)=1
NEXT c
NEXT b
NEXT a

! f 論理関数 a OR b OR c
DATA 0 !0,0,0
DATA 1 !0,0,1
DATA 1 !0,1,0
DATA 1 !0,1,1
DATA 1 !1,0,0
DATA 1 !1,0,1
DATA 1 !1,1,0
DATA 1 !1,1,1
DIM f(2^N)
MAT READ f

DIM x(2^N) !連立方程式Tx=f

DIM iT(2^N,2^N) !逆行列を求める
MAT iT=INV(T)

MAT x=iT*f !xを求める
MAT PRINT x !係数列 ※a+b+c-ab-bc-ca+abc


END

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。