#title: derivadas em maxima #author: jj #let: s m = { ref2str(rand_sqr_matrix_nat(2,10)) }; s m1 = perl{maximamat(3,10) }; f m2 = perl{maximamat(3,10) }; f deter = determinant(#m2); f m3 = perl{ maximamat(5,0,1) }; ##s com = { if(#deter % 2 == 1){"impar"} else {"par" } }; s com1 = perl{ if(#deter % 2 == 1){"impar"} else {"par" } }; s com2 = perl{ #deter / 2 }; #format "_OFD_"=\fbox{Out of domain} #question: \begin{enumerate} \item m1: $ #m $ \item m2: $ #m1 $ \item m2 mais bonita: $ #m2 $ \item matriz booleana : $ #m3 $ \item determinante(m2): $ #deter $ \item comentário: o determinante é #com1; metade dele é #com2. \end{enumerate} #sugestion: #resolution: #result: #Verify: #usepackage % \usepackage{...} latex preambula #perl sub maximamat{maxima_matrix(rand_sqr_matrix_nat(@_));} ## (dim, max) or (dim, min, max) sub rand_sqr_matrix_nat{ my($dim,$m1,$m2)=@_; ## (dim, max) or (dim, min, max) my ($m,$min,$max); if(defined $m2){ $min = $m1; $max = $m2 } else { $min = 1 ; $max = $m1 } for my $i(0..$dim-1){ for my $j(0..$dim-1){ $m->[$i][$j]= $min + int rand(1+$max-$min) } } return $m } sub ref2str{ my($v,$l) = @_; if(ref($v) eq "ARRAY"){ return "[" . join(",", (map{ ref2str($_) } @$v)). "]" } else { return $v } } sub maxima_matrix{ my($v,$l) = @_; return "matrix(" . join(",", (map{ ref2str($_) } @$v)). ")" }