home

                         Capitulu primu:
                          Aprimuaprimu


Una die Lelle est calau a Soddie e semus essios paris; a sas noe m'hada acumpanzau a domo e m'hat nau chi nos t'hiamus a torrare a bier s'in crasa. S'in crasa issu no est bennidu a mi cche leare a Soddie. Jeo dd'hapo ispetau, passada sa die no est bennidu pius. Issu no m'hada pius cunsiderau, e s'est postu cun d'un'atera pitzoca, fintzas fea, chi fudi un'amiga mia. Flore S.

Mathematica est unu sistema mannu meda e po su cantu cumbenit cumplessu bastante. Issu cuntenet chentinaias de funtziones po cumprire a compitos varios in issienzias particulares chi imprean su limbazu matematicu po esprimer formulas e cunzetos. Mathematica tenet unu limbazu suu cun regulas sintaticas e semanticas definidas bene. In custu capitulu de incomintzu nois cherimus dare tzertunas informatziones de base chi sos chi si serbin de Mathematica disitzan a connoscher: est a narrer de comente ponner in motu ,e cando serbit, a frimare su programma, comente carrigare inputos fatziles e ddos faer valutare e ottenner arrespostas a sas preguntas nostras. In atzunta hamus a dare atzinnos de sa istruttura interna de custu sistema in ordine a cumintzare a cumprender ite est chi est custu libru, prima de totu a riguardu de su limbazu de programmazione Mathematica.


                                        1.1

Po cumintzare.Mathematica est istadu de tantos autores pintadu comente unu calculadore sofisticu meda, cun su cales podes ponner formulas complicadas e ottenner sos valores issoro e su chi contat de prusu sas arrespostas zustas:

(3 (2+5)^4)/2

7203

----
2

Podes imagasinare valores in memoria:


capitale:=100000;
interessu:=0.05;
tempus:=3 (*annos*);
capitale*tempus*interessu (*s'interessu de tres annos*)

15000.


Podes fattorizare polinomios, cricare arraighinas de sas ecuatziones, calculare su valore de sos integrales definidos e sas primitivas de cussos indefinidos, disinnare su graficu de una funtzione e meda e meda de prus ancora.


Factor[x^3-1]
                            2
(-1 + x ) (1 + x + x  )

Integrate[x^2+2 x-1,{x,0,3}]
15
N[Solve[x^2-3 x-1==0,x]]
{{x -> -0.302776}, {x -> 3.30278}}
Expand[%%%]
         3
-1 + x


Su calculu de innantis tenet contivizu chi Mathematica hat unu dechidu sistema de comunicatzione intra s' utente e su fozu de computu, cun su cales unu si podet cun discanzu riferire a sos risultados de sos calculos giai fattos, impreande su simbolu %, una duas tres o tantas bortas cantas cumbenit. Sa matessi cosa podet esser fatta usande sa funtzione Out[i], inue i est una etichetta, o in modu chi currispondet a sa matessi faina %i: po esempiu:


Out[6]
19683


Sa funtzione chi sighit impreat solu operatziones cun sas listas. Prus a inantis hamus a bier de ite si tratat e comente si triballat impreande a issas.



moltiplica[h_List,k_List]:=
Module[
  {risultadu=Reverse[
                   Transpose[
                               Sort[
                                   Transpose[
                                          Reverse[
                                                {h[[1]]

                                                Transpose[
                                                      Sort[
                                             Transpose[k]]][[2]]}]]]]]},risultadu];
r0:={{0,1,2},{0,1,2}};
r1:={{1,2,0},{0,1,2}};
r2:={{2,0,1},{0,1,2}};
s0:={{0,2,1},{0,1,2}};
s1:={{2,1,0},{0,1,2}};
s2:={{1,0,2},{0,1,2}};


moltiplica[r2,r1]


{{0, 1, 2}, {0, 1, 2}}
{{0, 1, 2}, {0, 1, 2}}



Chie lezet custas notas hat a tenner a dispositzione una copia de su manuale de Stephen Wolfran inue agatat elencadas sas milliaias de funtziones e operatziones chi podet faer cun Mathematica: dd'hat a parrer de poder computare totu su chi ddi paret e a gustu suu. Ma custa impressione est unu irballiu. Si esserat pesadu interessu a ischire cal'est su tale numeru,ponimus de Fibonacci, o de Perrin, Mathematica non tenet una funtzione pre-parada po faer custu. Ma su chi Mathematica depet tenner, e ddu tenet, est sa capatzidade po sos clientes de poder definire sas funtziones issoro. Custu fattu si narat programmazione, su chi programmat est unu programmadore, e funi custas cosas chi custu libru cheret amustrare a sa persona istudiosa. Po si pesare un'idea in mente de su chi podet esser fattu, su de prima fudi unu programma chi calculaiat su produttu in tra sos elementos de unu gruppu de sos movimentos ritzidos in su pranu, simetrias e rotatziones arrapresentadas sutta a forma de pemutatziones de sos elememtos de un'imparis finidu.


                                     1.2

Una die so' falada a Borene, e so' intrada a unu tzilleri, inue hapo connotu unu pitzocu chi est s'isposu de una amiga mia. Si giamat Marcu e semus diventados amigos. Semus ancora in comunicatzione. D'onzi in tantu nos telefonamus; issu faghet su mastru 'e muru. Li cherzo unu bene mannu. Marruncheddu E.


Su chi c'hat in custu libru. Jeo b'os t'hio cherrer contare de ite non ch'hat in custu libru, est a narrer un'irbolighinzu cumpletu de sas chentinaias o milliaias de operatziones pre-paradas in Mathematica. Po una lista de custu zenere est netzessariu su Manuale de Istevene Wolfran. Custu libru, chircat mancari de bos imparare de comente programmare. Assumo chi boisateros no happedas mai programmadu unu computer, e chi mai siades istados utentes de Mathematica, e jeo cherzo a passu passu e a traessu de sas tecnicas varias de programmatzione a bos imparare a impitare Mathematica po risolvere sos contos bostros.
Sa istruttura de sos capitulos de custu libru est descritta in sas notas chi sighin.
Capitulu primu: aprimuaprimu. Custu capitulu cuntenet meda de sos fundamentos teoricos de Mathematica, su limbazu de programmazione chi semus leande in cunsideru. Po fundamentu intendimus sas cosas nezessarias de prus a chie incumintzat a impreare su programma: hiamus a narrer de comente impreare su fozu de calculu de Mathematica e comente inputare espressiones. Sos utentes espertos poden esser liberos de che brincare pari pari custu materiale.
Capitulu segundu: una oghiada a su programma. Po su lettore chi non tenet connoschentzias mannas de Mathematica hamus aparitzadu unu capitulu chi amustret sas possibilidades, fintzas graficas,pre-paradas in su limbazu. Comente po su capitulu primu, custu puru podet esser sartiadu chena dannu dae sos lettores clientes de Mathematica.
Capitulu tertzu: listas. Su coritzone de totu su libru. Incumintzamus cun d'una discussione de custos importantes meda tipu de datos. A parte sos numeros, nessunu ateru tipu de datos est prus impreadu in sa programmatzione. Po esempiu, su programma chi hamus bistu chi chistionat de su produttu operatoriu cunsistit s'in prus in computos de listas. Hamus a descrier cantu utiles funi sas funtziones pre-paradas po amanipulare sas listas.
Capitulu cuartu: funtziones. In custu capitulu sighimus a discutere de listas e ch'intramus a pare sas cramadas de cuddas funtziones nadas de ordine superiore: in inglesu nested functions. Cumbinande funtziones pre-paradas chi presentamus in custu capitulu cun cussas de su capitulu de innantis, hamus a esser in gradu de isorber medas problemas de programmatzione.
Capitulu cuintu: valutatzione. A prima de ch'intrare meda a fundu in contos de programmatzione bos faimus agatare su chi disitzais de haer craru bene, de comente Mathematica acabat sos contos bostros. Custu nos permitit de cumintzare a chistionare de tecnicas programmatorias basadas susu regulas.E a pustis sighimus a faeddare de sos cunditzionales e de su limbazu istructuradu. Su donu prus mannu de unu calculadore est s'abilidade sua de leare detzisiones, de faere atziones diferentes e dipendentes sa prus bortas de sas calidades de sos inputos chi hat tentu. Custu capitulu amustrat e comente su programmadore podet contivitzare detzisiones de leare candu unu programma est in esecutzione.
Captulu sestu: inue amustramus comente agatare sas raighinas de sas ecuatziones in d'una manera antiga, ma chi zente meda no amentat prus, e chistionamus de ateras cosas puru.
Capitulu settimu: chistionamus de sa ipotesi de Goldbach. Ma est una iscusa po presentare e comente unu problema si suddividit in problematicas prus semplizes e arresonande susu custas s'imparan cosas de importu.
Capitulu ottavu: proponimus una riflessione susu sos problemas antigos de sa matematica e susu s'importantzia educativa chi tenet sa disciplina nostra.


1.3


Basilares. Sos cuntzetos chi fun esplicados inoghe si ritenen inportantes meda. In parte dipenden de sas caracteristicas de hardware e software chi seis impreande. Nois nos basamus susu Windows in d'una de sas tantas versiones publicadas e postas in cumerciu. Leggide bene custas recumanditzias in manera de bos leare cunfiantzia cun issas e imparade a manizare sas prus de importu in pagu tempus. Ma totu cheret fattu cun grabu e sale in conca: non perdeis tempus meda, hais a torrare a ddas lezzer cando cheris e cando prus bos torrat a contu.
Bos faimus bier comente intrare e bessire de una sessione de triballu e cand'est netzessariu dimandare azutoriu. Una cosa prima 'e totu: bois hais a cherrer connoscher e comente si avviat una sessione de triballu cun Mathematica, comente dda si finit e comente, presentandesi unu trubugliu si podet dimandare azutoriu po ddu irboligare. Custas protzeduras dependen in massima parte de su sistema chi seis impreande: si cantu bos cussizamus no est bastante andade a cunsultu de carchi cogu de sas partes bostras.
Mathematica partit, su programma enit lanzadu, cracande duas bortas cun su sorighittu sa mazinedda de Mathematica pustis, de dd'haer individuada in su banchittu de triballu. Cumparit su fozu de Mathematica e su prompt, una riga continua orizontale. Seis prontos a inbiare sos inputos bostros. Inputare in sardu cheret narrer pesare un'accusa contra a unu: est inputadu de una morte, dd'hana inputadu una bardana. In su sensu chi impreamus nois inputare est un inglesismu, est una paraula chi si cumponet cun in e put, e cheret narrer cun meda fantasia ghettare a intro. Ghettare ite? Sas formulas. A intro a inue? A sa CPU (Central Processing Unity), chi po contu nostru faet contos e nos torrat bell'e prontas sas arriespostas.
Po sos conputos cracades inparis sos tastos Shift Enter, o mancari in su tastierinu numericu disattivadu su numeru chimbe, o fintzas cun su mouse cracade in sa mazinedda de Mathematica, in sa barra de sos istrumentos. Po chitare una sessione selezionade Quit in su mený file.
Medas bortas bos podet capitare chi unu programma intret in calculos infadosos meda e lentos, o chi non finin mai, e cheris acabare, fattu o nono, su dovere, e tando seberade interrupt, o craccade inparis sos tastos Ctrl Break.
Po dimandare azutoriu, po esempiu ca cherides ischire su numene de una funtzione, o ca non bos amentades una sintassi, o ite tipu de calculos issa faghet est bastante a su puntu de dimanda faer sighire su numene in cunsideru:


?Plot


Plot[f, {x, xmin, xmax}] generates a plot of f as a
function of x from xmin to xmax. Plot[{f1, f2, ...},
{x, xmin, xmax}] plots several functions fi.

?Times
x*y*z or x y z represents a product of terms.
?Plus
x + y + z represents a sum of terms.
Si non bos amentades e cherides ischire cales funi sas funtziones chi prinzipiana su numene issoro cun d'una litera de s'alfabetu, digitade sempere unu puntu de dimanda e ddu fais sighire de sa litera chi bos interessat e de un'isteddittu:
?S*
SameQ Solve
SameTest SolveAlways
SampleDepth Sort
SampledSoundFunction Sound
SampledSoundList Space
SampleRate SpaceForm
Save SpellingCorrection
Scaled SphericalHarmonicY
Scan SphericalRegion
SchurDecomposition Splice
ScientificForm Sqrt
Sec Stack
Sech StackBegin
Second StackComplete
SeedRandom StackInhibit
Select StartingStepSize
Sequence StartProcess
SequenceForm StieltjesGamma
SequenceLimit StirlingS1
Series StirlingS2
SeriesCoefficient StreamPosition
SeriesData Streams
SessionTime String
Set StringBreak
SetAccuracy StringByteCount
SetAttributes StringConversion
SetDelayed StringDrop
SetDirectory StringForm
SetFileDate StringInsert
SetOptions StringJoin
SetPrecision StringLength
SetStreamPosition StringMatchQ
Shading StringPosition
Shallow StringQ
Share StringReplace
Short StringReverse
Show StringSkeleton
Sign StringTake
Signature StringToStream
SignPadding Stub
Simplify Subscript
SimplifyGamma Subscripted
SimplifyPolyGamma Subtract
Sin SubtractFrom
SingularityDepth SubValues
SingularValues Sum
Sinh Superscript
SinhIntegral SurfaceColor
SinIntegral SurfaceGraphics
SixJSymbol Switch
Skeleton Symbol
Skip Syntax
Slot SyntaxLength
SlotSequence SyntaxQ
Socket SystemStub
SolutionOf

                                   
   1.4


S'annu passau mi so' posta cun d'unu pitzocu sindiesu e fumis paris un annu. Una die hamus brigadu ca fudi 'addinosu ca m'hat bistu faeddande cun d'unu pitzocu de Iscanu chi est un amigu meu. Issu s'est arrenegau meda poite bi funi totu sos amigos suos e issu non cheriat fagher una bruta figura. Semus abarraos a prima po duos meses, deo l'hapo lassau e mi so' posta cun d'un ateru. Como issu est torrau, ma a mie no mi nde importat nudda. Ghiaccio P.


Chistionamus de sa sintassi de sos inputos. Cando triballais po sas primas bortas cun Mathematica ponide a notu chi sa pregunta de un inputu e s'avvisu de una arresposta cumparin chena interventu de s'operadore. In, po input, e Out po output funi duos prontos de sos cales su primu cumparit cando cumandais unu contu e su segundu cando su calculadore amustrat su resultadu:


2+5
7


Sos inputos bostros a Mathematica han a cunsistere in espressiones chi sian numericas o de ateros tipos. Sas espressiones numericas han a esser digitadas in notatzione matematica ordinaria, comente prus a innantis bos amustramus. Una linea travessa (/) servit po indicare sa fratzione, unu asteriscu, (istedditu), (*) est su sinnu de moltplicatzione, ma est bastante a lassare unu ispatziu intra duos fattores po sa matessi impresa, s'accentu circunflettidu (^) serbit po s'elevamentu de una base a unu esponente e in generale a una esponentziatzione.
Prus(+) e Mancus(-) funi sos sinnos ordinarios de sa summa e de sa diferentzia. Hamus a bier sas formas alternativas, e no hat a mancare ocasione de rifletter susu su sinnificadu profundu de custos sinnos.


Expand[(a+b)^2]

2                  2
a + 2 a b + b


Su programma Mathematica operat cun sa matessi precedentzia de sa matematica ordinaria. Est a narrer chi sa moltiplicatzione e sa divisione tenen precedentzia cun rispettu a s'additzione e a sa suttratzione, e tando 2+ 7 * 4 est uguale a 30 e no a 36.


2+7*4
30


Sas funtziones funi iscrittas in limba inglesa, e tando si depet faer attenzione a su sinnificadu issoro, ma chi est simbizante meda a su sensu chi sa paraula tenet in sardu. Sos numenes de sas funtziones pre-paradas depen cumintzare semper in litera maiuscola e sos argumentos issoro cheren arregortos in parentis cuadras.


Plus[2,3,8]
13
Mod[31,2]
1


Sos numenes de medas funtziones pre-paradas si riferin cun semplitzidade a sa faina chi funi deputadas a faer. E tando, po esempiu, D istat po diferentziatzione, Sqrt po raighina cuadrada, Log po logaritmu, Det po determinante de una madrighe, (ma de como a innantis dd'hamus a narrer matrice). Ateras bortas su numen de sa funtzione podet esser intreu:


Conjugate[1+2 I]
1 - 2 I


o fintzas

List[{1,2,3},{1,2,4}]//MatrixForm


            1 2 3

            1 2 4


In custa funtzione, e in totu sas ateras puru, sas parentis cuadras incluen sos argumentos, e sas parentis grafas indican sas listas. Issas funi aparitzos matematicos potentes meda po isorbere imbolighinzos matematicos de natura varia, e cumparin frecuente. Po esempiu in d'unu cuntestu graficu comente custu:


Plot[x^3-2 x^2+3 x-1,{x,-1,1}];

 

wpe7.gif (1783 byte)


sa lista est un ordine a su programma po rappresentare sa funtzione de terzu gradu in su tretu de numeros reales chi incumintzat cun -1 e acabat a 1.O fintzas:


Integrate[Cos[x],{x,0,Pi/2}]
1


Sa funtzione Cos[x] est istada integrada intra sos estremos de integratzione zero e metade de pigrecu.
Cando una espressione benit terminada cun d'unu puntu e virgula su valore suu enit si, computadu, ma no amustradu a video, imprentadu, e custu fattu est unu azutoriu mannu cando sos risultados inter-medios funi longos meda e de pagu importu a esser indagados a fundu.


Clear[F]
F[0]:=1
F[1]:=1
F[n_]:=F[n]=F[n-2]+F[n-1]
F[20]

10946
N[F[50]/F[49],10]
1.618033989
N[GoldenRatio,10]
1.618033989


Su programma chi hamus iscrittu calculat sos numeros de Fibonacci. Hamus a torrare susu custu argumentu cando hamus a esser prus capazos de intender sas tematicas de programmatzione. Sos numeros de Fibonacci forman una sutzessione de numeros meda famada, e chi tenet tantas caracteristicas matematicas de esser impossibile, a chie apena apena dezidit de istudiare custa disciplina, a dd'ignorare. Custa sutzessione de numeros si format a partire de duos semenes, 1 e 1, chi funi tando sos primos duos termines de sa sutzessione. Onni termine sighente si ottenet de sos duos a luego pretzedentes sommados a pare. Tando su tertzu termine est tres, su cuartu est chimbe, e posca otto e treghi e bintunu e gasi sighinde a computare. Ma non ddue hat bisonzu de calculare totu sos termines finas a su e binti po ischire cantu si alet:
su valore suu est 10946. E gasi non depimus calculare cantu est su valore de su chimbantesimu termine e de su barantanoesimu po nde faer su rapportu: issu alet 1.618033989 , chi est unu numeru de importu in matematica e si narat setzione de oro.
Una espressione podet esser inputada in Mathematica in varias lineas, ma solu si Mathematica podet cumprender chi s'inputu in d'una linea no est finidu. Po esempiu si podet inputare:


3*
4

12


Ma nono


3
*4
3

Syntax::sntxb: Expression cannot begin with "*4".


Su trubullu si evitat impreande sas parentis:


(3
*4)

12


In su fozu de triballu, (Notebook), si poden inputare medas lineas, Mathematica ddas valutat solu cando s'ordine Shift+Enter enit issu puru inputadu. Si poden puru, riga a riga, o cando agradat, o cando ddu est su bisonzu, intrare in mesu cumentos e notas personales, si narat a documentare su triballu, bastat chi custa documentatzione siat iscritta intro de parentis tundas e istedditos: (*custu est unu cummentu*):


D[Sin[x],(*su diferenziale de Sin[x]*)
{x,1}] (*cun respectu a x, una orta*)
Cos[x]
Expand[(a+b) (a-b) (*unu produttu notevole*)]

2     2
a - b



                                                           
  1.5

Sa die de sa festa de Santu Juanne, in bidda, hamus fattu su fogu! Fudi mannu meda e totu sa zente si firmiat a l'abaidare. A perras de manzanu, su fogu, haiat incominzadu a miminare fintzas a cantu est addurada solu sa chisina. Deo e un amigu meu l'hamos brincadu e hamos fattu unu zuramentu: da e cussa die semus diventados compare e comare. Cappai I.


A s'internu. E cale est sa forma de sa rapresentatzione interna de una espressione.
Cando unu faet unu calculu aritmeticu semplice comente podet esser 1+2*3 non ponet tantu advertentzia a comente Mathematica si apresentat a s'internu suu sos datos po podet torrare unu resultadu. Ma est semper faina de importu a esser capatzos de ischire cale est sa rapresentatzione interna de onni espressione; ischire custu fattu nos podet esser de azudu po amanipulare unu numeru mannu de espressiones cun siguresa e lestresa. Mathematica riunit inparis sos ogettos cun sos cales operat in tipos diferentes de datos.
Sos numeros intreos funi distintos de sos numeros reales. Sas listas funi distintas de sos numeros. Una arresone de custu fattu est ca servit a identificare sos tipos de datos po impreare algoritmos ispecializados po faer contos lestros a segunda de sas classes de otzetos leadas in cunsideru.
Sa funtzione Head si impreat po identificare sos tipos de datos. Po numeros semplices issa iscoviat si unu numeru est intreu, ratzionale,reale e a gasi a sighire:


{Head[7],Head[3/4],Head[.7],Head[1+I]}
{Integer, Rational, Real, Complex}


Difattis onni espressione matematica hat unu Head chi nos tenet informados de su tipu suu:


Head[a+b]
Plus
Head[{1,2,3}]
List
Sa rapresentatzione interna de s'espressione nos benit dada impreande FullForm. Po esempiu sa espressione a*b benit imagasinada in sa forma:


FullForm[a*b]
Times[a, b]
FullForm[{1,2,3}]
List[1, 2, 3]


Si depet notare chi s'operadore binariu a*b est aberu rapresentadu a s'internu in forma funtzionale usande sa funtzione pre-parada Times. Issa moltiplicat sos argumentos suos:


Times[2,3,4]
24


Cando si tratat de espressione cun imbolighinzos mannos sa rapresentatzione interna no est fatzile de detzifrare:


FullForm[x^3+a x^2+b x+c==0]
Equal[Plus[c, Times[b, x], Times[a, Power[x, 2]],

Power[x, 3]], 0]


In finis su chi est de importu est a s'arregordare chi onni espressione podet esser usada e inputada in sintassi funtzionale. Sa forma istandard in sa cale si inputan sas espressiones, inue s'operadore cumparit in tra sos operandos, est zustu una manera prus discanzosa po iscrier aplicatziones. Esistin formas prefissas, infissas e postfissas.


                                         1.6

Forma postfissa. Comente hamus bistu deinantis, onni funtzione in Mathematica podet esser iscritta in sa forma Head[arg1,arg2,arg3...argn]. In manera occasionale si podet agatare cumbeniente a impreare ateruna forma connota comente postfix form. A su postu de iscrier s'espressione f[expr] iscridimus expr//f. Po esempiu:


x^5-1//Factor
2 3 4
(-1 + x) (1 + x + x + x + x )

Factor[x^5-1]
                           2     3    4
(-1 + x) (1 + x + x + x + x   )


Ma podet capitare, triballande po computos o cun programmas, a faer atopos cun irballios de tipos varios, calincunos maduros e ateros fines, medas discanzosos a curretzer e ateros po sos cales non s'agatat versu. Po esempiu si podet intrare in d'unu ciclu infinidu, e in custa evenientzia si no hais s'eternidade a dispositziones bostras s'unica cosa de faer est a firmare su computu. Discutimus in custa setzione de cuddas situatzione inue Mathematica finit unu contu e mancari sos contos non torran.
Unu errore frecuente est cussu de irballiare iscriende su numene de una funtzione. Faimus bier calincunu de custos tipos de trobeddaduras;


Sine[Pi]
General::spell:
Possible spelling error: new symbol name "Sine"
is similar to existing symbols {Line, Sin, Sinh}.
Sine[Pi]

Plote[Sin[x],{x,0,Pi}];
General::spell1:
Possible spelling error: new symbol name "Plote"
is similar to existing symbol "Plot".


Cando inputas una funtzione e su numen s'assimbizat a un'ateru, su programma inprentat una nova de errore. Inantis Mathematica hat torradu sas espressiones invalutadas. Fintzas a cando issu no hat a ischire e ite cherrer narrer Sine, torrat s'espressione chi ddu cuntenit sena dda computare. In custas evenientzias semplitzes est bastante a curretzer sa causa de s'errore, est a narrer digitande in manera curretta su numen de sa funtzione seberada.
Ateras bortas Mathematica faddit sos contos. Ma tenet semper risorsas mannas :


N[Integrate[1/x,{x,10^(-10),10^1}],10]
25.32843602
N[Integrate[1/x,{x,.1,1}]]
2.30259

                                          1.7


Cando fui pitzinna happo semper amadu sos caddos, ma mama e babu no m'hana mai azuadu a m'imparare a setzer. So istada faghinde fintzas chi bi so' resultada. M'happo chilcadu unu caddu e happo imparadu. So' essida a sa festa de Nostra Sennora de Corte, happo preparadu su caddu in domo, e prima de ch'essire mama m'hat dadu a bufare unu ticcu de abba, e s'atera che l'hat bettada in conca a su caddu.
A mie non piaghen custas cosas e cando happo cumpresu chi fudi sa meighina de s'oggiu mi so' arrennegada meda, e mi piaghet ancora a sezzer a caddu. Sechi A.F


Preigados. A prus de esser bonos a ischire su tipu de datos cun sos cales cherimus triballare medas bortas nos presentat su problema de detzider si sos datos nostros passan talunos criterios. Unu preigadu est una funtzione chi torrat unu valore, beru (True) o fartzu (False) in dipendentzia de su fattu chi sos argumentos suos sian abiles a passare unu test. Po faer unu esempiu, su preigadu PrimeQ testat unu numeru cun riguardu a esser issu primu: amentamus chi unu numeru intreu est primu si sos divisores suos funi issu e totu e s'unidade:


PrimeQ[126]
False
PrimeQ[2^31-1]
True


Ateros preigados tenen riguardu si unu numeru est paris, disparis, o si un'imparis de numeros est istruturadu in matrice o si est solu una lista e gasi a sighire:


{OddQ[21],EvenQ[21],MatrixQ[21],ListQ[{21}]}

{True, False, False, True}

                                       1.8


Operadores logicos e relatzionales.Unu operadore relatzionale benit usadu po cunfrontare duas espressiones e torrat unu valore True o False. Sos operadores relatzionales funi: Equal(==),Unequal(!=),Greater(>),Less(<),GreaterEqual(>=) e LessEqual(<=). Sos numenes inglesos funi sos numenes de sas funtziones e sos sinnos in parentis sa notatzione infissa issoro. Cheren narrer e si lezzen eguale, diversu, majore, minore, majore o uguale e minore o uguale. Si imprean po ponner numeros a cunfrontu:


7<5
False
3==7-4
True
Equal[3,7-4,6/2]
True


Si depet ponner attentzione a su fattu chi sos operadores relatzionale no tenen precedentzia a respectu de sos operadores aritmeticos. E tando 3==7-4 enit interpretadu gosie 3==(7-4) e non (3==7)-4.
Sos operadores logicos, connotos comente operadores booleanos cumponen frases de su discursu, propositziones, de sas cales siat possibile chena farta narrer si issa funi beras o fartzas. Funi operadores binarios e torran beru o fartzu cales resultadu de su cumpostu basadu susu una aritmetica po s'appuntu booleana. Po esempiu, sa congiuntzione intra duos custructos beros est semper bera:


7>1&&10>2
True


S'operadore booleanu And est rapresentadu cun &&. Una taula pitagorica, una tabellina de And est sa chi sighit:


TableForm[
{{True&&True,True&&False},
{False&&True,False&&False}},
TableHeadings->{{T,F},{T,F}}]

      T        F
T  True False

F  False False


Su operadore logicu Or si rapresentat cun || (sas barras verticales) : presentamus esempios de s'impreu suu e posca sas tabellinas.


4==3||3==6/2
True
0==0||3==5
True
TableForm[
{{True||True,True||False},
{False||True,False||False}},
TableHeadings->{{T,F},{T,F}}]

      T        F
T  True True

F  True False


Si ponzat attentzione a sa diferentzia de sinnificadu intra o de su limbazu comunu e o chi rendet Or operadore booleanu. Una frase cale podet esser "est frittu o est callente" impreat o in sensu esclusivu, est a narrer chi escludit sa possibilidade chi unu ogettu siat in su matessi tempus frittu e callente. Su operadore logicu Or est usadu in sensu inclusivu, e cheret narrer chi si A est beru e B est beru issu puru,tando A||B est beru.


True||True
True


S'agatat unu operadore booleanu chi rendet su o esclusivu, si narat Xor, ma non tenet indipendentzia ca podet esser esprimidu in termines de negatzione, Not(!) de Or e de And: Xor=(x||y)&&!(x&&y) e cheret narrer tando o s'una o s'atera ma no totu de duas.


TableForm[
{{(True||True)&&!(True&&True),
(True||False)&&!(True&&False)},
{(False||True)&&!(False&&True),
(False||False)&&!(False&&False)}},
TableHeadings->{{T,F},{T,F}}]

      T         F
T  False True

F  True False


Ateros duos operadores funi s'implicatzione materiale, x implicat y, e sa coimplicatzione, si est x tando est y.
x implicat y si rendet in termines de Not, Or e And in custa manera: !x||y e sa coimplicatzione in cust'atera.(!x||y)&&(!y||x). Su lettore attentu e interessadu hat a tenner contivitzu de si faer sos contos po contu suu. Custa est sa tabellina de sa implicatzione materiale:


TableForm[
{{!True||True,!True||False},
{!False||True,!False||False}},
TableHeadings->{{T,F},{T,F}}]

     T          F
T  True False

F  True True


E custa de sa doppia implicatzione:


TableForm[
{{(!True||True)&&(True||!True),
(!True||False)&&(True||!False)},
{(!False||True)&&(False||!True),
(!False||False)&&(False||!False)}},
TableHeadings->{{T,F},{T,F}}]

      T      F
T True False

F False True



                                       1.9


In sa idda mia sa passione po sos caddos b'est semper istada. In totus, o cuasi, sas festas nois faghimos sas protzessiones a caddu. Bos potzo narrer de Santa Maria de Sauccu ma s'istoria est longa meda. Tando, fintzas ca semus in tempus sou, bos conto totu s'istoria de sas pariglias de carrasegare in bidda.
Prima, calchi deg'annos faghet las faghian d'onz'annu. Ma de cando si cche sun mortos sos chi las faghian semper, sa traditzione s'est perdida. Si non fidi istadu po sos tzovanos chi tenen passione, l'haimis perdida de su totu. Dae s'annu passadu l'han torrada a leare mancari no bi sian bonos.
Ocannu gai e totu, han isterridu s'istrada a rena e po tres dies curren a pariglia. Sa zente chi b'est acudida totu cuntenta, hat bantadu meda sos curridores comente esseran cadderis de Siena. No est gai, ma su solu antu chi mi potho permitere de li dare est cussu chi han torradu a leare custa traditzione e chi hana imbentadu carchi cosa po fagher biu su carrasegare.
Lu naro fintzas si a mie sos caddos non mi sun mai piaghidos, ca los timo a frea. Pittitu R.


Arrastos. Cando s'iscriet unu programma non semper totu andat po su versu suu, una funtzione enit impreada meda po sighire arrastu de irballios, issa si narat Trace e amustrat una lista de totu sos passos postos computande un'espressione. Usamus Trace in su computu de un'espressione numerica:

Trace[(7*(3+1))/2]
1 1 7 4 4 7
{{3 + 1, 1 + 3, 4}, {-, -}, ---, ---, 14}
2 2 2 2


Nudda de su chi faet sa machina est diferente meda de comente s'irboligat unu contu a pinna e paperi: a prima si calculat 3+1, su resultadu enit moltiplicadu po sette e posca si dividit po duos: su resultadu finale est 14. Su calculadore sighit sa matessi logica chi s'imparat in ischola.
Una funtzione simbitzante meda a Trace est TracePrint, e carchi orta sas arrespostas suas resultan prus craras:


TracePrint[(7*(3+1))/2]
7 (3 + 1)
---------
2
Times
7
3 + 1
Plus
3
1
1 + 3
4
1
-
2
Power
2
-1
1
-
2
Rational
1
2
7 4
---
2
4 7
---
2
14
14
1.10


Cantu lestresa. Unu poder haer disizu de ischire in cantu tempus si faet unu contu, e sa cosa podet esser fatta cun sa funtzione Timing. Ponimus de cherrer ischire in cantu tempus unu numeru mannu enit fattorizadu, po narrer chentu fattoriale: 100!


Timing[FactorInteger[100!];]
{0. Second, Null}


Unu faer de rughe! Cando unu computu est istadu giai fattu, su tempus sinnaladu est cussu chi enit impreadu a letzer sos registros de memoria. Su programma no irmentigat mai nudda.


Timing[FactorInteger[100!];]
{0. Second, Null}


Timing est una aliaga po ischire cantu lestra est una funtzione o unu algoritmu. Est cosa pacifica chi a fattorizare sos numeros est unu protzessu chi arrechedit tempus meda, e custu aumentat in manera esponentziale a manu a manu chi sos numeros creschen de valore. Amustramus ite sutzedit realmente, e nde pesamus unu graficu:


tempusimpreadu:=
Table[
Timing[
FactorInteger[(100 j)!]][[1]],{j,1,15}]
ListPlot[
tempusimpreadu/Second,
PlotStyle->PointSize[0.02]];

 

wpe6.gif (1816 byte)


Unu graficu de su logaritmu de sos elementos de sa lista tempusimpreadu est lineare, e custa circustantzia cunfirmat s'andamentu esponentziale de s'algoritmu de fattorizatzione.


1.11


Atributos.Totu sas funtziones in Mathematica tenen talunas propriedades, chi si mutin atributos. Custos faen si chi una funtzione siat comutativa o associativa o dda poden abilitare a esser aplicada a una lista. Attributes si impreat po custu iscopu;


Attributes[Times]
{Flat, Listable, OneIdentity, Orderless, Protected}


Flat narat chi sa moltiplicatzione est associativa. Cheret narrer chi leados tre elementos de moltiplicare, su productu de sos primos duos enit moltiplicadu po su tertzu. In matematica si iscriet a*(b*c)==(a*b)*c po cale si siat tertzina de numeros. In Mathematica custu fattu si esprimet iscriende Times[a,Times[b,c]] est ecuivalente a Times[Times[a,b],c] chi resultan ecuivalentes a Times[a,b,c].


Times[(a*b)*c]
a b c


Provade mancari a indagare cun Plus.
Orderless indicat chi sa funtzione est comutativa. Cheret narrer chi a+b==b+a.
Sa moltiplica puru comutat. Custu fattu imponet a iscrier custas espressiones in forma canonica:


b+c+a
a + b + c


S'ordine canonicu cando si chistionat de literas est alfabeticu. Sos polinomios enin ordinados in forma canonica cun respectu a su gradu e in ordine creschente:


x^2+x^5+x-1
               2      5
-1 + x  + x + x


S'atributu Protected est una avertentzia e cheret narrer chi sas funtziones pre-paradas non poden esser cambiadas in manera sinnificativa a volontade de s'utente.
OneIdentity narat chi sas funtziones chi godin de custu atributu mancari aplicadas tantas bortas a sos matessi argumentos operan una orta solu.
Listable cheret narrer chi sa funtzione podet esser aplicada a una lista de cosas de matematica, numeros po esempiu.


FullForm[Plus[Plus[Plus[a+b]]]]
Plus[a, b]
Log[{1,2,3,4}]
{0, Log[2], Log[3], Log[4]}
N[Log[{1,2,3,4}]]
{0, 0.693147, 1.09861, 1.38629}


Po una discussione in fine de su sinnificadu de totu custas cosas, e de tantos ateros atributos ancora, si depet cunsultare su manuale.
No est a sa moda chi si cambien sos atributos de sas funtziones. Ma si propriu non si nde podet faer de mancu, tando SetAttributes nos podet azuare, ma ddu hais a penzare susu tantas bortas prima.

                                                           home