{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 "courie r" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 260 "courier" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 273 "" 0 1 0 0 0 0 1 1 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 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 280 "" 0 1 0 0 0 0 1 0 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 "" -1 282 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 283 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" 27 284 "" 0 1 255 0 0 1 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 285 "" 0 1 255 0 0 1 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 286 "" 0 1 255 0 0 1 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 287 "" 0 1 255 0 0 1 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 288 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" 27 289 "" 0 1 255 0 0 1 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 255 1 2 0 0 0 0 0 0 0 0 0 } {CSTYLE "" 27 293 "" 0 1 0 0 255 1 2 0 0 0 0 0 0 0 0 0 }{CSTYLE "SansS erif" -1 294 "helvetica" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 294 295 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 296 "" 0 1 0 0 0 0 0 1 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 "Headi ng 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 "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 "" 5 261 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 }{PSTYLE "" 0 262 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 263 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 264 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 265 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 257 "" 0 "" {TEXT 27 25 "Laboratorio di Matematica" }} {PARA 19 "" 0 "" {TEXT 27 17 "Domenico Luminati" }}{PARA 256 "" 0 "" {TEXT 27 14 "a.a. 2001/2002" }}{PARA 0 "" 0 "" {HYPERLNK 17 "Nozioni d i base" 2 "" "base" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {HYPERLNK 17 "Vet tori e matrici" 2 "" "linalg" }}{PARA 0 "" 0 "" {HYPERLNK 17 "Il deter minante di Vandermonde" 2 "" "vandermonde" }}{PARA 0 "" 0 "" {HYPERLNK 17 "Alcuni problemi" 2 "" "problemi" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{SECT 1 {PARA 3 "" 0 "base" {TEXT 27 15 "Nozioni di ba se" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 20 "Istruzioni coinvolte" }} {PARA 0 "" 0 "" {TEXT 0 39 "+ - * / ^ !\n:=\nsqrt log exp sin cos tan " }}{PARA 0 "" 0 "" {TEXT 0 36 "factor expand simplify collect subs " }}{PARA 0 "" 0 "" {TEXT 0 35 "eval evalf convert evalb and or not" }} {PARA 0 "" 0 "" {TEXT 0 6 "for if" }}{PARA 0 "" 0 "" {TEXT 0 17 "-> pr oc piecewise" }}{PARA 0 "" 0 "" {TEXT 0 4 "plot" }}{PARA 0 "" 0 "" {TEXT 0 19 "sum add\n[ ] \{ \} seq" }}}{PARA 0 "" 0 "" {TEXT -1 22 "Le istruzioni vengono " }{HYPERLNK 17 "passate a Maple" 2 "worksheet/exp ressions/entering" "" }{TEXT -1 161 ", immettendio delle righe con dei comandi e quindi vengono eseguite (valutate) pigiando return.\nOgni \+ riga di comandi deve essere conclusa da un punto e virgola " }{TEXT 0 1 ";" }{TEXT -1 16 " o da due punti " }{TEXT 0 1 ":" }{TEXT -1 210 ". \+ La differenza sta nel fatto che nel primo caso quando la riga viene va lutata, viene generato e mostrato l'output, nel secondo caso l'istruzi one viene eseguita, ma non viene generato ma non mostrato l'output." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "3 + 5 * 2 - 2^3 ;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "a + b - c / d;" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 12 "Assegnamento" }}{PARA 0 "" 0 "" {TEXT -1 11 "Il simbolo " }{TEXT 0 2 ":=" }{TEXT -1 19 " e` l'operatore di " } {HYPERLNK 17 "assegnamento" 2 "assignment" "" }{TEXT -1 32 ", al termi ne sulla sinistra (un " }{HYPERLNK 17 "nome" 2 "names" "" }{TEXT -1 167 ") viene assegnato il valore dell'espressione sulla destra. Da que l momento (temporalmente parlando), valutando il nome si ottiene il va lore che gli e` stato assegnato." }}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 1" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "a := 5 + 11 \+ * 2 - 3/4 ;" }{TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "a;" }{TEXT -1 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 68 "Al nome a viene \+ assegnato il risultato dell'operazione sulla destra." }}{PARA 0 "" 0 " " {TEXT -1 59 "Si noti che le operazioni aritmetiche vengono denotate \+ con " }{TEXT 0 7 "+ - * /" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 82 "Si osservi che Maple esegue i calcoli in modo simbolico (il risult ato \350 un numero " }{HYPERLNK 17 "razionale" 2 "type,rational" "" } {TEXT -1 92 " rappresentato da una frazione) e non approssimato (numer o rappresentato in virgola mobile -" }{HYPERLNK 17 "floating point" 2 "type,float" "" }{TEXT -1 3 "-)." }}{PARA 0 "" 0 "" {TEXT -1 113 "A di fferenza della usuale prassi della notazione matematica, il simbolo di moltiplicazione non pu\362 essere omesso!" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 6 "7 * 5;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 4 " 7 5;" }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 2" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "b:=\"Buon giorno.\":" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "b;" }}}{PARA 0 "" 0 "" {TEXT -1 2 "A " }{TEXT 0 1 "b" }{TEXT -1 33 " viene assegnato come valore una " } {HYPERLNK 17 "stringa" 2 "type,string" "" }{TEXT -1 32 " (espressione \+ contenuta tra due " }{TEXT 0 1 "\"" }{TEXT -1 1 ")" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 3" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "`pi greco`:= Pi:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "`pi greco`;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "sin( 3 * `p i greco`/2 );" }}}{PARA 0 "" 0 "" {TEXT -1 99 "Un nome pu\362 essere c ostituito da una espressione quanto si vuole complessa purch\351 compr esa tra due " }{TEXT 0 1 "'" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 26 "Si osservi che il simbolo " }{TEXT 0 2 "Pi" }{TEXT -1 17 " deno ta l'usuale " }{XPPEDIT 18 0 "Pi;" "6#%#PiG" }{TEXT -1 185 " della mat ematica, e viene trattato in modo simbolico: il suo valore non viene e spresso da un decimale approssimato, ma in ogni caso vengono usate le \+ sue proprieta` nelle manipolazioni." }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 4" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "c := 8/3 \+ + 3.75/2;" }}}{PARA 0 "" 0 "" {TEXT -1 133 "Qui il risultato e` espres so come un numero decimale, in quanto uno dei numeri coinvolti e` gia` un numero decimale (floating point)." }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 5" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "exp r := x^5 - log(12)* x^2*y^3 - sqrt(3) * y^3 + log[3](Pi);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "log[x](y);\n" }}}{PARA 0 "" 0 "" {TEXT -1 151 "Se in delle operazioni sono coinvolti nomi a cui non \+ \350 stato assegnato alcun valore, essi vengono trattati simbolicament e (come delle \"indeterminate\")." }}{PARA 0 "" 0 "" {TEXT -1 11 "Ad e sempio " }{TEXT 0 4 "expr" }{TEXT -1 36 " \350 un polinomio nelle inde terminate " }{XPPEDIT 18 0 "x,y;" "6$%\"xG%\"yG" }{TEXT -1 71 ".\nSi o sservi inoltre i logaritmi vengono espressi mediante la funzione " } {HYPERLNK 17 "log" 2 "log" "" }{TEXT -1 16 ": l'espressione " }{TEXT 0 6 "lox(x)" }{TEXT -1 58 " denota il logaritmo naturale di x, mentre \+ l'espreessione " }{TEXT 0 9 "lox[b](x)" }{TEXT -1 36 " denota il logar itmo in base b di x." }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 6 " }}{PARA 0 "" 0 "" {TEXT -1 32 "Ecco un numero veramente grande!" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "numerone := 10000!:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "numerone;" }{TEXT 27 0 "" }}} }{PARA 0 "" 0 "" {TEXT -1 121 "In alcuni casi puo` essere utile annull are l'assegnamento dato ad un nome. Questo si puo` fare come nel segue nte esempio:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "a:=sqrt(2); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "a^2;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "a := 'a' ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "a^2;\n" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 41 "Valut azione approssimata (floating point)" }}{PARA 0 "" 0 "" {TEXT -1 87 "S e si vuole ottenere un valore approssimato per un'espressione, il coma ndo da usare e` " }{HYPERLNK 17 "evalf" 2 "evalf" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "evalf(sqrt(2));" }}}{PARA 0 "" 0 "" {TEXT -1 245 "Per default la valutazione viene data con una precisione di 10 cifre significative (9 sono esatte l'ultima e` arrotondata sulla base della successiva), ma si puo` richiedere quanta precisione si vuole, \+ compatibilmente con i limiti della macchina" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 19 "evalf(sqrt(2),100);" }}}{PARA 0 "" 0 "" {TEXT -1 78 "Un float puo` essere trasformato in un numero razionale mediante l 'istruzione " }{HYPERLNK 17 "convert" 2 "convert" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "a:= evalf(log(3),20);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "a1:=convert(a,rational);" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 12 "evalf(a1-a);" }}}{PARA 0 "" 0 "" {TEXT 0 2 " a1" }{TEXT -1 43 " \350 una frazione il cui valore coincide con " } {TEXT 0 1 "a" }{TEXT -1 63 " con una accuratezza pari all'accuratezza \+ di default: 10 cifre " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "a2: =convert(a,rational,exact);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "evalf(a2-a,20);" }}}{PARA 0 "" 0 "" {TEXT 0 2 "a2" }{TEXT -1 43 " \+ \350 una frazione il cui valore coincide con " }{TEXT 0 1 "a" }{TEXT -1 78 " con una accuratezza pari all'accuratezza di a, e quindi la mas sima possibile." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "a3:=conve rt(a,rational,18);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "evalf (a3-a,18);" }}}{PARA 0 "" 0 "" {TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT 0 2 "a3" }{TEXT -1 43 " \350 una frazione il cui valore coincide con \+ " }{TEXT 0 1 "a" }{TEXT -1 74 " con una accuratezza pari all'accuratez za specificata nel terzo argomento." }}{SECT 1 {PARA 5 "" 0 "" {TEXT 284 9 "Esercizio" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 44 "Determinare la 2000-esima cifra decimale di " }{XPPEDIT 18 0 "Pi;" "6#%#PiG" }{TEXT -1 1 " " }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "evalf(Pi,2002);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 18 "La soluzione e` 9." }}}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 287 9 "Esercizio" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 50 " Determinare una frazione che approssima il numero " }{XPPEDIT 18 0 "ex p(1);" "6#-%$expG6#\"\"\"" }{TEXT -1 24 " a meno di un errore di " } {XPPEDIT 18 0 ".1e-17;" "6#$\"\"\"!#=" }{TEXT -1 15 ".\nPer ottenere \+ " }{XPPEDIT 18 0 "exp(1);" "6#-%$expG6#\"\"\"" }{TEXT -1 18 " bisogna \+ scrivere " }{TEXT 0 6 "exp(1)" }{TEXT -1 3 ". (" }{HYPERLNK 17 "exp" 2 "exp" "" }{TEXT -1 28 " \350 la funzione esponenziale)" }}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ee := evalf(exp(1),20);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "eer := convert(ee,rational,19);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "evalf(exp(1)-eer,19);" }}}}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 39 "Manipolazione di espressioni algebriche" }}{PARA 0 "" 0 "" {TEXT -1 289 "Le espressioni algebriche possono essere somat e, sottratte, moltiplicate, divise, ecc. il risultato sara` ancora un' espressione dello stesso tipo. A volte il risultato non e` proprio que llo che ci si aspetta, questo si puo` ottenere manipolando ulteriormen te l'espressione con i comandi , " }{HYPERLNK 17 "simplify" 2 "simplif y" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "expand" 2 "expand" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "factor" 2 "factor" "" }{TEXT -1 2 ", " } {HYPERLNK 17 "collect" 2 "collect" "" }{TEXT -1 96 ", ecc. (si guardin o i riferimenti della pagina di aiuto dei comandi che abbiamo qui illu strato)." }}{PARA 0 "" 0 "" {TEXT -1 115 "Simplify applica un certo nu mero di regole di semplificazione, che il pi\371 delle volte fanno que llo che ci si aspeta" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "expr := cos(x)^2 + sin(x)^2;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "simplify(expr);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "expr:=( x^2-1)/(x-1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "simplify(( expr));" }}}{PARA 0 "" 0 "" {TEXT -1 15 "In alcuni casi " }{TEXT 0 8 " simplify" }{TEXT -1 120 " non fa niente (l'espressione \350 gi\340 in \+ una forma sulla quale tutte le regole di semplificazione agiscono in m odo banale)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "expr1 := (x^2 -1)*(x-1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "simplify(expr 1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "expr2 := (x+1)*(x-1) ^2;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "simplify(expr2);" }} }{PARA 0 "" 0 "" {TEXT -1 36 "si pu\362 allora agire ad esempio con \+ " }{TEXT 0 6 "factor" }{TEXT -1 32 ", per fattorizzare l\340espression e" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "factor(expr1);" }}} {PARA 0 "" 0 "" {TEXT -1 11 "oppure con " }{TEXT 0 6 "expand" }{TEXT -1 31 " per espandere tutti i prodotti" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "expand(expr1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "expand(expr2);" }}}{PARA 0 "" 0 "" {TEXT -1 128 "In alcuni cas i pu\362 essere necessario raccogliere le potenze di una particolare i ndeterminata, questo si pu\362 fare con il comando " }{TEXT 0 7 "colle ct" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "expr := x*y + x^2*y^2 \+ + x * y^3 + x^3 *y + x^2*y^3 + x^3*y^2 ; " }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 16 "collect(expr,x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "collect(expr,y);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 261 "" 0 "" {TEXT 27 12 "Sostituzio ne" }}{PARA 0 "" 0 "" {TEXT -1 158 "A volte e` necessario sostituire u na parte di una espressione algebrica (ad esempio una variabile) con u n'altra espressione, per far questo si usa il comando " }{HYPERLNK 17 "subs" 2 "subs" "" }{TEXT -1 18 " o con il comando " }{HYPERLNK 17 "ev al" 2 "eval" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "expr := x^ 2+y^2;\nregole := x=2*t/(1+t^2), y = (1- t^2)/(1+t^2);\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "expr_1:=eval(expr,[regole]);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "expr_2:=subs (regole, expr); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "simplify(expr_1);simpli fy(expr_2);" }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 12 "Osservazioni" }} {PARA 0 "" 0 "" {TEXT -1 101 "Le regole di sostituzione in eval devono essere messe tra parentesi quadre, ossia devono formare una " } {HYPERLNK 17 "lista" 2 "list" "" }{TEXT -1 47 " oppure tra parentesi g raffe ovvero formare un " }{HYPERLNK 17 "insieme" 2 "set" "" }{TEXT -1 2 ".." }}{PARA 0 "" 0 "" {TEXT -1 49 "Ci sono due importanti differ enze tra il comando " }{TEXT 0 4 "subs" }{TEXT -1 14 " e il comando " }{TEXT 0 4 "eval" }{TEXT -1 28 ".\nLa prima differenza \350 che " } {TEXT 0 4 "subs" }{TEXT -1 41 " agisce soltanto sintatticamente, mentr e " }{TEXT 0 4 "eval" }{TEXT -1 83 ", una volta fatta la sostituzione \+ sintattica, valuta effettivamente l'espressione. " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "subs(x=0,sin(x));" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 17 "eval(sin(x),x=0);" }}}{PARA 0 "" 0 "" {TEXT -1 373 "La seconda differenza \350 che quano si hanno pi\371 regole di sostit uzione, subs applica la prima regola, quindi al risultato della prima \+ sostituzione applica la seconda regola, al risultato della seconda app lica la terza e cos\354 via. Al contrario eval applica tutte le regole di sostituzione contemporaneamente, ossia le regole vengono tutte app licate all'espressione originale." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "subs(x=y,y=z,z=0,cos(x));" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 27 "eval(cos(x),[x=y,y=z,z=0]);" }}}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 285 9 "Eser cizio" }}{PARA 0 "" 0 "" {TEXT -1 32 "Verificare che i punti del tipo \n" }{XPPEDIT 18 0 "x = (t^2+1)/(2*t);" "6#/%\"xG*&,&*$%\"tG\"\"#\"\" \"F*F*F**&F)F*F(F*!\"\"" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {XPPEDIT 18 0 "y = (t^2-1)/(2*t);" "6#/%\"yG*&,&*$%\"tG\"\"#\"\"\"F*!\"\"F**&F)F*F (F*F+" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 45 "appartengono tutt i all'iperbole di equazione " }{XPPEDIT 18 0 "x^2-y^2 = 1;" "6#/,&*$% \"xG\"\"#\"\"\"*$%\"yGF'!\"\"F(" }{TEXT -1 0 "" }}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 101 "a := x = (t^2+1)/(2*t) ;\nb := y = (t^2-1)/(2*t);\neq := x^2-y^2; \neq_1 := subs(a,b,eq);\nsimplify(eq_1);" }}}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 20 "" 0 "" {TEXT 286 9 "Esercizi o" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 61 "Verificare che i punti della \+ retta di equazioni parametriche\n" }{XPPEDIT 18 0 "x = 1/sqrt(2)-t;" " 6#/%\"xG,&*&\"\"\"F'-%%sqrtG6#\"\"#!\"\"F'%\"tGF," }{TEXT -1 0 "" }} {PARA 0 "" 0 "" {XPPEDIT 18 0 "y = 1/sqrt(2)+t;" "6#/%\"yG,&*&\"\"\"F' -%%sqrtG6#\"\"#!\"\"F'%\"tGF'" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {XPPEDIT 18 0 "z = sqrt(2)*t;" "6#/%\"zG*&-%%sqrtG6#\"\"#\"\"\"%\"tGF* " }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 43 "e` contenuta nell'iper boloide di equazione\n" }{XPPEDIT 18 0 "x^2+y^2 = z^2+1;" "6#/,&*$%\"x G\"\"#\"\"\"*$%\"yGF'F(,&*$%\"zGF'F(F(F(" }{TEXT -1 0 "" }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "eval(\nx^2+y^2 - z^2,\n[\nx = 1/sqrt(2)-t,y = 1/sqrt( 2)+t,z = sqrt(2)*t]\n);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 " simplify(%);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}} {SECT 1 {PARA 4 "" 0 "" {TEXT 27 8 "Funzioni" }}{PARA 0 "" 0 "" {TEXT -1 105 "Usando le funzioni di libreria (exp, log, sin, cos, tan, etc.) e` possibile definire delle nuove funzioni" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 26 "f := x -> sin(x) * exp(x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "f(Pi/4);" }}}{PARA 0 "" 0 "" {TEXT -1 53 "Le funz ioni possono dipendere anche da piu` variabili" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "g := (x,y) -> sin(x) / cos (y);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "g (1,0);" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 11 "g(Pi,Pi/2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT -1 22 "Perche' questo errore ?" }}{PARA 5 "" 0 "" {XPPEDIT 18 0 "cos(Pi/2) = 0;" "6#/-%$cosG6#*&%#P iG\"\"\"\"\"#!\"\"\"\"!" }{TEXT -1 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 47 "Le funzioni si possono comporre con il simbolo " }{HYPERLNK 17 "@ " 2 "@" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "(f @ g )(x,y); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "f(g(x,y));" }}}{PARA 0 "" 0 "" {TEXT -1 83 "Per fare la potenza (rispetto alla composizione) \+ di una funzione si usa il comando " }{TEXT 0 2 "@@" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 14 "h := x -> x^2;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "k := h @@ 3;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "k(3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "(((3)^2)^2)^2 ;" }}}{PARA 0 "" 0 "" {TEXT -1 36 "Le funzioni si possono derivare con " }{HYPERLNK 17 "D" 2 "D" "" }{TEXT -1 12 " oppure con " }{HYPERLNK 17 "diff" 2 "diff" "" }{TEXT -1 2 ". " }{TEXT 0 1 "D" }{TEXT -1 215 " \+ serve per derivare delle funzioni e produce una funzione (\350 quindi \+ una funzione che ha come dominio e codominio l'insieme delle funzioni \+ -di Maple-. Tradizionalmente in matematica un tale oggetto viene chiam ato un " }{TEXT 288 9 "operatore" }{TEXT -1 1 ")" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 5 "D(f);" }}}{PARA 0 "" 0 "" {TEXT -1 7 "mentre " }{TEXT 0 4 "diff" }{TEXT -1 76 " serve per derivare una espressione ri spetto a una specificata indeterminata" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "diff(f(x),x);" }}}{PARA 0 "" 0 "" {TEXT -1 8 "Sia con " }{TEXT 0 1 "D" }{TEXT -1 9 " che con " }{TEXT 0 4 "diff" }{TEXT -1 42 " si possono calcolare le derivate parziali" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "diff(g(x,y),x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "D[1](g);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "diff(g(x,y),y);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "D[2](g); " }}}{PARA 0 "" 0 "" {TEXT -1 81 "Per calcolare le derivate successive si pu\362 usare la composizione della funzione " }{TEXT 0 1 "D" } {TEXT -1 14 " con se stessa" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "(D@@3)(f);" }}}{PARA 0 "" 0 "" {TEXT -1 28 "oppure la forma seguen te di " }{TEXT 0 4 "diff" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 " diff(f(x),x$3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {SECT 1 {PARA 4 "" 0 "" {TEXT 27 26 "Funzioni definite a tratti" }} {PARA 0 "" 0 "" {TEXT -1 65 "E` possibile definire funzioni \"definite a pezzi\" con il comando " }{HYPERLNK 17 "piecewise" 2 "piecewise" " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "f := x -> piecewise(x <0 , -x,\nx>= 0 and x < 2 , x,\n4-x\n);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "f(x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "f(- 2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "f(1/4);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "f(2*sqrt(2));" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 7 "Grafici" }}{PARA 0 "" 0 "" {TEXT -1 59 "Per disegn are il grafico di una funzione si usa il comando " }{HYPERLNK 17 "plot " 2 "plot" "" }{TEXT -1 60 ". Ci sono sostanzialmente due modi di chia mare l'istruzione " }{TEXT 0 4 "plot" }{TEXT -1 1 ":" }}{PARA 0 "" 0 " " {TEXT -1 66 "il primo \350 specificando due argomenti, una funzione \+ e un dominio (" }{HYPERLNK 17 "range" 2 "range" "" }{TEXT -1 1 ")" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "f := x -> sin(x) * (x^2-1); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "plot ( f,0..2*Pi);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "plot (abs @ f,0..2*Pi);" }}} {PARA 0 "" 0 "" {TEXT -1 142 "il secondo modo \350 quello di dare in i nput una espressione di una indeterminata e come secondo argomento un' uguaglianze indeterminata'dominio " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "plot(f(z),z=-4..6);" }}}{PARA 0 "" 0 "" {TEXT -1 145 "Si pu\362 specificare un intervallo di variabilit\340 anche per la va riabile dipendente aggiungendo al comando plot un ulteriore argomento \+ della forma " }{XPPEDIT 18 0 "y=a..b" "6#/%\"yG;%\"aG%\"bG" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "plot(f(z),z=-2*Pi..2*Pi,y=-3.5..3.5 );" }}}{PARA 0 "" 0 "" {TEXT -1 53 "Si possono disegnare pi\371 funzio ni contemporaneamente:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "pl ot([f,D(f)],0..2*Pi);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "pl ot([f(x),D(f)(x)],x=0..2*Pi);" }}}{PARA 0 "" 0 "" {TEXT -1 29 "Si poss ono specificare molte " }{HYPERLNK 17 "opzioni" 2 "plot,options" "" } {TEXT -1 21 ", ne mostriamo alcune" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "plot([f(x),D(f)(x)],x=0..2*Pi,thickness=2);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "plot([f(x),D(f)(x)],x=0..2*P i,color=blue);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "plot([f(x ),D(f)(x)],x=0..2*Pi,color=[red,blue],thickness=3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 289 9 " Esercizio" }}{PARA 0 "" 0 "" {TEXT -1 36 "Disegnare il grafico della f unzione " }{XPPEDIT 18 0 "proc (x) options operator, arrow; 1/(1+x^2) \+ end proc;" "6#R6#%\"xG7\"6$%)operatorG%&arrowG6\"*&\"\"\"F,,&F,F,*$F% \"\"#F,!\"\"F*F*F*" }{TEXT -1 36 " edelle sue derivate prima e seconda " }}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 9 "Soluzione" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 19 "f := x-> 1/(1+x^2):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "plot([f,D(f),(D@@2)(f)], -2..2 , thickness=2, co lor=[red,magenta,blue]);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 20 "Espressioni booleane" }} {PARA 0 "" 0 "" {TEXT -1 15 "Un espressione " }{HYPERLNK 17 "booleana " 2 "boolean" "" }{TEXT -1 68 " \350 costituita da espressioni formate con gli operatori di relazione " }{TEXT 0 1 "<" }{TEXT -1 3 ", " } {TEXT 0 1 ">" }{TEXT -1 3 ", " }{TEXT 0 2 "<=" }{TEXT -1 2 ", " } {TEXT 0 2 ">=" }{TEXT -1 2 ", " }{TEXT 0 1 "=" }{TEXT -1 2 ", " } {TEXT 0 2 "<>" }{TEXT -1 98 " (minore, minore o uguale, maggiore, magg iore o uguale, uguale, diverso) e dagli operatori logici " }{URLLINK 17 "" 4 "" "seealso" }{TEXT 0 3 "and" }{TEXT -1 2 ", " }{TEXT 0 2 "or " }{TEXT -1 2 ", " }{TEXT 0 3 "not" }{TEXT -1 1 "." }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 15 "a:='a': b:='b':" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 17 "`to be`:= a = b;\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "`to be` or not `to be`;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "`to be` and not `to be`;" }}}{PARA 0 "" 0 "" {TEXT -1 235 "A parte i casi in cui le regole di semplificazione logica dann o delle verit\340 o falsit\340 \"lapalissiane\", come nei due casi pre cedenti, l'espressione non viene valutata. Per ottenere la valutazione (true o false) bisogna usare il comando " }{HYPERLNK 17 "evalb" 2 "EV ALB" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "`to be`;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "evalb(`to be`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "a := b :\n`to be`;\nevalb(`to be`) \+ ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "3 < 5;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "evalb(3 < 5);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "3 < 5 or 3 >= 5;" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 12 "Condizion ali" }}{PARA 0 "" 0 "" {TEXT -1 84 "Per subordinare un'azione al verif icarsi o meno di una condizione si usa il comando " }{HYPERLNK 17 "if " 2 "if" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "a := 1: b:= 10 0:\nif a = b then 1 else 0 fi;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "a := 1: b:= 1:\nif a = b then 1 else 0 fi;" }}}{SECT 0 {PARA 5 "" 0 "" {TEXT 290 7 "Esempio" }}{PARA 0 "" 0 "" {TEXT -1 130 "Come s i pu\362 definire una funzione di due variabili, delta, che prende i v alori 1 o 0 a seconda che le variabili siano uguali o no?" }}{SECT 1 {PARA 20 "" 0 "" {TEXT 291 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "delta := ( i , j ) -> if i = j then 1 else 0 fi ;" }} }{PARA 0 "" 0 "" {TEXT -1 103 "Non spaventi il fatto che nell'output d ella definizione di delta \350 comparsa la parola proc. In effetti " } {TEXT 0 2 "->" }{TEXT -1 67 " \350 una forma abbreviata della pi\371 c omplessa e versatile 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 "Ricorsione" }}{PARA 0 "" 0 "" {TEXT -1 88 "Maple accet ta definizioni ricorsive di funzioni. Ci\362 lo si pu\362 fare mediant e l'uso dell'" }{TEXT 0 2 "if" }}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "E sempio 1" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "f:='f';\nf := n \+ -> if n = 0 then 0 else n+f(n-1) fi;" }{TEXT -1 0 "" }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 7 "Domanda" }}{PARA 0 "" 0 "" {TEXT -1 41 "Cosa ca lcola la funzione appena definita?" }}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 8 "Risposta" }}{PARA 0 "" 0 "" {XPPEDIT 18 0 "f(n)" "6#-%\"fG6#%\"n G" }{TEXT -1 56 " \350 la somma dei numeri do 0 a n. Definiamo una fun zione " }{XPPEDIT 18 0 "g(n)" "6#-%\"gG6#%\"nG" }{TEXT -1 44 " che ass ume valore true o false secondo che " }{XPPEDIT 18 0 "f(n)=n*(n+1)/2" "6#/-%\"fG6#%\"nG*(F'\"\"\",&F'F)F)F)F)\"\"#!\"\"" }{TEXT -1 6 " o no. " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "g := n -> evalb( f(n) = \+ n*(n+1)/2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 " g (1239);" }}}}}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 12 "Osservazione" }}{PARA 0 "" 0 "" {TEXT -1 96 "Le definizione ricorsive sono limitate dal fatto che sono inefficienti (per calcolare il valore " }{XPPEDIT 18 0 "n" "6#% \"nG" }{TEXT -1 79 " si devono calcolare tutti i precedenti -per migli orare l'efficienza si veda l'" }{HYPERLNK 17 "opzione remember" 2 "rem ember" "" }{TEXT -1 129 " per il comando proc-) il programma Maple ha \+ un massimo numero di livelli di ricorsione. Raggiunto questo livello s i ha un errore" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "f(4288);" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "f(4289);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 " Esempio 2" }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 " f:='f';\nf := n -> if n = 0 then 1 else n*f(n-1) fi;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "f(20);" }}}{SECT 1 {PARA 20 "" 0 "" {TEXT 27 7 "Domanda" }}{PARA 0 "" 0 "" {TEXT -1 13 "Cosa calcola " } {XPPEDIT 18 0 "f" "6#%\"fG" }{TEXT -1 1 "?" }}{SECT 1 {PARA 20 "" 0 " " {TEXT 27 8 "Risposta" }}{PARA 0 "" 0 "" {TEXT -1 19 "Il fattoriale d i n." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "evalb( f(15)=15! ); " }}}}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 9 "Esempio 3" }}{PARA 0 "" 0 "" {TEXT -1 25 "Si definisca la funzione " }{XPPEDIT 18 0 "f(n);" "6#- %\"fG6#%\"nG" }{TEXT -1 10 " che d\340 l'" }{XPPEDIT 18 0 "n" "6#%\"nG " }{TEXT -1 48 "-esimo termine della successione che approssima " } {XPPEDIT 18 0 "sqrt(3)" "6#-%%sqrtG6#\"\"$" }{TEXT -1 40 ", con il met odo delle tangenti di Newton" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 131 "f := 'f';\ng := x -> x^2 -2:\nx_0:=1;\nf := proc (n)\noption reme mber;\n if n = 0 then x_0 else f(n-1) - g(f(n-1))/D(g)(f(n-1)) fi\nend ;;" }}}{PARA 0 "" 0 "" {TEXT -1 109 "Si noti la velocit\340 con cui ta le successione converge, con sole 6 iterazioni si ha una precisione di 49 cifre" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 85 "n := 6:\ncifre: =49;\nevalb(\nevalf(f(n)-sqrt(2),cifre)=0.\n);\nevalf(f(n)=sqrt(2),cif re)\n;" }}}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 10 "Iterazione" }}{PARA 0 "" 0 "" {TEXT -1 39 "Il comando per effettuare iterazioni \350 " } {HYPERLNK 17 "for" 2 "for" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "for i from 0 to 10 do\nevalf(sin(i));\nod;" }}}{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 10 "Sommatorie" }}{PARA 0 "" 0 "" {TEXT -1 86 "Si poss ono eseguire sommatorie, senza dover scrivere tutti gli addendi, con i comandi " }{HYPERLNK 17 "sum" 2 "sum" "" }{TEXT -1 3 " e " } {HYPERLNK 17 "add" 2 "add" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "add (i^2 , i = 1..127) ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "sum ('i^2' , 'i' = 1..127) ;" }}}{PARA 0 "" 0 "" {TEXT -1 11 "Il comando " }{TEXT 0 3 "add" }{TEXT -1 40 " pu\362 essere dato anche in un'altra forma" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "add (i^2 \+ , i = [1,3,5]) ;" }}}{PARA 0 "" 0 "" {TEXT -1 78 "si intende che la so mma \350 estesa a tutti gli elementi della lista.\nIl comando " } {TEXT 0 3 "sum" }{TEXT -1 52 " calcola, quando \350 possibili, anche s omme indefinite" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "sum('i',' i'=0..'n');" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "sum('i^2','i '=0..'n');" }}}{PARA 0 "" 0 "" {TEXT -1 72 "Quando il risultato non ha una forma elementare viene lasciato indicato." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "f := n -> sum('log(i)','i'=1..'n');" }}}{PARA 0 "" 0 "" {TEXT -1 93 "ma viene trattato in modo simbolico come una somm a e calcolato nei casi particolari richiesti" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "f(5);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 25 "Liste, insiemi e sequenze" }}{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 ric hiamare 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 292 21 "Perch\351 q uesto 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 , rino \} ;" }}}{PARA 0 "" 0 "" {TEXT -1 259 "come si vede, gli elementi ripetuti, vengono considerati una s ola volta, ed inoltre vangono ordinati, secodo un criterio interno a M aple (sostanzialmente in ordine alfabetico). Gli elementi dell'insieme possono quindi essere richiamati, utilizzando ancora l'" }{HYPERLNK 17 "operatore di selezione" 2 "selection" "" }}{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 "insi eme[5];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 293 21 "Perch\351 questo errore?" }}{PARA 0 "" 0 "" {TEXT -1 89 "Abbiamo cercato di farci dare il quinto elemento di \+ un insieme che ne contiene soltanto 4" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 4 "Una " }{HYPERLNK 17 "seque nza" 2 "sequence" "" }{TEXT -1 56 " \350 una successione finita di ogg etti separati da virgole" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 137 "sequenza := alpha,beta,gamma,delta,epsilon,phi,psi,chi,xi,eta, th eta,zeta,iota,kappa,lambda,mu,nu,omicron,pi,rho,sigma,tau,upsilon,omeg a;" }}}{PARA 0 "" 0 "" {TEXT -1 62 "l'operatore di selezione pu\362 es sere usato anche sulle sequenze" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "sequenza[12];" }}}{PARA 0 "" 0 "" {TEXT -1 164 "Se a una lista o ad un insieme si applica l'operatore di selezione, senza specificar e alcun indice, si ottiena la sequenza degli elementi della lista o de ll'insiema" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "lista[];" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "insieme[];" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 95 "C'\350 un modo molto u tile di generare sequenze (e quindi liste e insiemi) utilizzando il co mando " }{HYPERLNK 17 "seq" 2 "seq" "" }{TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "seq((-1)^i/(i+1) , i=0..10);" }}}{PARA 0 "" 0 "" {TEXT -1 239 "viene generata la sequenza dei valori che assume l'espressione che costituisce il primo argomento quando viene valutat a sostituendo all'indeterminata specificata al secondo membro i valori del range specificato anch'esso al secondo membro." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 166 "Se si vuole il numero \+ di elementi che compongono un insieme, una lista o una sequenza (o anc he il numero di operandi di una qualunque espressione), si usa il coma ndo " }{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 16 "nop s(a * b * c);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "l inalg" {TEXT 27 17 "Vettori e matrici" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 20 "Istruzioni coinvolte" }}{PARA 0 "" 0 "" {TEXT 0 42 "array matrix vector linsolve trace inverse" }}{PARA 0 "" 0 "" {TEXT 0 14 "& * evalm equal" }}{PARA 0 "" 0 "" {TEXT 0 21 "randmatrix randvector" }} {PARA 0 "" 0 "" {TEXT 0 4 "with" }{TEXT -1 0 "" }}}{PARA 0 "" 0 "" {TEXT 0 0 "" }}{PARA 0 "" 0 "" {TEXT -1 11 "Il comando " }{HYPERLNK 17 "with" 2 "with" "" }{TEXT -1 33 " serve a caricare dei pacchetti ( " }{HYPERLNK 17 "packages" 2 "package" "" }{TEXT -1 73 ") che definisc ono ulteriori istruzioni di Maple. Ad esempio il pacchetto " } {HYPERLNK 17 "linalg" 2 "linalg" "" }{TEXT -1 56 " carica delle istruz ioni connesse con l'algebra lineare." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "with(linalg):" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 7 "Vettori" }}{PARA 0 "" 0 "" {TEXT -1 14 "L'istruzione " }{HYPERLNK 17 "vector" 2 "linalg[vector]" "" }{TEXT -1 37 " serve per creare vett ori. Ad esempio" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "v := vect or([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 or a scriviamo" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "v;" }}}{PARA 0 "" 0 "" {TEXT -1 183 "non vediamo, come ci saremmo aspettati il vett ore con tutte le sue coordinate. Per vedere il vettore nella sua inter ezza, bisogna dire esplicitamente a Maple di farlo con il comando " } {HYPERLNK 17 "evalm" 2 "evalm" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalm(v);" }}}{PARA 0 "" 0 "" {TEXT -1 50 "Per estrarre le coor dinate di un vettore 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 errore 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 di 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 c omponenti che non sono state assegnate, vediamolo" }}{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 possiamo ora assegnare:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "v[1]:=4 ; v[2]:=5 ;\nevalm(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 componen ti di cui si sono state assegnate solo le prime 4." }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 37 "v:= vector ( 6 , [6,3,3,4,2,5,1,90]);" }}} {SECT 1 {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 31 "M := matrix(2,3,[1,2 ,3,4,5,6]);" }}}{PARA 0 "" 0 "" {TEXT -1 192 "Ossia matrix richiede tr e argomenti: vengano specificati prima il numero di righe, poi il nume ro di colonne e quindi la lista dei suoi elementi letti dall'alto in b asso e da sinistra a destra." }}{PARA 0 "" 0 "" {TEXT -1 61 "Come per \+ i vettori 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]);" }}}{PARA 0 "" 0 "" {TEXT -1 84 "che ris ulta essere una matrice 4 x 3 in cui sono stati assegnati i primi 7 el ementi." }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 5 "Array" }}{PARA 0 "" 0 "" {TEXT -1 192 "I vettori e le matrici sono casi particolari di ogget ti pi\371 generali chiamati array, e le istruzioni vector e matrix alt ro non sono che abbreviazioni di alcuni usi particolari dell'istruzion e " }{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 := vecto r (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 "eva lb(v=w);" }}}{PARA 0 "" 0 "" {TEXT -1 187 "Sebbene i due oggetti siano uguali, abbiamo ottenuto risposta negativa, questo perch\351 evalb es egue un test troppo superficiale. Per confrontare matrici, vettori, bi sogna 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:=a rray(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 l a sintassi dell'istruzione array: si specificano gli intervalli su cui far variare gli indici e quindi si mette la lista degli elementi nel \+ caso delle matrici gli elementi sono dati come lista di liste, che des crivono le righe della matrice." }}{PARA 0 "" 0 "" {TEXT -1 55 "Si pos sono per\362 indicizzare gli array anche su diversi " }{HYPERLNK 17 "r ange" 2 "range" "" }{TEXT -1 62 " di interi (non necessariamente che i nizino 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 ott iene un vettore in cui le coordinate non sono indicizzate da 1,2,3,4 m a 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 i ndicizzato da 3 di un array in 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 pu\362 usare un'altra costruzione:" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "A:=matrix(2,3,funz);" }}} {PARA 0 "" 0 "" {TEXT -1 72 "\350 stata creata in questo modo una matr ice che al posto i,j ha l'oggetto " }{TEXT 259 9 "funz(i,j)" }{TEXT -1 5 ". Se " }{TEXT 260 4 "funz" }{TEXT -1 116 " fosse stata una funzi one avremma avuto la matrice con al posto i,j la funzione calcolata in tali valori. Ad esempio" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 " funz := (i,j) -> i+j:\nA:=matrix(2,3,funz);" }}}{PARA 0 "" 0 "" {TEXT -1 41 "Ad esempio si pi\362 definire una funzione " }{TEXT 0 5 "id(n) " }{TEXT -1 54 " che generi la matrice identit\340 nxn nel seguente mo do:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "id := n -> matrix(n,n ,(i,j) -> if i = j then 1 else 0 fi ):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 " id(7);" }}}{PARA 0 "" 0 "" {TEXT -1 166 "Un metodo mo lto pi\371 efficiente per generare matrici identit\340 \350 quello di \+ sfruttare alcune opzioni del comando array, e precisamente dando il co mando array nella forma" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "a rray(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 generare matrici e vettori " }{TEXT 261 7 " casuali" }{TEXT -1 44 ", a tal fine si possono usare le istruzioni " } {HYPERLNK 17 "ramndmatrix" 2 "randmatrix" "" }{TEXT -1 3 " e " } {HYPERLNK 17 "randvector" 2 "randvector" "" }{TEXT -1 1 ":" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "randvector(7);" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 16 "randmatrix(3,7);" }}}}{SECT 1 {PARA 4 "" 0 " " {TEXT 27 25 "Operazioni con le matrici" }}{PARA 0 "" 0 "" {TEXT -1 56 "Per sommare due matrici/vettori si usa il normale segno " }{TEXT 0 1 "+" }{TEXT -1 77 ", mentre per moltiplicare 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 := matr ix(3,7):\nA + B;\nA &* B;" }}}{PARA 0 "" 0 "" {TEXT -1 78 "Per ottener e i risultati bisogna chiederlo esplicitamente con il comando evalm" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "evalm(A + B);\nevalm (A &* \+ B);" }}}{SECT 1 {PARA 7 "" 0 "" {TEXT 27 21 "Perch\351 questi errori? " }}{PARA 0 "" 0 "" {TEXT -1 89 "Le matrici A e B hanno dimensioni tal i che non possono essere n\351 sommate n\351 moltiplicate." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 168 "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]):\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]):\nevalm(A + B );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "C1 := evalm(A &* id(7 ));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "C2 := evalm(id(3) &* A);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "equal ( A , C1 ) an d equal ( A , C2 ) ;\n" }}}{PARA 0 "" 0 "" {TEXT -1 35 "In generale il prodotto di matrici " }{TEXT 262 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 i l simbolo " }{TEXT 0 2 "&*" }{TEXT -1 186 " denota un prodotto che god e di tutte le propriet\340 formali della moltiplicazione tranne la pro priet\340 commutativa, il comando evalm interpreta poi questo simbolo \+ come prodotto di matrici." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 85 "L'elevamento a potenza di matrici quadrate si eseg ue semplicemente usando il simbolo " }{TEXT 0 1 "^" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 40 "A := matrix (2,2,[0,1,1,0]);\nevalm(A^2);" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 " " {TEXT 27 10 "La traccia" }}{PARA 0 "" 0 "" {TEXT -1 87 "La traccia d i una matrice quadrata \350 data dalla somma dei suoi elementi sulla d iagonale" }}{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 pu\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 265 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 266 12 "d ue matrici " }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 1 "x" }{XPPEDIT 18 0 "n;" "6#%\"nG" }{TEXT -1 1 " " }{TEXT 267 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 268 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 269 3 "con" }{TEXT -1 1 " " }{XPPEDIT 18 0 "2 <= n;" "6#1\"\"#%\"nG" }{TEXT -1 1 " " }{TEXT 270 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 271 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 263 7 " siano " }{XPPEDIT 18 0 "A;" "6#%\"AG" } {TEXT -1 3 " e " }{XPPEDIT 18 0 "B;" "6#%\"BG" }{TEXT -1 1 " " }{TEXT 264 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 0 {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 1 {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 150 "A := matri x(3,4,\n[8, -2, 7, -6,\n3, 4, -3, 7,\n3, 2, -5, -6]):\nB := matrix(3,5 ,\n[9, -5, -7, -1, -6,\n-1, -1, 6, 0, -6,\n0, 0, -3, -2, -1]):\nlinsol ve(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, da ta " }{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 272 15 "inve rsa destra " }{TEXT -1 3 "di " }{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\{linsolve(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 gene rare matrici casuali di dimensione 5 x 7 e vediamo per quante di esse \+ esiste un'inversa destra." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 153 "successi := 0:\nB := id(5):\nfor i from 1 to 500 do\nA := randmat rix(5,7):\nC:=\{linsolve(A,B)\}:\nif not C = \{\} then successi := suc cessi + 1 fi:\nod:\nsuccessi;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 5 "" 0 "" {TEXT 27 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 85 " non \+ \350 detto che esista (contrariamente a quanto sembrerebbe mostrere l' esperimento)." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 203 "A := matri x(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, -1 346,\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 probabilit\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 i nversa destra " }{XPPEDIT 18 0 "C;" "6#%\"CG" }{TEXT -1 2 " (" } {HYPERLNK 17 "siamo sicuri che esiste" 1 "" "probabilita" }{TEXT -1 27 ") e verifichiamo quanto fa " }{XPPEDIT 18 0 "AC;" "6#%#ACG" } {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 62 "A := randmat rix (5,5):\nC:=linsolve (A,id(5)):\nevalm (A &* C );" }}}{PARA 0 "" 0 "" {TEXT -1 43 "Non poteva 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 274 2 "se " }{TEXT -1 1 " " }{XPPEDIT 18 0 "A;" "6#%\"AG" }{TEXT -1 1 " " } {TEXT 275 47 "\350 una matrice quadrata che ha un'inversa destra" } {TEXT -1 1 " " }{XPPEDIT 18 0 "C;" "6#%\"CG" }{TEXT -1 1 " " }{TEXT 276 11 "allora tale" }{TEXT -1 1 " " }{XPPEDIT 18 0 "C;" "6#%\"CG" } {TEXT -1 1 " " }{TEXT 277 15 "\350 unica e anche" }{TEXT -1 1 " " } {XPPEDIT 18 0 "CA = Id;" "6#/%#CAG%#IdG" }{TEXT -1 2 ". " }{TEXT 278 12 "Tale matrice" }{TEXT -1 1 " " }{XPPEDIT 18 0 "C;" "6#%\"CG" } {TEXT -1 1 " " }{TEXT 279 10 "\350 detta l'" }{TEXT 273 7 "inversa" } {TEXT 280 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 "in verse" 2 "linalg[inverse]" "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "inverse(A);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "equal(in verse(A),C);" }}}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 27 16 "Una precisazio ne" }}{PARA 0 "" 0 "" {TEXT -1 146 "Si \350 sovente detto che la proba bilit\340 che una matrice abbia certe propriet\340 \350 0. Questo parl ando in termini matematici \350 vero. Per il calcolatore " }{TEXT 281 2 "NO" }{TEXT -1 61 ". Nel senso che il calcolatore ha la possibilit \340 di generare " }{TEXT 283 17 "equiprobabilmente" }{TEXT -1 13 " so ltanto un " }{TEXT 282 13 "numero finito" }{TEXT -1 332 " (anche se mo lto 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 talmente bassa che se a qualcuno n on riesce uno degli esperimenti tentati sopra deve considerarsi partic olarmente (s)fortunato (a seconda del punto di vista)!" }}}}{SECT 1 {PARA 3 "" 0 "vandermonde" {TEXT 294 30 "Il determinante di Vandermond e" }}{PARA 0 "" 0 "" {TEXT -1 44 "Una visualizzazione in un caso parti colare (" }{TEXT 296 21 "non una dimostrazione" }{TEXT -1 83 "), di co me funziona la dimostrazione della formula del determinante di Vanderm onde." }}{PARA 0 "" 0 "" {TEXT -1 18 "Ricordiamo che se " }{XPPEDIT 18 0 "V[x[1] .. x[n]];" "6#&%\"VG6#;&%\"xG6#\"\"\"&F(6#%\"nG" }{TEXT -1 54 " denota la matrice di Vandermonde definita dai numeri " } {XPPEDIT 18 0 "x[1] .. x[n];" "6#;&%\"xG6#\"\"\"&F%6#%\"nG" }{TEXT -1 17 " allora si ha che" }}{PARA 262 "" 0 "" {XPPEDIT 18 0 "det(V[x[1] . . x[n]]) = product(product(x[j]-x[i],j = i+1 .. n),i = 1 .. n);" "6#/- %$detG6#&%\"VG6#;&%\"xG6#\"\"\"&F,6#%\"nG-%(productG6$-F36$,&&F,6#%\"j GF.&F,6#%\"iG!\"\"/F:;,&F=F.F.F.F1/F=;F.F1" }{TEXT -1 0 "" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 15 "Visualizzazione" }}{PARA 0 "" 0 "" {TEXT -1 100 "Carichiamo il pacchetto linalg e togliamo eventuali valo ri precedentemente assegnati alla variabile " }{XPPEDIT 18 0 "x;" "6#% \"xG" }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "with( linalg):\nx:='x':" }}}{PARA 0 "" 0 "" {TEXT -1 56 "Definiamo una matri ce di Vandermode generica di ordine 5" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "W := vandermonde( [ seq(x[i],i=1..5) ] );" }}}{PARA 0 "" 0 "" {TEXT -1 61 "all'ultima colonna si sottrae la penultima molt iiplicata per " }{XPPEDIT 18 0 "x[1];" "6#&%\"xG6#\"\"\"" }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "W1 := addcol(W,4,5,-x[1 ]);" }}}{PARA 0 "" 0 "" {TEXT -1 57 "alla quarta colonna si sottrae la terza moltiplicata per " }{XPPEDIT 18 0 "x[1];" "6#&%\"xG6#\"\"\"" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "W2 := addcol(W1,3,4,-x[1]); " }}}{PARA 0 "" 0 "" {TEXT -1 58 "alla terza colonna si sottrae la sec onda moltiplicata per " }{XPPEDIT 18 0 "x[1];" "6#&%\"xG6#\"\"\"" } {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "W3 := addcol (W2,2,3,-x[1]);\n" }}}{PARA 0 "" 0 "" {TEXT -1 58 "alla seconda colonn a si sottrae la prima moltiplicata per " }{XPPEDIT 18 0 "x[1];" "6#&% \"xG6#\"\"\"" }{TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "W4 := addcol(W3,1,2,-x[1]);\n" }}}{PARA 0 "" 0 "" {TEXT -1 216 "Da to che le operazioni effettuete (aggiungere ad una colonna un multiplo di un'altra) non altera il determinante di una matrice, s i ottiene u na matrice che ha lo stesso determinante della matrice di partenza, ov vero" }}{PARA 265 "" 0 "" {XPPEDIT 18 0 "Det(W4) = Det(W);" "6#/-%$Det G6#%#W4G-F%6#%\"WG" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 53 "Evid entemente, sviluppando secondo la prima riga, il " }{XPPEDIT 18 0 "Det (W4);" "6#-%$DetG6#%#W4G" }{TEXT -1 44 " \350 uguale al determinante d ella sottomatrice" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "W5:=sub matrix(W4,2..5,2..5);" }}}{PARA 0 "" 0 "" {TEXT -1 59 "Si osserva che \+ questa matrice \350 una matrice di Vandermonde " }{XPPEDIT 18 0 "V[x[2 ] .. x[5]];" "6#&%\"VG6#;&%\"xG6#\"\"#&F(6#\"\"&" }{TEXT -1 15 " a cui la riga " }{XPPEDIT 18 0 "i;" "6#%\"iG" }{TEXT -1 32 "-esima \350 sta ta moltiplicata per " }{XPPEDIT 18 0 "x[i+1]-x[1];" "6#,&&%\"xG6#,&%\" iG\"\"\"F)F)F)&F%6#F)!\"\"" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "map(factor,W5);" }}}{PARA 0 "" 0 "" {TEXT -1 49 "dalle propriet \340 dei determinanti segue allora che" }}{PARA 263 "" 0 "" {XPPEDIT 18 0 "Det(matrix([[1, x[1], x[1]^2, x[1]^3, x[1]^4], [1, x[2], x[2]^2, x[2]^3, x[2]^4], [1, x[3], x[3]^2, x[3]^3, x[3]^4], [1, x[4], x[4]^2, x[4]^3, x[4]^4], [1, x[5], x[5]^2, x[5]^3, x[5]^4]])) = (-x[1]+x[2])* (-x[1]+x[3])*(-x[1]+x[4])*(-x[1]+x[5])*Det(matrix([[1, x[2], x[2]^2, x [2]^3], [1, x[3], x[3]^2, x[3]^3], [1, x[4], x[4]^2, x[4]^3], [1, x[5] , x[5]^2, x[5]^3]]));" "6#/-%$DetG6#-%'matrixG6#7'7'\"\"\"&%\"xG6#F,*$ &F.6#F,\"\"#*$&F.6#F,\"\"$*$&F.6#F,\"\"%7'F,&F.6#F3*$&F.6#F3F3*$&F.6#F 3F7*$&F.6#F3F;7'F,&F.6#F7*$&F.6#F7F3*$&F.6#F7F7*$&F.6#F7F;7'F,&F.6#F;* $&F.6#F;F3*$&F.6#F;F7*$&F.6#F;F;7'F,&F.6#\"\"&*$&F.6#F]oF3*$&F.6#F]oF7 *$&F.6#F]oF;*,,&&F.6#F,!\"\"&F.6#F3F,F,,&&F.6#F,F[p&F.6#F7F,F,,&&F.6#F ,F[p&F.6#F;F,F,,&&F.6#F,F[p&F.6#F]oF,F,-F%6#-F(6#7&7&F,&F.6#F3*$&F.6#F 3F3*$&F.6#F3F77&F,&F.6#F7*$&F.6#F7F3*$&F.6#F7F77&F,&F.6#F;*$&F.6#F;F3* $&F.6#F;F77&F,&F.6#F]o*$&F.6#F]oF3*$&F.6#F]oF7F," }{TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 57 "Nel caso generale, in questo modo si otti ene la relazione" }}{PARA 264 "" 0 "" {XPPEDIT 18 0 "Det(V[x[1] .. x[n ]]) = product(x[j]-x[1],j = 2 .. n)*Det(V[x[2] .. x[n]]);" "6#/-%$DetG 6#&%\"VG6#;&%\"xG6#\"\"\"&F,6#%\"nG*&-%(productG6$,&&F,6#%\"jGF.&F,6#F .!\"\"/F9;\"\"#F1F.-F%6#&F(6#;&F,6#F?&F,6#F1F." }{TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 108 "Da cui si ottiene induttivamente la tesi .\nFacciamo verificare a Maple che l'uguaglianza scritta sopra \350 ve ra" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 90 "evalb(expand(\ndet(W) \+ = product(x[j]-x[1],j=2..5)*det(vandermonde([seq(x[i],i=2..5)]))\n)\n) ;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "problemi" {TEXT 27 15 "Alcuni problemi" }}{SECT 1 {PARA 3 "" 0 " " {TEXT 294 10 "Problema 1" }}{PARA 0 "" 0 "" {TEXT 294 21 "Trovare un polinomio " }{XPPEDIT 18 0 "P(x) = sum(a[i]*x^i,i = 0 .. k);" "6#/-% \"PG6#%\"xG-%$sumG6$*&&%\"aG6#%\"iG\"\"\")F'F/F0/F/;\"\"!%\"kG" } {TEXT -1 2 ",\000" }{TEXT 294 117 " tale che il suo valore ed il valor e delle sue derivate in 0 fino all'ordine 13 coincidano con quelle del la funzione " }{XPPEDIT 18 0 "sin;" "6#%$sinG" }{TEXT 294 46 ". Disegn are quindi il polinomio e la funzione " }{XPPEDIT 18 0 "sin;" "6#%$sin G" }{TEXT 294 17 " nell'intervallo " }{XPPEDIT 18 0 "[-3*Pi, 3*Pi];" " 6#7$,$*&\"\"$\"\"\"%#PiGF'!\"\"*&F&F'F(F'" }{TEXT -1 1 "." }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 69 "i:='i':k:='k': a:='a':\nP := x -> a[0] + sum ( a[i]* \+ x ^ i , i=1..k );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 80 "k:=13: \na[0] := sin(0):\n\nfor j from 1 to k do\n a[j] := (D@@j)(sin)(0) / \+ j!:\nod:\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "P(x);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 110 "test := P(0)=sin(0):\nfor j from 1 to 13 do \ntest := test and (D@@j)(sin)(0)=subs( x=0 , diff(P (x),x$j) ):\nod:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "test;" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "plot ([sin,P], -3*Pi..3*Pi , -2..2,scaling=CONSTRAINED,color=[red,blue],thickness=3);" }}}{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 3 "" 0 "" {TEXT 294 10 "Problema 2" }}{PARA 0 "" 0 "" {TEXT 294 19 "Trovare i polinomi " }{XPPEDIT 18 0 "P[k];" "6#&%\"PG6#% \"kG" }{TEXT 294 78 " tali che i loro valori ed il valore delle loro d erivate in 0 fino all'ordine " }{XPPEDIT 18 0 "k;" "6#%\"kG" }{TEXT -1 0 "" }{TEXT 294 38 " coincidano con quelle della funzione " } {XPPEDIT 18 0 "sin;" "6#%$sinG" }{TEXT 294 78 " e che siano di grado m inore possibile. Disegnare quindi tutti i polinomi per " }{XPPEDIT 18 0 "k = 0 .. 41;" "6#/%\"kG;\"\"!\"#T" }{TEXT 294 15 " e la funzione " }{XPPEDIT 18 0 "sin;" "6#%$sinG" }{TEXT -1 1 " " }{TEXT 294 16 "nell'i ntervallo " }{XPPEDIT 18 0 "[0, 4*Pi];" "6#7$\"\"!*&\"\"%\"\"\"%#PiGF' " }{TEXT -1 1 "." }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 84 "for k from 0 to 41 do \nP[k] := sin(0) + sum( (D@@i)(sin)(0)/i! * x ^i, i=1..k) :\nod:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "P[34];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "plot([sin(x),P[0],P[1],,x=0..4*Pi,y=-2..2,);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "seq(P[i],i=0..4);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 102 "plot ([sin(x),seq(P[i],i=0. .41)], x=0..4*Pi,y=-2..2,scaling=CONSTRAINED,color=[red,blue],thicknes s=3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 149 "colori:=[red,seq( COLOR(HUE,.9*i/20),i=0..20)]:\nplot ([sin(x),seq(P[2*i+1],i=0..20)], x =0..4*Pi,y=-2..2,scaling=CONSTRAINED,color=colori,thickness=3);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 213 "g:= [\nplot(sin(x),x=0..6*P i,y=-2..2,scaling=CONSTRAINED,color=red),\nseq(\nplot([ sin(x), P[2*i+ 1] ], x=0..6*Pi, y=-2..2, scaling=CONSTRAINED, color=[red,blue], thick ness=3,resolution=1000,numpoints=300)\n,i=0..20)]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 69 "plots[display](g,insequence=true,scaling=UN CONSTRAINED, thickness=3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 294 10 "Problema 3" }}{PARA 0 "" 0 "" {TEXT 294 21 "Tr ovare un polinomio " }{XPPEDIT 18 0 "P(x) = sum(a[i]*x^i,i = 0 .. k); " "6#/-%\"PG6#%\"xG-%$sumG6$*&&%\"aG6#%\"iG\"\"\")F'F/F0/F/;\"\"!%\"kG " }{TEXT -1 2 ",\000" }{TEXT 294 59 " tale che il suo valore ed il val ore delle sue derivate in " }{XPPEDIT 18 0 "5;" "6#\"\"&" }{TEXT 294 17 " fino all'ordine " }{XPPEDIT 18 0 "13;" "6#\"#8" }{TEXT 294 38 " c oincidano con quelle della funzione " }{XPPEDIT 18 0 "sin;" "6#%$sinG " }{TEXT 294 46 ". Disegnare quindi il polinomio e la funzione " } {XPPEDIT 18 0 "sin;" "6#%$sinG" }{TEXT 294 47 " in un intervallo che n e evidenzi le differenze" }{TEXT -1 1 "." }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "a:= 'a':" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 72 "i:='i':k:='k':\nx0: =5:\nP := x -> a[0] + sum ( a[i]* (x - x0) ^ i,i=1..k);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 78 "k:=13:\na[0] := sin(x0);\nfor j fro m 1 to k do\na[j] := (D@@j)(sin)(x0) / j!:\nod:" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 114 "test := P(x0)=sin(x0):\nfor j from 1 to 13 do \ntest := test and (D@@j)(sin)(x0)=subs( x=x0 , diff(P(x),x$j) ):\no d:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "test;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "plot ([sin,P],-2..13,-2..2,scaling= CONSTRAINED);" }}}{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 3 "" 0 "" {TEXT 294 10 "Problema 4" }{TEXT 295 0 "" }}{PARA 0 "" 0 "" {TEXT 294 22 "Definire una funzi one " }{XPPEDIT 18 0 "T;" "6#%\"TG" }{TEXT 294 34 " che prende in inpu t una funzione " }{XPPEDIT 18 0 "f;" "6#%\"fG" }{TEXT -1 0 "" }{TEXT 294 18 ", un numero reale " }{XPPEDIT 18 0 "x[0];" "6#&%\"xG6#\"\"!" } {TEXT -1 0 "" }{TEXT 294 12 ", un intero " }{XPPEDIT 18 0 "k;" "6#%\"k G" }{TEXT -1 0 "" }{TEXT 294 124 ", e che ha come output il polinomio \+ di grado pi\371 basso tra quelli il cui valore e quello delle sue deri vate fino all'ordine " }{XPPEDIT 18 0 "k;" "6#%\"kG" }{TEXT -1 0 "" } {TEXT 294 11 " nel punto " }{XPPEDIT 18 0 "x[0];" "6#&%\"xG6#\"\"!" } {TEXT -1 0 "" }{TEXT 294 38 " coincidono con quelli della funzione " } {XPPEDIT 18 0 "f;" "6#%\"fG" }{TEXT 294 1 "." }}{SECT 1 {PARA 4 "" 0 " " {TEXT 294 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 75 " T := ( f , x0 , k ) -> x -> f(x0) + sum ((D@@i)(f)(x0)*(x-x0)^i/i!,i=1 ..k);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 150 "f := sin:\nx0 := \+ 3:\nk := 8:\ntest := T(f,x0,k)(x0) = f(x0):\nfor j from 1 to k do\ntes t := test and subs(x=x0,diff(T(f,x0,k)(x),x$j)) = (D@@j)(f)(x0):\nod: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "test;" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 294 10 "Problema 5" }}{PARA 0 "" 0 "" {TEXT 294 53 "Trovare un polinomio l e cui derivate fino all'ordine " }{XPPEDIT 18 0 "7;" "6#\"\"(" }{TEXT 294 11 " nel punto " }{XPPEDIT 18 0 "x[0] = 0;" "6#/&%\"xG6#\"\"!F'" } {TEXT 294 58 " coincidano con le corrispondenti derivate della funzion e " }{XPPEDIT 18 0 "proc (x) options operator, arrow; sin(x) end proc; " "6#R6#%\"xG7\"6$%)operatorG%&arrowG6\"-%$sinG6#F%F*F*F*" }{TEXT 294 36 " e le cui derivate fino all'ordine " }{XPPEDIT 18 0 "5;" "6#\"\"& " }{TEXT 294 11 " nel punto " }{XPPEDIT 18 0 "x[1] = 1;" "6#/&%\"xG6# \"\"\"F'" }{TEXT 294 58 " coincidano con le corrispondenti derivate de lla funzione " }{XPPEDIT 18 0 "proc (x) options operator, arrow; exp(x ) end proc;" "6#R6#%\"xG7\"6$%)operatorG%&arrowG6\"-%$expG6#F%F*F*F*" }{TEXT -1 1 "." }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }} {PARA 0 "" 0 "" {TEXT -1 57 "Togliamo i valori eventualmente assegnati alle variabili " }{TEXT 0 1 "a" }{TEXT -1 2 ", " }{TEXT 0 1 "x" } {TEXT -1 3 " e " }{TEXT 0 1 "b" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "a := 'a':\nb := 'b':\nx := 'x':" }}}{PARA 0 "" 0 "" {TEXT -1 43 "Definiamo un polinomio generico di grado 11" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "P := add(a[i]*x^i,i=0..11);" }}}{PARA 0 "" 0 "" {TEXT -1 67 "Imponiamo le condizioni affinch\351 siano verificate le c ondizioni in " }{XPPEDIT 18 0 "x[0];" "6#&%\"xG6#\"\"!" }{TEXT -1 0 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "for i from 0 to 7 do\na[ i]:= (D@@i)(sin)(0)/(i)!:\nod:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "P;" }}}{PARA 0 "" 0 "" {TEXT -1 26 "Calcoliamo i coefficienti \+ " }{XPPEDIT 18 0 "b[i];" "6#&%\"bG6#%\"iG" }{TEXT -1 10 " tali che " } {XPPEDIT 18 0 "P(x) = sum(b[i]*(x-x[1])^i,i);" "6#/-%\"PG6#%\"xG-%$sum G6$*&&%\"bG6#%\"iG\"\"\"),&F'F0&F'6#F0!\"\"F/F0F/" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "x[1]:=1:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 143 "Q[0]:=subs( x= y+x[1] , P ):\nb[0]:=subs(y=0 , Q[0]) :\nfor i from 1 to 11 do\nQ[i] := simplify((Q[i-1] - b[i-1])/y):\nb[i] := subs (y=0, Q[i]):\nod:" }}}{PARA 0 "" 0 "" {TEXT -1 28 "Imponiamo \+ le condizioni sui " }{XPPEDIT 18 0 "b[i];" "6#&%\"bG6#%\"iG" }{TEXT -1 13 " e risolviamo" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 66 "b := solve (\{seq(b[i]=exp(1)/i!,i=0..3)\},\{a[8],a[9],a[10],a[11]\});" }} }{PARA 0 "" 0 "" {TEXT -1 32 "Sostituiamo nell'espressione di " } {XPPEDIT 18 0 "P;" "6#%\"PG" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "P := subs(b[],P);" }}}{PARA 0 "" 0 "" {TEXT -1 23 "Definiamo una f unzione " }{XPPEDIT 18 0 "p;" "6#%\"pG" }{TEXT -1 28 " a partire dall' espressione " }{XPPEDIT 18 0 "P;" "6#%\"PG" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 18 "p := unapply(P,x);" }}}{PARA 0 "" 0 "" {TEXT -1 74 "Testiamo che effettivamente tutte le condizioni richieste sono soddis fatte" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 163 "test := true:\nfor i from 0 to 3 do\ntest := test and (D@@i)(p)(1) = (D@@i)(exp)(1)\nod: \nfor i from 0 to 7 do\ntest := test and (D@@i)(p)(0) = (D@@i)(sin)(0) \nod:\ntest;" }}}{PARA 0 "" 0 "" {TEXT -1 36 "Disegniamo il grafico de lle funzioni" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 65 "plot([sin,ex p,p],-.5..1.22,color=[red,blue,magenta],thickness=3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 12 "Osservazione" }}{PARA 0 "" 0 "" {TEXT -1 213 "Il metodo usato \+ non \350 assolutamente ottimale, anzi \350 molto costoso dal punto di \+ vista computazionale. Esistono metodi molto pi\371 raffiniti che sono \+ una generalizzazione del metodo delle differenze divise di Newton." }} }}{SECT 1 {PARA 3 "" 0 "" {TEXT 294 10 "Problema 6" }}{PARA 0 "" 0 "" {TEXT 294 39 "Determinare un polinomio che nei punti " }{XPPEDIT 18 0 "0,1,2,3,4,5,6;" "6)\"\"!\"\"\"\"\"#\"\"$\"\"%\"\"&\"\"'" }{TEXT 294 33 " assuma rispettivamente i valori " }{XPPEDIT 18 0 "1,1/2,3/4,5,-2, 1,-6;" "6)\"\"\"*&F#F#\"\"#!\"\"*&\"\"$F#\"\"%F&\"\"&,$F%F&F#,$\"\"'F& " }{TEXT 294 1 "." }}{PARA 0 "" 0 "" {TEXT 294 82 "In generale di che \+ grado si deve cercare un polinomio per essere sicuri che abbia " } {XPPEDIT 18 0 "k;" "6#%\"kG" }{TEXT 294 69 " valori assegnati?\nCosa d eve succedere perch\351 la soluzione sia unica?" }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "with(linalg):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "x := [ 0,1,2,3,4,5,6] ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "y := ve ctor( [1,1/2,3/4,5,-2,1,-6] );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "M := vandermonde(x);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "a := linsolve (M, y );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "P := z -> sum (a[i]*z^(i-1), i = 1..7);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "interp(x,y,z);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "plot([P,spezzata],0..6,color=[red,blue],thickness=3); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 469 "spezzata := t ->\nif \+ x[1] <= t and t < x[2] then y[1]+(t-x[1])*(y[2]-y[1])/(x[2]-x[1]) \+ \nelif x[2] <= t and t < x[3] then y[2]+(t-x[2])*(y[3]-y[2])/(x[3]-x [2])\nelif x[3] <= t and t < x[4] then y[3]+(t-x[3])*(y[4]-y[3])/(x[ 4]-x[3]) \nelif x[4] <= t and t <= x[5] then y[4]+(t-x[4])*(y[5]-y[4] )/(x[5]-x[4]) \nelif x[5] <= t and t <= x[6] then y[5]+(t-x[5])*(y[6] -y[5])/(x[6]-x[5]) \nelif x[6] <= t and t <= x[7] then y[6]+(t-x[6])* (y[7]-y[6])/(x[7]-x[6])\nelse 0\nfi;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 426 "spezzata := t -> piecewise (\nx[1] <= t and t < x[2 ] , y[1]+(t-x[1])*(y[2]-y[1])/(x[2]-x[1]) ,\nx[2] <= t and t < x[3] , y[2]+(t-x[2])*(y[3]-y[2])/(x[3]-x[2]) ,\nx[3] <= t and t < x[4] , y[ 3]+(t-x[3])*(y[4]-y[3])/(x[4]-x[3]) ,\nx[4] <= t and t <= x[5] , y[4]+ (t-x[4])*(y[5]-y[4])/(x[5]-x[4]) ,\nx[5] <= t and t <= x[6] , y[4]+(t- x[5])*(y[6]-y[5])/(x[6]-x[5]) ,\nx[6] <= t and t <= x[7] , y[4]+(t-x[6 ])*(y[7]-y[6])/(x[7]-x[6]) \n);" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 12 "Osservazion e" }}{PARA 0 "" 0 "" {TEXT -1 195 "Dal punto di vista computazionale, \+ La soluzione proposta \350 forse la pi\371 inefficienti, il metodo usa to, \350 per\362 facilmente generalizzabile, per provare che esiste un o ed un solo polinomio di grado " }{XPPEDIT 18 0 "k;" "6#%\"kG" } {TEXT -1 32 " che assume valori assegnati in " }{XPPEDIT 18 0 "k+1;" " 6#,&%\"kG\"\"\"F%F%" }{TEXT -1 17 " punti distinti. " }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 294 10 "Problema 7" }}{PARA 0 "" 0 "" {TEXT 294 109 "Determinare e rappresentare graficamente la retta che meglio appr ossima i seguenti dati \"sperimentali\", dove " }{TEXT 0 6 "dati_x" } {TEXT 294 61 " contiene le ascisse (ordinate in modo crescente da 0 a \+ 2) e " }{TEXT 0 6 "dati_y" }{TEXT 294 36 " contiene le corrispondenti \+ ordinate" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 126 "dati_x := [seq( i/100,i=0..200)]:\nerrore:=stats[random,normald[0,.05]](201):\ndati_y \+ := [seq(dati_x[i]/3 + errore[i],i=1..201)]:" }}}{PARA 0 "" 0 "" {TEXT -1 36 "Rappresentati nella seguente tabella" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 30 "linalg[concat](dati_x,dati_y);" }}}{PARA 0 "" 0 "" {TEXT -1 22 "o nel seguente grafico" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 144 "dati := [ seq([dati_x[i],dati_y[i]],i=1..201) ]:\ng \+ := plots[pointplot](dati,connect=false,scaling=CONSTRAINED,symbolsize= 18):\nplots[display](g);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }}{PARA 0 "" 0 " " {TEXT -1 23 "Carichiamo i pacchetti " }{TEXT 0 6 "linalg" }{TEXT -1 3 " e " }{TEXT 0 5 "plots" }{TEXT -1 22 ", che ci saranno utili" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "with(linalg):\nwith(plots): " }}}{PARA 0 "" 0 "" {TEXT -1 15 "indichiamo con " }{TEXT 0 8 "num_dat i" }{TEXT 18 18 " il numero di dati" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "num_dati := nops(dati_x);" }}}{PARA 0 "" 0 "" {TEXT -1 15 "Indichiamo con " }{XPPEDIT 18 0 "R[1];" "6#&%\"RG6#\"\"\"" } {TEXT -1 61 "lo spazio dei polinomi di grado al massimo 1 e denotiamo \+ con " }{XPPEDIT 18 0 "S[1];" "6#&%\"SG6#\"\"\"" }{TEXT -1 15 " l'iimag ine di " }{XPPEDIT 18 0 "R[1];" "6#&%\"RG6#\"\"\"" }{TEXT -1 35 " tram ite l'applicazione iniettiva " }{XPPEDIT 18 0 "phi := proc (R[1]) opt ions operator, arrow; R^num_dati end proc;" "6#%#%?G" }{TEXT -1 41 " d efinita dalla valutazione sui punti di " }{XPPEDIT 18 0 "dati_x;" "6#% 'dati_xG" }{TEXT -1 9 ", ovvero " }{XPPEDIT 18 0 "S[1] = phi(R[1]);" " 6#/&%\"SG6#\"\"\"-%$phiG6#&%\"RG6#F'" }{TEXT -1 1 "." }}{PARA 0 "" 0 " " {TEXT -1 22 "Calcoliamoci una base " }{XPPEDIT 18 0 "V;" "6#%\"VG" } {TEXT -1 4 " di " }{XPPEDIT 18 0 "S[1];" "6#&%\"SG6#\"\"\"" }{TEXT -1 46 " prendendo le immagini della base standard di " }{XPPEDIT 18 0 "R[ 1];" "6#&%\"RG6#\"\"\"" }{TEXT -1 10 " (data da " }{XPPEDIT 18 0 "\{1, x\};" "6#<$\"\"\"%\"xG" }{TEXT -1 34 ") e facendone le immagini trami te " }{XPPEDIT 18 0 "phi;" "6#%$phiG" }{TEXT -1 9 " (ovvero " } {XPPEDIT 18 0 "V = \{phi(1), phi(x)\};" "6#/%\"VG<$-%$phiG6#\"\"\"-F'6 #%\"xG" }{TEXT -1 2 ")." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "V := [vector(num_dati,1), vector(dati_x) ]:" }}}{PARA 0 "" 0 "" {TEXT -1 74 "Potevamo farlo anche in questo modo (che si presta a essere gen eralizzato)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "V1 := [ seq(v ector([seq(dati_x[j]^i,j=1..num_dati)]),i=0..1) ]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "equal(V1[1],V[1]) and equal(V1[2],V[2]);" } }}{PARA 0 "" 0 "" {TEXT -1 26 "Ortonormalizziamo la base " }{XPPEDIT 18 0 "V;" "6#%\"VG" }{TEXT -1 32 " ottenendo una base ortonormale " } {XPPEDIT 18 0 "W;" "6#%\"WG" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "W := GramSchmidt(V,normalized):" }}}{PARA 0 "" 0 "" {TEXT -1 25 "C alcoliamo le coordinate " }{XPPEDIT 18 0 "w;" "6#%\"wG" }{TEXT -1 20 " rispetto alla base " }{XPPEDIT 18 0 "W;" "6#%\"WG" }{TEXT -1 21 " del la proiezione di " }{XPPEDIT 18 0 "dati_y;" "6#%'dati_yG" }{TEXT -1 4 " su " }{XPPEDIT 18 0 "S[1];" "6#&%\"SG6#\"\"\"" }{TEXT -1 2 " (" } {XPPEDIT 18 0 "w[i] = dati_y*W[i];" "6#/&%\"wG6#%\"iG*&%'dati_yG\"\"\" &%\"WG6#F'F*" }{TEXT -1 1 ")" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "w := vector([seq(dotprod(dati_y,W[i]),i=1..2)]):" }}}{PARA 0 "" 0 "" {TEXT -1 17 "e la distanza di " }{XPPEDIT 18 0 "dati_y;" "6#%'dati_ yG" }{TEXT -1 22 " dalla sua proiezione " }{XPPEDIT 18 0 "sigma = sqrt ((dati_y-u)*(dati_y-u));" "6#/%&sigmaG-%%sqrtG6#*&,&%'dati_yG\"\"\"%\" uG!\"\"F+,&F*F+F,F-F+" }{TEXT -1 9 " essendo " }{XPPEDIT 18 0 "u = sum (w[i]*W[i],i);" "6#/%\"uG-%$sumG6$*&&%\"wG6#%\"iG\"\"\"&%\"WG6#F,F-F, " }{TEXT -1 18 " la proiezione di " }{XPPEDIT 18 0 "dati_y;" "6#%'dati _yG" }{TEXT -1 4 " su " }{XPPEDIT 18 0 "S[1];" "6#&%\"SG6#\"\"\"" } {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 46 "sigma := nor m(dati_y-add(w[i]*W[i],i=1..2),2):" }}}{PARA 0 "" 0 "" {TEXT -1 56 "Ca lcoliamo la matrice di cambiamento di base dalla base " }{XPPEDIT 18 0 "V;" "6#%\"VG" }{TEXT -1 11 " alla base " }{XPPEDIT 18 0 "W;" "6#%\" WG" }{TEXT -1 2 " (" }{XPPEDIT 18 0 "Mvw[i,j] = V[j]*W[i];" "6#/&%$Mvw G6$%\"iG%\"jG*&&%\"VG6#F(\"\"\"&%\"WG6#F'F-" }{TEXT -1 1 ")" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "Mvw := matrix(2,2,(i,j) -> dotprod( V[j],W[i])):" }}}{PARA 0 "" 0 "" {TEXT -1 54 "e quindi la matrice di c ambiamento di base dalla base " }{XPPEDIT 18 0 "W;" "6#%\"WG" }{TEXT -1 11 " alla base " }{XPPEDIT 18 0 "V;" "6#%\"VG" }{TEXT -1 2 " (" } {XPPEDIT 18 0 "Mwv = Mvw^(-1);" "6#/%$MwvG)%$MvwG,$\"\"\"!\"\"" } {TEXT -1 1 ")" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "Mwv := inve rse(Mvw):" }}}{PARA 0 "" 0 "" {TEXT -1 50 "Le coordinate della proiezi one rispetto alla base " }{XPPEDIT 18 0 "V;" "6#%\"VG" }{TEXT -1 21 " \+ sono allora date da " }{XPPEDIT 18 0 "v = Mwv*w;" "6#/%\"vG*&%$MwvG\" \"\"%\"wGF'" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "v := evalm(Mw v &* w):" }}}{PARA 0 "" 0 "" {TEXT -1 32 "Pertanto il polinomio cercat o \350 " }{XPPEDIT 18 0 "P(x) = sum(v[i]*x^(i-1),i);" "6#/-%\"PG6#%\"x G-%$sumG6$*&&%\"vG6#%\"iG\"\"\")F',&F/F0F0!\"\"F0F/" }{TEXT -1 18 ", n el nostro caso " }{XPPEDIT 18 0 "P(x) = v[1]+v[2]*x;" "6#/-%\"PG6#%\"x G,&&%\"vG6#\"\"\"F,*&&F*6#\"\"#F,F'F,F," }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "P := x -> v[1]+v[2]*x:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "P := x -> v[1]+add(v[i]*x^(i-1),i=2..d+1):" }}}{PARA 0 "" 0 "" {TEXT -1 113 "Disegnamo la retta e i dati e mostriamo l'equa zione della retta e lo scarto quadratico medio dei dati dalla retta" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "approx := plot((P(t)),t=0.. 2):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 82 "display([g,approx],s caling=UNCONSTRAINED,thickness=2);\n'P(t)'=P(t);\n'sigma'=sigma;" }}}} }{SECT 1 {PARA 3 "" 0 "" {TEXT 294 10 "Problema 8" }}{PARA 0 "" 0 "" {TEXT -1 29 "Definire usando l'istruzione " }{HYPERLNK 17 "proc" 2 "pr oc" "" }{TEXT -1 224 ", una funzione che prende in input due liste di \+ numeri, dati_x e dati_y (con lo stesso numero di elementi) un numero n aturale d e che d\340 in output il polinomio di grado d che meglio app rossima i dati costituiti dalle coppie " }{XPPEDIT 18 0 "[dati_x[i], d ati_y[i]];" "6#7$&%'dati_xG6#%\"iG&%'dati_yG6#F'" }{TEXT -1 60 "., e n e disegna il grafico (sia dei dati che del polinomio)." }}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 9 "Soluzione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "fitpolinomiale := proc (dati_x,dati_y,d)\n" }{TEXT -1 26 "definiamo variabili locali" }{MPLTEXT 1 0 112 "\nlocal dati , g , num_dati , x_min , x_max , dominio , V , W , v , w , Mvw , Mwv , i \+ , approx , P , t , sigma ;\n" }{TEXT -1 42 "carichiamo il pacchetto di algebra lineare" }{MPLTEXT 1 0 15 "\nwith(linalg):\n" }{TEXT -1 65 "l a variabile num_dati contiene il numero di dati da approssimare " } {MPLTEXT 1 0 27 "\nnum_dati := nops(dati_x):\n" }{TEXT -1 94 "x_min e \+ x_max contengono rispettivamente il minimo e il massimo dei valori con tenuti in dati_x" }{MPLTEXT 1 0 53 "\nx_min := min(op(dati_x)):\nx_max := max(op(dati_x)):\n" }{TEXT -1 92 "dominio contiene il range che co stituir\340 l'insieme di definizione su cui plottare il grafico" } {MPLTEXT 1 0 24 "\ndominio:=x_min..x_max:\n" }{TEXT -1 43 "dati \350 l a lista dei punti da approssimare (" }{XPPEDIT 18 0 "dati_x[i],dati_y[ i];" "6$&%'dati_xG6#%\"iG&%'dati_yG6#F&" }{TEXT -1 1 ")" }{MPLTEXT 1 0 55 "\ndati := [ seq([dati_x[i],dati_y[i]],i=1..num_dati) ]:\n" } {TEXT -1 25 " g \350 il grafico dei punti" }{MPLTEXT 1 0 58 "\ng := pl ots[pointplot](dati,symbol=circle,symbolsize=18):\n" }{XPPEDIT 18 0 "V ;" "6#%\"VG" }{TEXT -1 16 " \350 la lista dei " }{XPPEDIT 18 0 "d+1;" "6#,&%\"dG\"\"\"F%F%" }{TEXT -1 58 " vettori della base standard dei p olinomi di grado al pi\371 " }{XPPEDIT 18 0 "d;" "6#%\"dG" }{TEXT -1 12 " immersi in " }{XPPEDIT 18 0 "R^num_dati;" "6#)%\"RG%)num_datiG" } {TEXT -1 1 " " }{MPLTEXT 1 0 64 "\nV := [ seq(vector([seq(dati_x[j]^i, j=1..num_dati)]),i=0..d) ]:\n" }{XPPEDIT 18 0 "W;" "6#%\"WG" }{TEXT -1 32 " \350 la base ortonormalizzata di V" }{MPLTEXT 1 0 31 "\nW:=Gra mSchmidt(V,normalized):\n" }{XPPEDIT 18 0 "Mvw;" "6#%$MvwG" }{TEXT -1 40 " \350 la matrice di cambiamento di base da " }{XPPEDIT 18 0 "V;" " 6#%\"VG" }{TEXT -1 3 " a " }{XPPEDIT 18 0 "W;" "6#%\"WG" }{MPLTEXT 1 0 53 "\nMvw := matrix(d+1,d+1,(i,j) -> dotprod(V[j],W[i])):\n" } {XPPEDIT 18 0 "Mwv;" "6#%$MwvG" }{TEXT -1 40 " \350 la matrice di camb iamento di base da " }{XPPEDIT 18 0 "W;" "6#%\"WG" }{TEXT -1 3 " a " } {XPPEDIT 18 0 "V;" "6#%\"VG" }{TEXT -1 1 "\n" }{MPLTEXT 1 0 21 "Mwv := inverse(Mvw):\n" }{XPPEDIT 18 0 "w;" "6#%\"wG" }{TEXT -1 50 " \350 il vettore delle coordinate rispetto alla base " }{XPPEDIT 18 0 "W;" "6# %\"WG" }{TEXT -1 21 " della proiezione di " }{XPPEDIT 18 0 "dati_y;" " 6#%'dati_yG" }{TEXT -1 31 " sull\340immagine dei polinomi in " } {XPPEDIT 18 0 "R^num_dati;" "6#)%\"RG%)num_datiG" }{MPLTEXT 1 0 52 "\n w := vector([seq(dotprod(dati_y,W[i]),i=1..d+1)]):\n" }{XPPEDIT 18 0 " sigma;" "6#%&sigmaG" }{TEXT -1 19 " \350 la distanza tra " }{XPPEDIT 18 0 "dati_y;" "6#%'dati_yG" }{TEXT -1 69 " e la sua proiezione (scart o quadratico medio dei dati dal polinomio)" }{MPLTEXT 1 0 50 "\nsigma \+ := norm(dati_y-add(w[i]*W[i],i=1..d+1),2):\n" }{TEXT -1 0 "" } {XPPEDIT 18 0 "v;" "6#%\"vG" }{TEXT -1 51 " \350 il vettore delle coor dinate della proiezione di " }{XPPEDIT 18 0 "dati_y;" "6#%'dati_yG" } {TEXT -1 20 " rispetto alla base " }{XPPEDIT 18 0 "V;" "6#%\"VG" } {MPLTEXT 1 0 23 "\nv := evalm(Mwv &* w):\n" }{XPPEDIT 18 0 "P;" "6#%\" PG" }{TEXT -1 35 " \350 la funzione polinomiale cercata" }{MPLTEXT 1 0 44 "\nP := x -> v[1]+add(v[i]*x^(i-1),i=2..d+1);\n" }{TEXT -1 36 "ma ndiamo in output l'espressione di " }{XPPEDIT 18 0 "P(t);" "6#-%\"PG6# %\"tG" }{TEXT -1 17 " ed il valore di " }{XPPEDIT 18 0 "sigma;" "6#%&s igmaG" }{MPLTEXT 1 0 42 "\nprint('P(t)'=P(t)):print('sigma'=sigma):\n " }{XPPEDIT 18 0 "approx;" "6#%'approxG" }{TEXT -1 17 " \350 il grafic o di " }{XPPEDIT 18 0 "P;" "6#%\"PG" }{MPLTEXT 1 0 35 "\napprox := plo t((P(t)),t=dominio):\n" }{TEXT -1 38 "mandiamo in output contemporanea mente " }{XPPEDIT 18 0 "g;" "6#%\"gG" }{TEXT -1 3 " e " }{XPPEDIT 18 0 "approx;" "6#%'approxG" }{MPLTEXT 1 0 41 "\nplots[display]([g,approx ],thickness=2);\n" }{TEXT -1 23 "end chiude la procedura" }{MPLTEXT 1 0 5 "\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "fitpolinomia le([1,2,3,4,-2, -7],[3,-1,2,1,2,3],2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 294 12 "Osservazio ne" }}{PARA 0 "" 0 "" {TEXT -1 13 "Il pacchetto " }{HYPERLNK 17 "stats " 2 "stats" "" }{TEXT -1 33 " fornisce una funzione che fa il " } {HYPERLNK 17 "fit polinomiale dei minimi quadrati" 2 "fit,leastsqu" " " }{TEXT -1 127 " di un insieme di dati statistici (a anche altro). Ve rifichiamo che i nostri risultati coincidono con quelli di questa funz ione" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "with(stats):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "fit[leastsquare[[x,y]]]([[1, 2,3,4,-2, -7],[3,-1,2,1,2,3]]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 111 "a:='a':\nb:= 'b':\nc := 'c':\nfit[leastsquare[[x,y],y = add(a [i]*x^i,i=0..5)]]([[1,2,3,4,-2, -7],[3,-1,2,1,2,3]]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "fitpolinomiale([1,2,3,4,-2, -7],[3, -1,2,1,2,3],5);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}} {MARK "4 0" 14 }{VIEWOPTS 1 0 0 3 2 1804 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }