{VERSION 4 0 "IBM INTEL LINUX" "4.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "Hyperlink" -1 17 "" 0 1 0 128 128 1 2 0 1 0 0 0 0 0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "San Serif" -1 27 "Helvetica" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "ttHyperlink" -1 256 "Courier" 0 0 0 128 128 1 0 1 1 0 0 0 0 0 0 1 }{CSTYLE "" 27 257 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE " " 27 258 "" 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 259 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 262 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 266 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 267 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 268 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 272 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 275 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 276 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 277 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 278 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 279 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 280 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 281 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" 27 282 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 283 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 284 "" 0 1 0 0 255 1 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 285 "" 0 1 0 0 255 1 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 286 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 } {CSTYLE "" 27 287 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 288 "courier" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 289 "time s" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 290 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 291 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 292 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 293 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 294 "times" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 295 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 296 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 297 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal " -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 0 0 0 0 0 1 3 0 3 1 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading \+ 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 8 2 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 3" 4 5 1 {CSTYLE "" -1 -1 " " 1 12 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 } {PSTYLE "Warning" 2 7 1 {CSTYLE "" -1 -1 "" 0 1 0 0 255 1 0 0 0 0 0 0 1 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Title" 0 18 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 1 0 0 0 0 0 0 1 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }{PSTYLE "Aut hor" 0 19 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 8 8 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 4" 5 20 1 {CSTYLE "" -1 -1 "" 1 10 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 18 257 1 {CSTYLE "" -1 -1 "" 1 24 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 7 258 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 7 259 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 260 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 3 261 1 {CSTYLE " " -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 5 262 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 257 "" 0 "" {TEXT 27 35 "Geometria (esercitazioni con Ma ple)" }}{PARA 19 "" 0 "" {TEXT 27 17 "Domenico Luminati" }}{PARA 256 " " 0 "" {TEXT 27 12 "a.a. 2001/02" }}{PARA 0 "" 0 "" {HYPERLNK 17 "Alcu ne nozioni di base" 1 "" "nozioni di base" }}{PARA 0 "" 0 "" {HYPERLNK 17 "Vettori e matrici" 1 "" "vettori e matrici" }}{PARA 0 " " 0 "" {HYPERLNK 17 "Esercizi" 1 "" "esercizi" }}{SECT 1 {PARA 3 "" 0 "nozioni di base" {TEXT 27 22 "Alcune nozioni di base" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 12 "Assegnamento" }}{PARA 0 "" 0 "" {TEXT -1 54 "Per assegnare una variabile, il comando \350 il seguente " } {HYPERLNK 17 ":=" 2 "assignment" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "a := 35;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 " a;" }}}{PARA 0 "" 0 "" {TEXT -1 156 "Se si vuole eliminare l'assegname nto dalla variabile, ossia far ritornare la variabile un puro nome (un simbolo) da poter riusare come simbolo il comando \350:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "a := 'a';" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "a;" }}}{PARA 0 "" 0 "" {TEXT -1 87 "Gli assegnament i, come tutte le altre istruzioni in Maple, possono essere conclusi co n " }{HYPERLNK 17 ": (due punti)" 2 ":" "" }{TEXT -1 13 " anzich\351 c on " }{HYPERLNK 17 "; (punto e virgola)" 2 ";" "" }{TEXT -1 47 ". Si p rovi a valutare la seguente espressione: " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "gino := tino:" }}}{PARA 0 "" 0 "" {TEXT -1 64 "sembra che non sia successo niente. Ma se chiediamo di mostrare " }{TEXT 0 4 "gino" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "gino;" }}}{PARA 0 "" 0 "" {TEXT -1 218 "Quindi, quando abbiamo valutato l'assegnamento, \+ questo \350 stato regolarmente eseguito, anche se non ci \350 stato mo strato. Concludere un comando con : fa s\354 che il comando venga eseg uito ma non ne venga mostrato l'output." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 " " {TEXT 27 15 "Liste e insiemi" }}{PARA 0 "" 0 "" {TEXT -1 4 "Una " } {HYPERLNK 17 "lista" 2 "list" "" }{TEXT -1 114 " \350 una successione \+ finita di oggetti (di ogni tipo), non necessariamente diversi, inclusa tra parentesi quadre [ ]" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "lista := [ 2 , 1 , 1 , 1 , 2 , rino , pino , 2 , rino ]; " }}}{PARA 0 "" 0 "" {TEXT -1 48 "per richiamare un elemento della lista si usa l '" }{HYPERLNK 17 "operatore di selezione" 2 "selection" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "lista[3];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "lista[6];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "lista[9];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "lista[11] ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 " " 0 "" {TEXT 284 21 "Perch\351 questo errore?" }}{PARA 0 "" 0 "" {TEXT -1 89 "Abbiamo cercato di farci dare l'11-esimo elemento di una \+ lista che ne contiene soltanto 9" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 3 "Un " }{HYPERLNK 17 "insieme" 2 "set" "" } {TEXT -1 92 " \350 una successione finita di oggetti distinti (di ogni tipo) inclusa tra parentesi graffe \{\}" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "insieme := \{ 2 , 1 , 1 , 1 , 2 , rino , pino , 2 , r ino \} ;" }}}{PARA 0 "" 0 "" {TEXT -1 259 "come si vede, gli elementi \+ ripetuti, vengono considerati una sola volta, ed inoltre vangono ordin ati, secodo un criterio interno a Maple (sostanzialmente in ordine alf abetico). Gli elementi dell'insieme possono quindi essere richiamati, \+ utilizzando ancora l'" }{HYPERLNK 17 "operatore di selezione" 2 "sele ction" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "insieme[1];" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "insieme[4];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "insieme[5];" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 285 21 "Perc h\351 questo errore?" }}{PARA 0 "" 0 "" {TEXT -1 89 "Abbiamo cercato d i farci dare il quinto elemento di un insieme che ne contiene soltanto 4" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 152 "S e si vuole il numero di elementi che compongono un insieme o una lista (o anche il numero di operandi di una qualunque espressione), si usa \+ il comando " }{HYPERLNK 17 "nops" 2 "nops" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "nops(lista);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "nops(insieme);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 8 "Funzioni" }}{PARA 0 " " 0 "" {TEXT -1 50 "Si possono definire delle funzioni con il comando \+ " }{HYPERLNK 17 "->" 2 "->" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "f := x -> x^2;" }}}{PARA 0 "" 0 "" {TEXT -1 57 "si pu\362 poi ca lcolare il valore della funzione in un punto" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "f(3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 " f(f(3));" }}}{PARA 0 "" 0 "" {TEXT -1 59 "Le funzioni possono dipender e anche da pi\371 di una variabile" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "g := ( x , y ) -> x + y ;" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 12 "g ( 3 , 7 );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 12 "Condizionali" }} {PARA 0 "" 0 "" {TEXT -1 84 "Per subordinare un'azione al verificarsi \+ o meno di una condizione si usa il comando " }{HYPERLNK 17 "if" 2 "if " "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "a := 1: b:= 100:\nif \+ a = b then 1 else 0 end if;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "a := 1: b:= 1:\nif a = b then 1 else 0 end if;" }}}{SECT 0 {PARA 5 "" 0 "delta" {TEXT 286 7 "Esempio" }}{PARA 0 "" 0 "" {TEXT -1 130 "C ome si pu\362 definire una funzione di due variabili, delta, che prend e i valori 1 o 0 a seconda che le variabili siano uguali o no?" }} {SECT 1 {PARA 20 "" 0 "" {TEXT 287 9 "Soluzione" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 53 "delta := ( i , j ) -> if i = j then 1 else 0 e nd if ;" }}}{PARA 0 "" 0 "" {TEXT -1 172 "Non spaventi il fatto che ne ll'output della definizione di delta \350 comparsa la parola proc. In \+ effetti -> \350 una forma abbreviata della pi\371 complessa e versatil e istruzione " }{HYPERLNK 17 "proc" 2 "proc" "" }{TEXT -1 1 "." }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "delta(1,2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "delta(Pi,Pi);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 10 "S ommatorie" }}{PARA 0 "" 0 "" {TEXT -1 87 "Si possono eseguire sommator ie, senza dover scrivere tutti gli addendi, con il comando " } {HYPERLNK 17 "add" 2 "add" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "add (i^2 , i = 1..127) ;" }}}{PARA 0 "" 0 "" {TEXT -1 54 "Il coman do add pu\362 essere dato anche in un'altra forma" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "add (i^2 , i = [1,3,5]) ;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "vettori e matr ici" {TEXT 27 17 "Vettori e matrici" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 20 "Istruzioni coinvolte" }}{PARA 0 "" 0 "" {TEXT 0 42 "array matri x vector linsolve trace inverse" }}{PARA 0 "" 0 "" {TEXT 0 14 "&* eval m equal" }}{PARA 0 "" 0 "" {TEXT 0 21 "randmatrix randvector" }}{PARA 0 "" 0 "" {TEXT 0 19 "gausselim gaussjord" }}{PARA 0 "" 0 "" {TEXT 0 16 "concat submatrix" }}{PARA 0 "" 0 "" {TEXT 0 4 "with" }{TEXT -1 0 " " }}}{PARA 0 "" 0 "" {TEXT 0 0 "" }{TEXT -1 11 "Il comando " } {HYPERLNK 17 "with" 2 "with" "" }{TEXT -1 33 " serve a caricare dei pa cchetti (" }{HYPERLNK 17 "packages" 2 "package" "" }{TEXT -1 143 ") ch e definiscono delle istruzioni di Maple, che non sono tra quelle caric ate al momento della partenza del programma. Ad esempio il pacchetto \+ " }{HYPERLNK 17 "linalg" 2 "linalg" "" }{TEXT -1 56 " carica delle ist ruzioni connesse con l'algebra lineare." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "with(linalg):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 7 "Vettori" }}{PARA 0 "" 0 "" {TEXT -1 14 "L'istruzione " }{HYPERLNK 17 "vector" 2 "linalg[vec tor]" "" }{TEXT -1 37 " serve per creare vettori. Ad esempio" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "v := vector([3,2,3,-1]);" }} }{PARA 0 "" 0 "" {TEXT -1 16 "crea il vettore " }{XPPEDIT 18 0 "v;" "6 #%\"vG" }{TEXT -1 15 " di coordinate " }{XPPEDIT 18 0 "3,2,3,-1;" "6& \"\"$\"\"#F#,$\"\"\"!\"\"" }{TEXT -1 19 ". \nSe ora scriviamo" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "v;" }}}{PARA 0 "" 0 "" {TEXT -1 183 "non vediamo, come ci saremmo aspettati il vettore con tutte le sue coordinate. Per vedere il vettore nella sua interezza, bisogna di re esplicitamente a Maple di farlo con il comando " }{HYPERLNK 17 "ev alm" 2 "evalm" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(v); " }}}{PARA 0 "" 0 "" {TEXT -1 50 "Per estrarre le coordinate di un vet tore si usa l'" }{HYPERLNK 17 "operazione di selezione" 2 "selection" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[1];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[2];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[3];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[4 ];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[5];" }}}{SECT 1 {PARA 7 "" 0 "" {TEXT 257 21 "Perch\351 questo errore?" }{TEXT 258 0 " " }}{PARA 0 "" 0 "" {TEXT -1 62 "Quest'ultima istruzione genera un err ore in quanto il vettore " }{XPPEDIT 18 0 "v;" "6#%\"vG" }{TEXT -1 79 " ha solo quattro coordinate., e noi gli abbiamo chiesto di mostrarci \+ la quinta." }}}{PARA 0 "" 0 "" {TEXT -1 49 "Ci sono modi alternativi d i definire dei vettori:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "v := vector(5);" }}}{PARA 0 "" 0 "" {TEXT -1 4 "ora " }{XPPEDIT 18 0 "v ;" "6#%\"vG" }{TEXT -1 70 " \350 un vettore con 5 componenti che non s ono state assegnate, vediamolo" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "v;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(v);" } {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[1];" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "v[5];" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 5 "v[6];" }}}{PARA 0 "" 0 "" {TEXT -1 29 "e che po ssiamo ora assegnare:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "v[1 ]:=4 ; v[2]:=5 ;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 16 "ottenendo qui ndi" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(v);" }}}{PARA 0 "" 0 "" {TEXT -1 15 "Un'altro modo \350" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "v:= vector ( 6 , [1,2,3,4]);" }}}{PARA 0 "" 0 "" {TEXT -1 100 "in questo modo si \350 creato un vettore a 6 componenti \+ di cui si sono state assegnate solo le prime 4." }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 37 "v:= vector ( 7 , [6,3,3,4,2,5,1,90]);" }}} {SECT 0 {PARA 258 "" 0 "" {TEXT 27 21 "Perch\351 questo errore?" }} {PARA 0 "" 0 "" {TEXT -1 76 "Abbiamo cercato di assegnare 8 componenti di un vettore che ne aveva solo 6." }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 7 "Matrici" }}{PARA 0 "" 0 "" {TEXT -1 13 "L'istruzione " } {HYPERLNK 17 "matrix" 2 "linalg[matrix]" "" }{TEXT -1 76 " serve a def inire delle matrici, ad esempio se si vuole definire la matrice " } {XPPEDIT 18 0 "matrix([[1, 2, 3], [4, 5, 6]]);" "6#-%'matrixG6#7$7%\" \"\"\"\"#\"\"$7%\"\"%\"\"&\"\"'" }{TEXT -1 21 " il comando da dare \+ \350" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "M := matrix(3,8,[1,2 ]);" }}}{PARA 0 "" 0 "" {TEXT -1 192 "Ossia matrix richiede tre argome nti: vengano specificati prima il numero di righe, poi il numero di co lonne e quindi la lista dei suoi elementi letti dall'alto in basso e d a sinistra a destra." }}{PARA 0 "" 0 "" {TEXT -1 61 "Come per i vettor i si possono usare delle forme alternative:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "M:= matrix ( 7, 6);" }}}{PARA 0 "" 0 "" {TEXT -1 15 "in questo modo " }{XPPEDIT 18 0 "M;" "6#%\"MG" }{TEXT -1 61 " \350 una matrice 7 x 6 i cui elementi non sono stati assegnati:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(M);" }}}{PARA 0 "" 0 "" {TEXT -1 7 "O anche" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "M:=matrix(4 ,3,[1,2,3,4,5,6,7]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "M[4 ,2]:=Pi;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(M);" }}} {PARA 0 "" 0 "" {TEXT -1 84 "che risulta essere una matrice 4 x 3 in c ui sono stati assegnati i primi 7 elementi." }}}{SECT 1 {PARA 4 "" 0 " " {TEXT 27 5 "Array" }}{PARA 0 "" 0 "" {TEXT -1 192 "I vettori e le ma trici sono casi particolari di oggetti pi\371 generali chiamati array, e le istruzioni vector e matrix altro non sono che abbreviazioni di a lcuni usi particolari dell'istruzione " }{HYPERLNK 17 "array" 2 "array " "" }{TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "w := \+ array (1..4,[4,1,-2,7]);\nv := vector (4,[4,1,-2,7]);" }}}{PARA 0 "" 0 "" {TEXT -1 17 "Confrontiamo ora " }{XPPEDIT 18 0 "v;" "6#%\"vG" } {TEXT -1 3 " e " }{XPPEDIT 18 0 "w;" "6#%\"wG" }{TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "evalb(v=w);" }}}{PARA 0 "" 0 "" {TEXT -1 187 "Sebbene i due oggetti siano uguali, abbiamo ottenut o risposta negativa, questo perch\351 evalb esegue un test troppo supe rficiale. Per confrontare matrici, vettori, bisogna usare il comando \+ " }{HYPERLNK 17 "equal" 2 "equal" "" }{TEXT -1 2 ". " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "equal(v,w);" }}}{PARA 0 "" 0 "" {TEXT -1 28 "Analogamente con le matrici:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 94 "A:=matrix(3,2,[1,2,3,4,5,6]):\nB:=array(1..3,1..2,[[1,2],[3,4] ,[5,6]]):\nevalb(A=B);\nequal(A,B);" }}}{PARA 0 "" 0 "" {TEXT -1 277 " \n\310 abbastanza chiara, dagli esempi la sintassi dell'istruzione arr ay: si specificano gli intervalli su cui far variare gli indici e quin di si mette la lista degli elementi nel caso delle matrici gli element i sono dati come lista di liste, che descrivono le righe della matrice ." }}{PARA 0 "" 0 "" {TEXT -1 55 "Si possono per\362 indicizzare gli a rray anche su diversi " }{HYPERLNK 17 "range" 2 "range" "" }{TEXT -1 62 " di interi (non necessariamente che inizino con 1). Scrivendo " }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "w := array (-1..2,[1,2,3,4]) :" }}}{PARA 0 "" 0 "" {TEXT -1 89 "si ottiene un vettore in cui le coo rdinate non sono indicizzate da 1,2,3,4 ma da -1,0,1,2" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "w[-1];w[0];w[1];w[2];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "w[3];" }}}{SECT 1 {PARA 259 "" 0 "" {TEXT 27 21 "Perch\350 questo errore?" }}{PARA 0 "" 0 "" {TEXT -1 110 "Abbiamo chiesto di mostrare l'elemento indicizzato da 3 di un array i n cui gli indici variano nel range -1..0." }}}{PARA 0 "" 0 "" {TEXT -1 61 "Si possono definire anche array a 3 o pi\371 indici, ad esempio :" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 117 "t:=array(-1..0,8..10,- 11..-8,[\n[[1,2,3,4],[5,6,7,8],[9,10,11,12]],\n[[-1,-2,-3,-4],[-5,-6,- 7,-8],[-9,-10,-11,-12]]\n]):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "t[0,9,-9];" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 32 "Costruzione di matrici e vettori" }}{PARA 0 "" 0 "" {TEXT -1 115 "Oltre a creare \+ matrici/vettori assegnando esplicitamente tutte le sue componenti si p u\362 usare un'altra costruzione:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "A:=matrix(2,3,giuseppe);" }}}{PARA 0 "" 0 "" {TEXT -1 72 "\350 stata creata in questo modo una matrice che al posto i,j h a l'oggetto " }{TEXT 0 13 "giuseppe(i,j)" }{TEXT -1 5 ". Se " }{TEXT 0 8 "giuseppe" }{TEXT -1 74 " fosse stata una funzione avremma avuto l a matrice con l'elemento di posto" }{TEXT 294 23 " i,j pari al valore \+ del" }{TEXT -1 40 "la funzione calcolata in i,j. Ad esempio" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "funz := (i,j) -> i+j:\nA:=matrix(5, 3,funz);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "funz := (i,j) - > (-1)^(i+j);\nmatrix(10,10,funz);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 5 "" 0 "" {TEXT 292 7 "Esempio" }} {PARA 0 "" 0 "" {TEXT -1 35 "Come si pi\362 definire una funzione " } {TEXT 0 5 "id(n)" }{TEXT -1 32 " che generi la matrice identit\340?" } }{SECT 1 {PARA 20 "" 0 "" {TEXT 295 9 "Soluzione" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 78 "delta := (i,j) -> if i = j then 1 else 0 end i f:\nid := n -> matrix(n,n,delta);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "id(10);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 293 12 "Osservazione" }}{PARA 0 " " 0 "" {TEXT -1 166 "Un metodo molto pi\371 efficiente per generare ma trici identit\340 \350 quello di sfruttare alcune opzioni del comando \+ array, e precisamente dando il comando array nella forma" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "array(identity,1..5,1..5);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "id := n -> array(identity,1. .n,1..n);" }}}}}{PARA 0 "" 0 "" {TEXT -1 44 "Pu\362 essere utile gener are matrici e vettori " }{TEXT 259 7 "casuali" }{TEXT -1 44 ", a tal f ine si possono usare le istruzioni " }{HYPERLNK 17 "ramndmatrix" 2 "ra ndmatrix" "" }{TEXT -1 3 " e " }{HYPERLNK 17 "randvector" 2 "randvecto r" "" }{TEXT -1 1 ":" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "rand vector(25);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "randmatrix(3 ,7);" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 25 "Operazioni con le matri ci" }}{PARA 0 "" 0 "" {TEXT -1 56 "Per sommare due matrici/vettori si \+ usa il normale segno " }{TEXT 0 1 "+" }{TEXT -1 77 ", mentre per molt iplicare due matrici (matrice con vettore) si usa il segno " }{TEXT 0 2 "&*" }{TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "A : = matrix(3,5):\nB := matrix(3,7):\nA + B;\nA &* B;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(B);" }}}{PARA 0 "" 0 "" {TEXT -1 78 "P er ottenere i risultati bisogna chiederlo esplicitamente con il comand o evalm" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "evalm(A + B);\nev alm (A &* B);" }}}{SECT 1 {PARA 7 "" 0 "" {TEXT 27 21 "Perch\351 quest i errori?" }}{PARA 0 "" 0 "" {TEXT -1 89 "Le matrici A e B hanno dimen sioni tali che non possono essere n\351 sommate n\351 moltiplicate." } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 170 "A := matrix (3,7,\n[1,2, 3,4,5,6,7,\n9,8,7,6,5,4,3,\n-1,-2,-3,-4,-5,-6,-7]):\n\nB := matrix (3 ,7,\n[-1,-2,-3,-4,-5,-6,-7,\n-9,-8,-7,-6,-5,-4,-3,\n1,2,3,4,5,6,7]):\n \nevalm(A + B);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "C1 := ev alm(A &* id(7));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "C2 := e valm(id(3) &* A);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "equal \+ ( A , C1 ) and equal ( A , C2 ) ;\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "A := matrix ( 5, 7);B := matrix ( 5, 7);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "evalm(3 * A) ;" }}}{PARA 0 "" 0 "" {TEXT -1 35 "In generale il prodotto di matrici " }{TEXT 260 17 "non \+ \350 commutativo" }{TEXT -1 1 ":" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 112 "A := matrix( 3,3,[-7,2,3,-4,5,3,-7,11,9]):\nB := matrix( 3,3, [-2,12,31,-14,1,1,0,-32,5]):\nequal(A &* B , B &* A);" }}}{PARA 0 "" 0 "" {TEXT -1 21 "Per Maple il simbolo " }{TEXT 0 2 "&*" }{TEXT -1 186 " denota un prodotto che gode di tutte le propriet\340 formali del la moltiplicazione tranne la propriet\340 commutativa, il comando eval m interpreta poi questo simbolo come prodotto di matrici." }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 85 "L'elevamento a pot enza di matrici quadrate si esegue semplicemente usando il simbolo " } {TEXT 0 1 "^" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "A := matrix \+ (2,2,[0,1,1,0]);\nevalm(A^4631);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "A:=matrix(7,8);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "evalm(B &* A);" }}}{SECT 0 {PARA 5 "" 0 "" {TEXT 27 10 "La traccia" }}{PARA 0 "" 0 "" {TEXT -1 87 "La traccia di una matri ce quadrata \350 data dalla somma dei suoi elementi sulla diagonale" } }{PARA 260 "" 0 "" {XPPEDIT 18 0 "tr(A) = sum(A[i,i],i = 1 .. n);" "6# /-%#trG6#%\"AG-%$sumG6$&F'6$%\"iGF-/F-;\"\"\"%\"nG" }{TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 84 "il calcolo della traccia di una matrice p u\362 essere effettueto mediante l'istruzione " }{HYPERLNK 17 "trace" 2 "linalg[trace]" "" }{TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "trace(id(25750));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "A:=matrix(100,100,(i,j)->j+i):\ntrace(A);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "A:=matrix(20,20):\nB:=matrix(20,20) :\nevalb (trace(A &* B) = trace(B &* A));" }}}{PARA 0 "" 0 "" {TEXT -1 56 "Questo calcolo mostra che prese due matrici arbitrarie, " } {XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 3 " e " }{XPPEDIT 18 0 "B;" "6# %\"BG" }{TEXT -1 21 " 20x20 la traccia di " }{XPPEDIT 18 0 "AB;" "6#%# ABG" }{TEXT -1 28 " coincide con la traccia di " }{XPPEDIT 18 0 "BA;" "6#%#BAG" }{TEXT -1 30 ". Questo \350 un fatto generale:\n" }{TEXT 263 5 "Siano" }{TEXT -1 1 " " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 3 " e " }{XPPEDIT 18 0 "B;" "6#%\"BG" }{TEXT -1 1 " " }{TEXT 264 12 "d ue matrici " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 1 "x" }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 1 " " }{TEXT 265 6 "allora" }{TEXT -1 1 " " }{XPPEDIT 18 0 "tr(AB) = tr(BA);" "6#/-%#trG6#%#ABG-F%6#%#BAG" } {TEXT -1 48 ".\n Lo si provi.\nNon \350 per\362 in generale vero che \+ " }{XPPEDIT 18 0 "tr(AB) = tr(A)*tr(B);" "6#/-%#trG6#%#ABG*&-F%6#%\"AG \"\"\"-F%6#%\"BGF," }{TEXT -1 14 ". Per esempio:" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 97 "A := matrix(2,2,[1,0,0,0]):\nB := matrix(2,2,[ 0,0,0,1]):\ntrace( A &* B) ;\ntrace ( B ) * trace( A);" }}}{PARA 0 "" 0 "" {TEXT -1 205 "Le due matrici dell'esempio sono molto particolari, ci\362 non tragga in inganno. Tentiamo il seguente esperimento faccia mo generare matrici quadrate 2x2 a caso per 500 volte e vediamo quante volte si ha che " }{XPPEDIT 18 0 "tr(AB) = tr(A)*tr(B);" "6#/-%#trG6# %#ABG*&-F%6#%\"AG\"\"\"-F%6#%\"BGF," }{TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 169 "successi := 0:\nfor i from 1 to 1000 do\nA :=randmatrix(2,2):\nB:=randmatrix(2,2):\nif trace (A &* B) = trace (A) * trace (B) then\nsuccessi := successi + 1 fi:\nod:\nsuccessi; " }}} {PARA 0 "" 0 "" {TEXT -1 29 "In effetti si pu\362 provare che" }} {PARA 0 "" 0 "" {TEXT 266 31 "la probabilit\340 che due matrici " } {XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 1 "x" }{XPPEDIT 18 0 "n;" "6#% \"nG" }{TEXT -1 1 " " }{TEXT 267 3 "con" }{TEXT -1 1 " " }{XPPEDIT 18 0 "2 <= n;" "6#1\"\"#%\"nG" }{TEXT -1 1 " " }{TEXT 268 14 "siano tali \+ che" }{TEXT -1 1 " " }{XPPEDIT 18 0 "tr(AB) = tr(A)*tr(B);" "6#/-%#trG 6#%#ABG*&-F%6#%\"AG\"\"\"-F%6#%\"BGF," }{TEXT -1 1 " " }{TEXT 269 7 " \350 nulla" }{TEXT -1 2 ". " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 47 "Diversamente vanno le cose rispetto alla somma: " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "A:=matrix(20,20):\nB:=ma trix(20,20):\nevalb (trace(A + B) = trace(A) + trace(B));" }}}{PARA 0 "" 0 "" {TEXT -1 123 "Anche in questo caso il conto appena fatto \350 \+ una dimostrazione solo nel caso di matrici 20x20 del seguente fatto ge nerale:\n" }{TEXT 261 7 " siano " }{XPPEDIT 18 0 "A;" "6#%\"AG" } {TEXT -1 3 " e " }{XPPEDIT 18 0 "B;" "6#%\"BG" }{TEXT -1 1 " " }{TEXT 262 24 "due matrici nxn, allora " }{XPPEDIT 18 0 "tr(A+B) = tr(A)+tr(B );" "6#/-%#trG6#,&%\"AG\"\"\"%\"BGF),&-F%6#F(F)-F%6#F*F)" }{TEXT -1 14 ".\nLo si provi." }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 15 "Sistemi \+ lineari" }}{PARA 0 "" 0 "" {TEXT -1 22 "Un sistema lineare di " } {XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 14 " equazioni in " }{XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 63 " incognite \350 completamente descri tto in termini di una matrice " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 1 "x" }{XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 19 " e di un vettore \+ a " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 34 " componenti: si cercan o i vettori " }{XPPEDIT 18 0 "x;" "6#%\"xG" }{TEXT -1 3 " a " } {XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 21 " componenti tali che " } {XPPEDIT 18 0 "A*x = b;" "6#/*&%\"AG\"\"\"%\"xGF&%\"bG" }{TEXT -1 60 " . Per risolvere sistemi lineari con Maple si usa il comando " } {HYPERLNK 17 "linsolve" 2 "linalg[linsolve]" "" }{TEXT -1 1 "." }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 109 "A := matrix(3,5,\n[-4, 6, 4 , 4, 9,\n0, 3, 7, -3, 2,\n8, 9, -8, 1, -6]):\nb := vector([-3, -5, 6]) :\nlinsolve(A,b);" }}}{PARA 0 "" 0 "" {TEXT -1 107 "Questo sistema lin eare ha infinite soluzioni che dipendono da due parametri (assegnando \+ valori arbitrari a " }{XPPEDIT 18 0 "_t[1];" "6#&%#_tG6#\"\"\"" } {TEXT -1 3 " e " }{XPPEDIT 18 0 "_t[2];" "6#&%#_tG6#\"\"#" }{TEXT -1 51 "si ottengono tutte e sole le soluzioni del sistema." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 151 "A := matrix(5,5,\n[-4, 6, 4, 4, 9, \n0, 3, 7, -3, 2,\n8, 9, -8, 1, -6,\n-9, 7, 5, 8, -5,\n-6, -2, -1, 5, \+ 0]):\nb := vector([-3, -5, 6, 0, -2]):\nlinsolve(A,b);" }}}{PARA 0 "" 0 "" {TEXT -1 46 "Questo sistema lineare ha una unica soluzione." }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 118 "A := matrix(5,3,\n[-4, 6, 4 ,\n0, 3, 7,\n8, 9, -8,\n-9, 7, 5,\n-6, -2, -1]):\nb := vector([-3, -5, 6, 0, -2]):\nlinsolve(A,b);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 7 "" 0 "" {TEXT 27 27 "Perch\351 non ha fatto \+ niente?" }}{PARA 0 "" 0 "" {TEXT -1 212 "Non \350 che non ha fatto nie nte, soltanto non c '\350 stato output perch\351 il sistema non ha sol uzioni. Un trucco per avere sempre un output non vuoto \350 quello di \+ chiedere non le soluzioni ma l'insieme delle soluzioni" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "\{linsolve(A,b)\};" }}}{PARA 0 "" 0 "" {TEXT -1 37 "che in questo caso \350 l'insieme vuoto." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 113 "A := matrix(5,3,\n[-4, 6, 4,\n0, 3 , 7,\n8, 9, -8,\n-9, 7, 5,\n-6, -2, -1]):\nb := vector([-5, 6, 0, -2]) :linsolve(A,b);" }}}{SECT 1 {PARA 7 "" 0 "" {TEXT 27 21 "Perch\351 que sto errore?" }}{PARA 0 "" 0 "" {TEXT -1 11 "il vettore " }{XPPEDIT 18 0 "b;" "6#%\"bG" }{TEXT -1 64 " deve avere tante componenti quante son o le righe della matrice " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 1 " ." }}}{PARA 0 "" 0 "" {TEXT -1 61 "Per risolvere sistemi lineari, si \+ potrebbe usare il comando " }{HYPERLNK 17 "solve" 1 "" "sistemi" } {TEXT -1 140 ". linsolve, oltre a essere pi\371 efficiente, ci risparm ia la fatica di scrivere esplicitamente il sistema di equazioni con tu tte le variabili." }}{SECT 0 {PARA 5 "" 0 "" {TEXT 27 12 "Osservazione " }}{PARA 0 "" 0 "" {TEXT -1 110 "Anche con linsolve, come con solve, \+ va usata molta cauteala con sistemi lineari in cui compaiano dei param etri" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "A:=matrix(2,2,[k,1,1 ,k]);\nb:=vector([1,k]);\nlinsolve (A,b);" }}}{PARA 0 "" 0 "" {TEXT -1 148 "Un trucco per costringere Maple a mostrare i problemi che ci s ono \350 quello di sostituire il vettore con un vettore i ndeterminato e quindi risolvere" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "x:=ve ctor(2);\nlinsolve (A,x);" }}}{PARA 0 "" 0 "" {TEXT -1 22 "\310 eviden te che i casi " }{XPPEDIT 18 0 "k = 1;" "6#/%\"kG\"\"\"" }{TEXT -1 3 " e " }{XPPEDIT 18 0 "k = -1;" "6#/%\"kG,$\"\"\"!\"\"" }{TEXT -1 32 " v anno analizzati separatamente." }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 55 "Equazioni matriciali (lineari) e inversa di una matrice" }}{PARA 0 "" 0 "" {TEXT -1 104 "Il comando linsolve pu\362 essere usato anche \+ per risolvere equazioni matriciali lineari: date due matrici " } {XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 3 " e " }{XPPEDIT 18 0 "B;" "6# %\"BG" }{TEXT -1 31 " di dimensioni rispettivamente " }{XPPEDIT 18 0 " n;" "6#%\"nG" }{TEXT -1 3 " x " }{XPPEDIT 18 0 "k;" "6#%\"kG" }{TEXT -1 3 " e " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 3 " x " }{XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 42 " ci si pu\362 chiedere se esiste una matrice " }{XPPEDIT 18 0 "X;" "6#%\"XG" }{TEXT -1 1 " " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 3 " x " }{XPPEDIT 18 0 "m;" "6#%\"mG" } {TEXT -1 10 " tale che " }{XPPEDIT 18 0 "AX = B;" "6#/%#AXG%\"BG" } {TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 152 "A := matri x(3,4,\n[8, -2, 7, -6,\n3, 4, -3, 7,\n3, 2, -5, -6]):\n\nB := matrix(3 ,5,\n[9, -5, -7, -1, -6,\n-1, -1, 6, 0, -6,\n0, 0, -3, -2, -1]):\n\nli nsolve(A,B);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 76 "A := matrix (3,4,\n[8, -2, 7, -6,\n3, 4, -3, 7,\n3, 2, -5, -6]);\nb:=vector(3,0); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "gaussjord(A);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "linsolve(A,b);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 167 "A := matrix(4,3,\n[5, -4, -3,\n1, \+ -7, -1,\n7, 4, 3,\n-8, 2, 4]):\nB := matrix(4,5,\n[-1, 9, 7, -3, -8,\n -7, 3, 4, -7, 3,\n8, -9, 0, -5, 0,\n-4, -8, 2, 3, 5]):\n\{linsolve (A, B)\};" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 182 "A := matrix(4,4, \n[-2, -7, -8, -9,\n-7, -5, 8, -7,\n8, 7, 2, -5,\n9, 9, -2, 8]):\nB := matrix(4,5,\n[-2, 2, 7, 2, 9,\n-6, -8, -4, 0, -8,\n7, -6, 8, 4, 5,\n- 2, -1, -5, -2, 2]):\nlinsolve (A,B);" }}}{PARA 0 "" 0 "" {TEXT -1 47 " Ci si pu\362 chiedere in particolare quando, data " }{XPPEDIT 18 0 "A; " "6#%\"AG" }{TEXT -1 20 " esiste una matrice " }{XPPEDIT 18 0 "X;" "6 #%\"XG" }{TEXT -1 10 " tale che " }{XPPEDIT 18 0 "AX = Id;" "6#/%#AXG% #IdG" }{TEXT -1 11 " (una tale " }{XPPEDIT 18 0 "X;" "6#%\"XG" }{TEXT -1 15 " si chiama una " }{TEXT 270 15 "inversa destra " }{TEXT -1 3 "d i " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 2 ")." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "A := randmatrix(3,5):\nlinsolve(A,id(3));" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "A := randmatrix(5,3):\n\{li nsolve(A,id(5))\};" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "A := \+ randmatrix(5,5):\nlinsolve(A,id(5));" }}}{PARA 0 "" 0 "" {TEXT -1 133 "Facciamo un esperimento: facciamo generare matrici casuali di dimensi one 5 x 7 e vediamo per quante di esse esiste un'inversa destra." }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 161 "successi := 0:\nB := id(5): \nfor i from 1 to 500 do\nA := randmatrix(5,7):\nC:=\{linsolve(A,B)\}: \nif not C = \{\} then successi := successi + 1 end if:\nend do:\nsucc essi;" }}}{SECT 0 {PARA 5 "" 0 "" {TEXT 291 12 "Osservazioni" }}{PARA 0 "" 0 "" {TEXT -1 31 "Si pu\362 dimostrare che una tale " }{XPPEDIT 18 0 "X;" "6#%\"XG" }{TEXT -1 15 " non esiste se " }{XPPEDIT 18 0 "A; " "6#%\"AG" }{TEXT -1 15 " \350 una matrice " }{XPPEDIT 18 0 "n;" "6#% \"nG" }{TEXT -1 3 " x " }{XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 5 " co n " }{XPPEDIT 18 0 "m < n;" "6#2%\"mG%\"nG" }{TEXT -1 18 ", ma anche q uando " }{XPPEDIT 18 0 "n <= m;" "6#1%\"nG%\"mG" }{TEXT -1 76 " non \+ \350 detto che esista (contrariamente a quanto mostrerebbe l'esperimen to)." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 203 "A := matrix(5,7,\n[ -24, -55, -93, -70, 10, -55, -89,\n-21, -93, -77, -57, 4, 89, -33,\n15 , 31, 23, -6, 42, -84, 51,\n939, 192, 346, 38, -432, 1551, -1346,\n90, 49, 59, 16, -20, 84, -78]):\n\{linsolve(A,id(5))\};" }}}{PARA 0 "" 0 "" {TEXT -1 77 "quello che si pu\362 dimostrare \350 per\362 che la pr obabilit\340 che una tale matrice (" }{XPPEDIT 18 0 "n;" "6#%\"nG" } {TEXT -1 3 " x " }{XPPEDIT 18 0 "m;" "6#%\"mG" }{TEXT -1 5 " con " } {XPPEDIT 18 0 "n <= m;" "6#1%\"nG%\"mG" }{TEXT -1 39 ") non abbia una \+ inversa destra \350 nulla." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 31 "Prendiamo una matrice quadrata " }{XPPEDIT 18 0 " A;" "6#%\"AG" }{TEXT -1 41 " a caso, troviamo una sua inversa destra \+ " }{XPPEDIT 18 0 "C;" "6#%\"CG" }{TEXT -1 2 " (" }{HYPERLNK 17 "siamo \+ sicuri che esiste" 1 "" "probabilita" }{TEXT -1 27 ") e verifichiamo q uanto fa " }{XPPEDIT 18 0 "AC;" "6#%#ACG" }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 62 "A := randmatrix (5,5):\nC:=linsolve (A,id(5)):\nevalm (A &* C );" }}}{PARA 0 "" 0 "" {TEXT -1 43 "Non pot eva essere altrimenti. Ma quanto fa " }{XPPEDIT 18 0 "CA;" "6#%#CAG" } {TEXT -1 2 " ?" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "evalm (C & * A ) ;" }}}{PARA 0 "" 0 "" {TEXT -1 27 "Questo \350 un fatto generale :" }}{PARA 0 "" 0 "" {TEXT 272 2 "se" }{TEXT -1 1 " " }{XPPEDIT 18 0 " A;" "6#%\"AG" }{TEXT -1 1 " " }{TEXT 273 47 "\350 una matrice quadrata che ha un'inversa destra" }{TEXT -1 1 " " }{XPPEDIT 18 0 "C;" "6#%\"C G" }{TEXT -1 1 " " }{TEXT 274 11 "allora tale" }{TEXT -1 1 " " } {XPPEDIT 18 0 "C;" "6#%\"CG" }{TEXT -1 1 " " }{TEXT 275 15 "\350 unica e anche" }{TEXT -1 1 " " }{XPPEDIT 18 0 "CA = Id;" "6#/%#CAG%#IdG" } {TEXT -1 2 ". " }{TEXT 276 12 "Tale matrice" }{TEXT -1 1 " " } {XPPEDIT 18 0 "C;" "6#%\"CG" }{TEXT -1 1 " " }{TEXT 277 10 "\350 detta l'" }{TEXT 271 7 "inversa" }{TEXT 278 3 " di" }{TEXT -1 1 " " } {XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 72 "Maple pu\362 calcolare l'inversa di una matrice per mezzo dell 'istruzione " }{HYPERLNK 17 "inverse" 2 "linalg[inverse]" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "inverse(A);" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 20 "equal(inverse(A),C);" }}}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 16 "Una precisazione" }}{PARA 0 "" 0 "" {TEXT -1 146 "Si \350 sovente detto che la probabilit\340 che una matrice abbia certe \+ propriet\340 \350 0. Questo parlando in termini matematici \350 vero. \+ Per il calcolatore " }{TEXT 279 2 "NO" }{TEXT -1 61 ". Nel senso che i l calcolatore ha la possibilit\340 di generare " }{TEXT 281 17 "equipr obabilmente" }{TEXT -1 13 " soltanto un " }{TEXT 280 13 "numero finito " }{TEXT -1 332 " (anche se molto grande) di matrici, e quindi, anche \+ se piccola, la probabilit\340 che una di esse non goda della propriet \340 in esame \350 positiva. In ogni caso tale probabilit\340 \350 tal mente bassa che se a qualcuno non riesce uno degli esperimenti tentati sopra deve considerarsi particolarmente (s)fortunato (a seconda del p unto di vista)!" }}}{SECT 1 {PARA 261 "" 0 "" {TEXT 27 21 "Eliminazion e di Gauss" }}{PARA 0 "" 0 "" {TEXT -1 126 "Maple pu\362 eseguiore il \+ processo di eliminazione di Gauss per calcolare una riduzione a gradin i di una matrice, con il comando " }{HYPERLNK 17 "gausselim" 2 "gausse lim" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "A:=randmatrix(5,9) ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "gausselim(A);" }}} {PARA 0 "" 0 "" {TEXT -1 134 "contando i pivots della riduzione a scal a si ottiene quindi il rango della matrice. Ci\362 poteva essere otten uto anche con l'istruzione " }{HYPERLNK 17 "rank" 2 "linalg,rank" "" } {TEXT -1 1 ":" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "rank(A);" }} }{PARA 0 "" 0 "" {TEXT -1 303 "A partire da una ridotta a scala di una matrice, si pu\362, ancora con operazioni di riga, far s\354 che i pi vot diventino tutti 1 e che anche al di sopra dei pivot ci siano tutti 0. Questo procedimento, noto con il nome di riduzione a forma di Gaus s-Jordan, pu\362 essere effettuato direttamente con il comando " } {HYPERLNK 17 "gaussjord" 2 "linalg,gaussjord" "" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 13 "gaussjord(A);" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 296 7 "Esempio" }}{PARA 0 "" 0 "" {TEXT -1 42 "Sappiamo che data una matrice invertibile " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 80 " e riducendo in forma di Gauss-Jordan la matrice ottenuta accostando \+ la matrice " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 82 " e la matrice identit\340, si ottiene la matrice costruita accostando l'identit\340 con " }{XPPEDIT 18 0 "A^(-1);" "6#)%\"AG,$\"\"\"!\"\"" }{TEXT -1 36 " . Verifichiamolo in un caso concreto" }}{PARA 0 "" 0 "" {TEXT -1 32 "P rendiamo una matrice 5x5 a caso" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "A:=randmatrix(5,5);" }}}{PARA 0 "" 0 "" {TEXT -1 64 "calcoliam one il determinante, per verificare che sia invertibile" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "det(A);" }}}{PARA 0 "" 0 "" {TEXT -1 34 "costruiamo la matrice identit\340 5x5" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "delta := (i,j)->if i=j then 1 else 0 fi:\nId:=matr ix(5,5,delta);" }}}{PARA 0 "" 0 "" {TEXT -1 67 "accostiamo le matrici. Questo pu\362 essere fatto usando l'istruzione " }{HYPERLNK 17 "conca t" 2 "linalg,concat" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "C: =concat(A,Id);" }}}{PARA 0 "" 0 "" {TEXT -1 47 "eseguiamo la riduzione in forma di Gauss-Jordan" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "CC:=gaussjord(C);" }}}{PARA 0 "" 0 "" {TEXT -1 60 "estraiamo la parte destra della matrice usando l'istruzione " }{HYPERLNK 17 "submatrix" 2 "linalg,submatrix" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "B \+ := submatrix(CC,1..5,6..10);" }}}{PARA 0 "" 0 "" {TEXT -1 35 "Verifich iamo infine che la matrice " }{XPPEDIT 18 0 "B;" "6#%\"BG" }{TEXT -1 45 " cos\354 ottenuta \350 effettivamente l'inversa di " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "equal(B,inverse(A));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "evalm(B &* A );\nevalm(A &* B );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 0 {PARA 5 "" 0 "" {TEXT 297 7 "Esempio" }} {PARA 0 "" 0 "" {TEXT -1 32 "Consideriamo la seguente matrice" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 209 "A := matrix(5,8,\n[\n88, -2 8, 32, 292, -82, 58, 554, -3120,\n1, 4, 9, -1, -48, -94, -282, 1135,\n 30, -11, 8, 101, -11, -68, -73, -22,\n81, 10, 101, 233, 38, 14, 356, - 2113,\n-5, 57, 109, -72, -7, -35, -182, 1001\n]):" }}}{PARA 0 "" 0 "" {TEXT -1 23 "e calcoliamone il rango" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "rank(A);" }}}{PARA 0 "" 0 "" {TEXT -1 100 "in effetti, se eseguiamo l'eliminazione di Gauss e la riduzione in forma di Gauss -Jordan si ottiene:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "gauss elim(A);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "gaussjord(A);" }}}{PARA 11 "" 1 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 15 "Risol vendo con " }{HYPERLNK 17 "linsolve" 2 "linalg,linsolve" "" }{TEXT -1 52 " il sistema lineare omogeneo associato alla matrice " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 35 ", si ottiene l'insieme di soluzioni " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "soluzioni := linsolve(A, vector(5,0));" }}}{PARA 0 "" 0 "" {TEXT -1 43 "che \350 parametrizzato da 4 variabili libere " }{XPPEDIT 18 0 "_t[1];" "6#&%#_tG6#\"\"\"" } {TEXT -1 2 ", " }{XPPEDIT 18 0 "_t[2];" "6#&%#_tG6#\"\"#" }{TEXT -1 2 ", " }{XPPEDIT 18 0 "_t[3];" "6#&%#_tG6#\"\"$" }{TEXT -1 2 ", " } {XPPEDIT 18 0 "_t[4];" "6#&%#_tG6#\"\"%" }{TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 167 "x[1] = soluzioni[1];\nx[2] = soluz ioni[2];\nx[3] = soluzioni[3];\nx[4] = soluzioni[4];\nx[5] = soluzioni [5];\nx[6] = soluzioni[6];\nx[7] = soluzioni[7];\nx[8] = soluzioni[8]; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{SECT 1 {PARA 4 " " 0 "" {TEXT 27 35 "Ortonormalizzazione di Gram-Schmidt" }}{PARA 0 "" 0 "" {TEXT -1 11 "Il comando " }{HYPERLNK 17 "GramSchmidt" 2 "linalg,G ramSchmidt" "" }{TEXT -1 248 " esegue il processo di ortonormalizzazio ne di Gram-Schmidt trasformando un insieme (o una lista) di vettori li nearmente indipendenti in un insieme (o una lista) di vettori ortogona li o ortonormali che generano lo stesso spazio di quelli di partenza" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "base := [randvector(4),ran dvector(4),randvector(4)];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "base_ortogonale := GramSchmidt(base);" }}}{PARA 0 "" 0 "" {TEXT -1 75 "verifichiamo che quella ottenuta \350 una base ortogonale, usan do la funzione " }{HYPERLNK 17 "dotprod" 2 "dotprod" "" }{TEXT -1 47 " , che calcola il prodotto scalare (standard di " }{XPPEDIT 18 0 "R^n; " "6#)%\"RG%\"nG" }{TEXT -1 16 ") di due vettori" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 47 "dotprod(base_ortogonale[1],base_ortogonale[2]) ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "dotprod(base_ortogonal e[1],base_ortogonale[3]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "dotprod(base_ortogonale[2],base_ortogonale[3]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "base_ortonormale := GramSchmidt(base,'nor malized');" }}}{PARA 0 "" 0 "" {TEXT -1 55 "verifichiamo che quella ot tenuta \350 una base ortonormale" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "dotprod(base_ortonormale[1],base_ortonormale[2]);" }{TEXT -1 0 "" }{MPLTEXT 1 0 249 "dotprod(base_ortonormale[1],base_ortonormale[3 ]);\ndotprod(base_ortonormale[2],base_ortonormale[3]);\ndotprod(base_o rtonormale[1],base_ortonormale[1]);\ndotprod(base_ortonormale[2],base_ ortonormale[2]);\ndotprod(base_ortonormale[3],base_ortonormale[3]);" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{SECT 0 {PARA 3 "" 0 "esercizi" {TEXT 27 8 "Esercizi" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 11 "Esercizio 1" }}{PARA 0 "" 0 "" {TEXT -1 45 "Si costruisca una matr ice 10x10 con al posto " }{TEXT 288 3 "i,j" }{TEXT 289 56 " 1 o -1 a s cacchiera, in modo che al posto 1,1 ci sia -1" }}{SECT 1 {PARA 5 "" 0 "" {TEXT 290 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "funz := (i,j) -> (-1)^(i+j+1):\nA := matrix(10,10,funz);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 11 "Esercizio 2" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 23 "Determinare \+ il vettore " }{XPPEDIT 18 0 "v;" "6#%\"vG" }{TEXT -1 28 " dell'immagin e della matrice" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "A:= matr ix([[1, -1, 4], [2, 0, 6], [-1, -1, -2], [2, 1, 5]]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 37 "che abbia distanza minima dal vettore" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "w:= vector([1,1,0,1]);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 283 9 "Soluzione" }}{PARA 0 "" 0 "" {TEXT -1 51 "Determiniamo un a base per l'immagine della matrice." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "gausselim(A);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 160 "la prima e la seconda colonna della matrice formano una base, in \+ quanto sono le colonne corrispondenti ai pivots. Estraiamo tali colonn e utilizzando il comando " }{HYPERLNK 17 "col" 2 "linalg,col" "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "base := [\n col(A, 1) , col(A,2)\n];" }}}{PARA 0 "" 0 "" {TEXT -1 31 "costruiamo una base ortonormale" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "base_ortonor male := GramSchmidt(base,'normalized');" }}}{PARA 0 "" 0 "" {TEXT -1 34 "usiamo la formula della proiezione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 96 "v1 := base_ortonormale[1]:\nv2 := base_ortonormale[2] :\nv := v1*dotprod(w,v1) + v2*dotprod(w,v2) ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(v);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 11 "Esercizio 3" }} {PARA 0 "" 0 "" {TEXT -1 23 "determinare il vettore " }{XPPEDIT 18 0 " v;" "6#%\"vG" }{TEXT -1 25 " del nucleo della matrice" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 70 "A:= matrix([[1, -1, 4,3], [2, 0, 6,6], [- 1, -1, -2,-3], [2, 1, 5,6]]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 37 " che abbia distanza minima dal vettore" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "w:= vector([1,1,0,1]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 282 9 "Soluzione" } }{PARA 0 "" 0 "" {TEXT -1 114 "Risolviamo il sistema lineare omogeneo, e per determinare una base del nucleo, assegnamo valori 0 e 1 ai para metri" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "soluzioni := linsol ve(A,vector(4,0));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 91 "base \+ := [\nsubs(_t[1]=1,_t[2]=0,evalm(soluzioni)),\nsubs(_t[1]=0,_t[2]=1,ev alm(soluzioni))\n];" }}}{PARA 0 "" 0 "" {TEXT -1 42 "questo poteva ess ere fatto con il comando " }{HYPERLNK 17 "kernel" 2 "linalg,kernel" " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "base:=kernel(A);" }}} {PARA 0 "" 0 "" {TEXT -1 34 "concludiamo l'esercizio come prima" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "base_ortonormale:=GramSchmid t(base,'normalized');" }}}{PARA 0 "" 0 "" {TEXT -1 84 "Questa volta pe r applicare la formula della proiezione ortogonale usiamo il comando \+ " }{TEXT 0 3 "add" }{TEXT -1 97 ", in modo da avere un comando valido \+ anche per basi ortonormali con un numero diverso di elementi" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 94 "v := add(\n dotprod(base_or tonormale[i],w)*base_ortonormale[i],\n i=1..nops(base_ortonormale));" }}}{PARA 0 "" 0 "" {TEXT -1 17 "Ecco il risultato" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(v);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 10 "Esercizio \+ " }{TEXT -1 1 "4" }}{PARA 0 "" 0 "" {TEXT -1 43 "Determinare il punto \+ del piano di equazione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "a: ='a':b:='b':c:='c':d:='d':\npiano := a * x + b * y + c * z + d = 0;" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 3 "con" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "a := 3 ;\nb := 1 ;\nc := -2 ;\nd := 1 ;" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 32 "che ha distanza minima dal punto" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "P := [1,1,3];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 262 "" 0 "" {TEXT 27 9 "Soluzione" }}{PARA 0 "" 0 "" {TEXT -1 41 "Definiamo un ve ttore ortogonale al piano" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "n := vector([a,b,c]);" }}}{PARA 0 "" 0 "" {TEXT -1 115 "Calcoliamo un punto P_0 del piano, risolvendo il sistema lineare e dando dei valori arbitrari alle variabili libere" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "P_0 := linsolve(matrix(1,3,[a,b,c]),vector([-d]));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "P_0 := subs(_t[1]=0,_t[2]=0,evalm(P _0));" }}}{PARA 0 "" 0 "" {TEXT -1 39 "Determiniamo la proiezione del \+ vettore " }{XPPEDIT 18 0 "v = P-P_0;" "6#/%\"vG,&%\"PG\"\"\"%$P_0G!\" \"" }{TEXT -1 21 " (ottenuto traslando " }{XPPEDIT 18 0 "P;" "6#%\"PG " }{TEXT -1 4 " di " }{XPPEDIT 18 0 "-P_0;" "6#,$%$P_0G!\"\"" }{TEXT -1 46 ") sul sottospazio di dimensione 1 generato da " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 25 " (l'ortogonale del piano)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "v := P-P_0:\nv_1 := dotprod(v,n)*n/ dotprod(n,n);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "evalm(v_1) ;" }}}{PARA 0 "" 0 "" {TEXT -1 53 "Per differenza, calcoliamo la proie zione del vettore " }{XPPEDIT 18 0 "v;" "6#%\"vG" }{TEXT -1 64 " sul s ottospazio parallelo al piano (ottenuto traslando il piano" }{TEXT -1 4 " di " }{XPPEDIT 18 0 "-P_0;" "6#,$%$P_0G!\"\"" }{TEXT -1 1 ")" } {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "v_2 := evalm (v - v_1);" }}}{PARA 0 "" 0 "" {TEXT -1 26 "Traslando il risultato di \+ " }{XPPEDIT 18 0 "P_0;" "6#%$P_0G" }{TEXT -1 28 " si ottiene il punto \+ cercato" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "evalm(v_2 + P_0); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "Q := evalm(P-v_1);" }}} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "8 4" 0 }{VIEWOPTS 1 0 0 3 2 1804 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }