Jump to content

Determinant and permanent: Difference between revisions

→‎Tcl: Added implementation
(→‎Tcl: Added implementation)
Line 41:
and the permanent can be defined as
<lang parigp>matperm(M)=my(n=#M,t);sum(i=1,n!,t=numtoperm(n,i);prod(j=1,n,M[j,t[j]]))</lang>
 
=={{header|Tcl}}==
The determinant is provided by the linear algebra package in Tcllib:
{{tcllib|math::linearalgebra}}
<lang tcl>package require Tcl
puts [math::linearalgebra::det $mat]</lang>
The permanent (being somewhat less common) requires definition, but is easily described:
{{tcllib|struct::list}}
<lang tcl>package require struct::list
 
proc permanent {matrix} {
for {set plist {};set i 0} {$i<[llength $matrix]} {incr i} {
lappend plist $i
}
foreach p [::struct::list permutations $plist] {
foreach i $plist j $p {
lappend prod [lindex $matrix $i $j]
}
lappend sum [tcl::mathop::* {*}$prod[set prod {}]]
}
return [tcl::mathop::+ {*}$sum]
}
 
puts [permanent $mat]</lang>
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.