このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1248012902/330
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 期限 】10月17日
# 【 Ver  】1.6.0_11
#
# A=
# {-7.29565,6.54738,4.07991}
# {-5.58592,7.51773,-1.78163}
# {9.22599,-3.26847,-3.03223}
# {6.25081,-8.75345,-4.31528}
#
# 行列norm ||A||1、||A||∞を求めるプログラムを作成せよ
#
#
# 参考になるかはわかりませんが、複素数ベクトル版の2-norm、∞-normを
# 求めるプログラムはこれです
# http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/803.java

norm(_行列,1,X) :-
    行列の転置(_行列,_行列1),
    findmax(S,(member(L,_行列1),abs_sum(L,S)),X).
norm(_行列,inf,X) :-
    findmax(S,(member(L,_行列),abs_sum(L,S)),X).
norm(_行列,N,X) :-
    integer(N),
    findsum(S1,(member(L,_行列) , 'N乗_sum'(L,N,S1)),Y),
    X is Y ^ (1 / N).

abs_sum([],0) :- !.
abs_sum([A|R1],S) :-
    abs_sum(R1,S1),
    S is abs(A) + S1.

'N乗_sum'([],N,0) :- !.
'N乗_sum'([A|R1],N,S) :-
    'N乗_sum'(R1,N,S1),
    S is A^N + S1.