このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/455
#  [1] 授業単元: C言語 
#  [2] 質問: 
#  datファイルから行列A,ベクトルx,bを読み込みAx=bを解く問題です。 
#  以下のようにコードを書いてみたのですが問題が多くコンパイルできません。 
#  おかしなところが多いと思いますがアドバイスいただけると助かります 
#  http://ime.nu/ideone.com/V7ztM  
#   
#  input_sp.dat
#   
#  1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 
#  1.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 
#  1.000000 3.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 5.000000 
#  1.000000 3.000000 5.000000 7.000000 7.000000 7.000000 7.000000 7.000000 7.000000 7.000000 
#  1.000000 3.000000 5.000000 7.000000 9.000000 9.000000 9.000000 9.000000 9.000000 9.000000 
#  1.000000 3.000000 5.000000 7.000000 9.000000 11.000000 11.000000 11.000000 11.000000 11.000000 
#  1.000000 3.000000 5.000000 7.000000 9.000000 11.000000 13.000000 13.000000 13.000000 13.000000 
#  1.000000 3.000000 5.000000 7.000000 9.000000 11.000000 13.000000 15.000000 15.000000 15.000000 
#  1.000000 3.000000 5.000000 7.000000 9.000000 11.000000 13.000000 15.000000 17.000000 17.000000 
#  1.000000 3.000000 5.000000 7.000000 9.000000 11.000000 13.000000 15.000000 17.000000 19.000000 
#   
#  10.000000 28.000000 44.000000 58.000000 70.000000 80.000000 88.000000 94.000000 98.000000 100.000000 
#   
#  0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
#    

'datファイルから行列A,ベクトルx,bを読み込みAx=bを解く'(_x) :-
        get_split_lines('input_sp.dat',[' '],LL),
        append(LL0,[[]|R],LL),
        '行列Aを得る'(LL0,_A),
        'ベクトルbを得る'(R,_b),
        'Ax=bを解く'(_A,_b,_x).

'行列Aを得る'(LL0,_A) :-
        findall(L2,(
                    member(L1,LL0),
                    全要素を数値に変換(L1,L2)),
                    member(_項,L1),
                _A).

'ベクトルbを得る'([L|_],_b) :-
        全要素を数値に変換(L,L1),
        ベクトルに変換(L1,_b).

全要素を数値に変換([],[]).
全要素を数値に変換([A|R1],[N|R2]) :-
        atom_number(A,N),
        全要素を数値に変換(R1,R2),!.
全要素を数値に変換([A|R1],[N|R2]) :-
        atom_to_term(A,N,_),
        全要素を数値に変換(R1,R2).

ベクトルに変換([],[]).)
ベクトルに変換([V|R1],[[V]|R2]) :-
        ベクトルに変換(R1,R2).

'Ax=bを解く'(_A,_b,_x) :-
        逆行列(_A,_A_1),
        '行列の掛算'(_A_1,_b,_x).


%  行列の掛算/2