Notebook de introducció.

Introducció a l'ús de Mathematica
(Curs de Aplicacions Informàtiques en Química)

Per veure el contingut de cada secció feu "click" dos vegades en el corchete blau situat en l'extrem dret del seu titol

INNOVACIÓ EDUCATIVA: Extracte Guia Docent 2008-09

En la Guia Docent de l'assignatura "Aplicacions Informàtiques per a la Química" per al curs 2008-2009 s'estableixen Continguts Mínims i Destreses a adquirir relacionades amb Mathematica. Totes elles (i moltes altres) poden adquirir-se a partir de la informació continguda en aquest document, si bé en alguns casos pot ser necessari realitzar exercicis addicionals similars als exemples proposats.

Continguts mínims

1.	Conèixer la sintaxi bàsica del manipulador algebraic (MA) per a funcions, expressions, llistes i operadors.
2.	Saber representar una funció d'una variable amb el MA.
3.	Saber representar una llista de punts amb el MA. 
4.	Saber resoldre una equació d'una variable amb el MA.
5.	Saber resoldre un sistema d'equacions de diverses variables amb el MA.
6.	Saber calcular derivades explícites d'una variable amb el MA.
7.	Saber calcular integrals d'una variable amb el MA.

Destreses

1.	Aprendre les normes d'ús bàsiques del manipulador algebraic(MA). 
2.	Aprendre les normes de sintaxis bàsiques del manipulador algebraic(MA). 
3.	Saber buscar informació en l'ajuda del programa tipus MA. 
4.	Saber reconèixer missatges d'error i d'advertiment en el MA. 
5.	Saber manipular expressions  algebraiques i transcendents bàsiques. 
6.	Saber substituir una expressió en altra (operador substitució) 
7.	Aprendre a usar el manipulador per a resoldre equacions i sistemes d'equacions. 
8.	Aprendre a usar el manipulador per a derivar i integrar funcions. 
9.	Aprendre a usar el manipulador per a realitzar operacions bàsiques amb vectors i matrius.
10.	Aprendre a usar el manipulador per a realitzar de forma controlada representacions gràfiques de funcions.
11.	Saber representar dues funcions d'una variable en el mateix gràfic amb el MA.

Notes preliminars

Aquestes notes son un molt breu resum d'algunes de les funcions, comands i operacions que Mathematica pot realitzar. La seua finalitat es ajudar-vos a comprendre primer i enrecordar desprès la forma en que Mathematica treballa.  Mathematica utilitza els seus propis convenis de programació, però molts d'ells son regles que, una volta apresses,  es poden utilitzar en molts contextes diferents. Quant més traballeu amb Mathematica més fàcil vos resultarà seguir fent-ho perquè aprendreu més pautes de treball que s'apliquen de la mateixa manera encara que siga en contextos diferents.

Ús dels "notebook" de Mathematica

El "kernel" i el "notebook"

Mathematica consta de dues aplicacions diferents. Una de elles, dita kernel (nucli) és la que fa les operacions i resol els problemes matemàtics. L'altra, és  la "interfase" amb l'usuari (es a dir, amb vosté.). Si la "interfase" es de tipus gràfic, en format de finestres ("windows"), es diu notebook, (bloc de notes).  El notebook s'organitza en cel.les ("cells"). Cada cel.la es reconeix per el símbol blau en forma de corxet (paréntesi quadrat) situat en l'extrem dret del "notebook". Cada corxet blau individualitza una cel.la, marca la seua  extensió i assenyala algunes de les seues propietats .

Les cel.les como aquesta que esteu llegint son de tipus Text i en elles no es pot operar. Les cel.les en les que es pot operar son cel.les tipus Input. Mathematica dona les seues respostes en cel.les tipus Output. En aquest document, si no canvieu l'estil per defecte, les distingireu fàcilment pel seu color de fons. Tota cel.la nova es de tipus Input per defecte.

Mathematica actua como un intèrprete informàtic. Cada vegada que se li proporciona informació escrita en una cel.la de tipus "Input" i es prem Majúscula+"Enter" (Shift+Enter) o la tecla  "Intro" del teclat numèric,  Mathematica tracta d'interpretar allò que s'ha escrit i executar les instruccions. Si no pot executar-les, o no les compren, escriu un missatge tractant d'explicar quina dificultat ha trobat. A voltes escriu missatges de "warning" (avís) per a avisar de posibles fonts d'error, que no impedeixen, però, que Mathematica execute la o les operacions demanades. Tot aixó es comprendrà facilment quand comenceu a treballar en la secció següent.

Les cel.les de tipus text no son interpretades, i  son tractades per el programa com a comentaris.

Quan "obriu" Mathematica no més es possa en marxa el mòdul  de "interfase". Quan executeu el primer "input", es possarà en marxa  el "kernel". Per aquest motiu notareu que  la primera operació, encara que siga una operació molt simple, sempre pren un poc més de temps que les altres.

El comandament ";"

Una cel.la de "input" pot contenir diversos comandaments. Cada volta que es prem "Enter" es bota el cursor a la línia següent, i comença un altre comandament. Mathematica produirà una cel.la de "output" per cada comandament, de manera que una cel.la de "input" pot originar varies cel.les de "output".  Recordeu que els comandaments no s'executen fins que no es prem  Majúscules+Enter tot estant el cursor situat en qualsevol lloc de la celda de "input". No importa on estiga el cursor dins de la cel.la de "input". Tots els comandaments que conté s'executaran per ordre quan es prema simultàniament Majúscules+Enter.

Si per qualsevol raó es vol que un comandament o operació del "input" s'execute però el seu "output" no s'escriga, cal afegir  un   ;   al final del comandament.

NOTA: Aquesta opció es molt útil per que alguns comandaments produeixen "outputs" molt llargs o poc interessants quan ja es coneix un  poco més de Mathematica. En aquest "notebook" a penes s'ha fet ús del comandament "; " per raons pedagògiques. Per aquesta raó, en alguns cassos, els  "outputs" que obtindreu potser us resultaran repetitius. Conforme vajau  progressant us resultarà més i més  interessant utilitzar el ";" al final d'algunes línies de "input".

El comandament "%"

El caràcter % utilitzat en una cel.la de "input" representa el "output" de l'últim comandament executat en la mateixa sessió. 
Observareu que cada vegada que executeu una cel.la, Mathematica iguala cadascú dels "input" a un símbol   In[n]   on n es un nombre d'ordre de execució.  Els diferents "outputs" que es generen també apareixen igualats a símbols de forma   Out[n]  .  El caràcter % representa l'últim Out[n] disponible, és a dir, aquell que té el nombre d'ordre n més alt en la sessió en que esteu.

ATENCIÓ: El nombre n en Out[n] no depend de la posició que ocupa la cel.la dins  del "notebook" . Depen, però, de l'ordre temporal en que s'executen les instruccions de "input". % equival a l' "últim output" en el temps.  Les cel.les esborrades no alteren la serie de valors de "n" i continuen "existint" en la memòria de la sessió.
NOTA: La mateixa nota indicada dalt per el comandament ";" pot aplicar-se al comadament "%". En aquest "notebook" s'ha evitat utilitzar aquest comandament per raons pedagògiques però es molt útil en sessions interactives i us acostumareu a la seua utilització fàcilment. L'ús de % ha de moderar-se si es preten crear "notebooks" que actuen com programes (per exemple, per a ser executats de nou en sessions diferents) llevat que us assegureu que la seqüència temporal dels comandaments a executar siga la adequada.

Càlculs aritmètics amb Mathematica

Calculadora d'escritori:

Executeu la cel.la següent. Per fer-ho, feu  "clic" en qualsevol lloc dins d'ella  per a que el cursor quede al seu interior i premeu a continuació  Majúscula+"Enter".  Mathematica respon assignant el vostre "input" a una funció interna que es diu In[n] , interpretant-lo i donant  el resultat en una cel.la tipus "output". Aquest resultat apareix assignat a una funció interna que es diu Out[n].

2 + 9 - 3

Practiqueu la  mateixa forma de calcular en les següents cel.les "input".  Observeu atentament les respostes que obteniu.

2.5 + 9.3 - 1 - 0.001

(1/5) + (6/7)

Els operadors suma, resta, multiplicació i divisió son: + , -, *,   / .  L'operador "elevar a una potència" es l'accent circonflex ^
ATENCIÓ: Al menys un espai en blanc entre dos nombres es interpretat como el operador *.  Així, 45 es interpretat como el nombre quaranta i cinc. Però  4 5, amb al menys  un espai en blanc entre el 4 i el 5, és interpretat com el seu producte, 20.
ATENCIÓ: L'operador ^ és un accent en el teclat espanyol. Per aquesta raó s'escriu com dues polsacions succesives; primer es prem la tecla ^ i tot seguit l'espaiador. 
NOTA: Un text tancat entre " (*  "  i  " *)  "  és considerat un comentari per Mathematica encara que estiga dins d'una cel.la d' "input"

Observeu els exemples que segueixen i compareu els resultats

4 5 +1

4*5 + 1

La divisió pot representar-se per l'operador  /  o per les fraccions que s'escriuen  fent servir la paleta. La paleta està en una finestra a banda. Si no està oberta,  pot obrir-se amb el menu:File:Palettes:BasicInput.  Compareu els resultats de les dues cel.les d' "input" que segueixen.

1/9 + 1/8 + 1/7

(1/9) + (1/8) + (1/7)

Els operadors * , / prevalen front als operadors + ,- . L' operador ^ preval sobre tots ells. Si es desitja controlar exactament  l'ordre d'execució de les operacions poden utilitzar-se paréntesis curvats ( ) como es usual en matemàtiques.

1/9 + 1/8

1/(9 + 1/8)

(1/9) + (1/8)

(1/(9 + (1/8)))

Comparant els resultats de les cel.les anteriors pot veure's l'interès d'utilitzar els paréntesi (en fórmules 1D) o les formes fraccionaries tradicionals (fórmules 2D)

Si heu executat els exempless anteriors haureu observat que Mathematica, quan treballa amb nombres sencers, manté el resultat en la forma més exacta possible. Si un resultat és 1/3 el mantindrà així (que és un nombre racional exacte) en lloc de donar el valor 0.3333... que sempre serà un valor  aproximat llevat que continguera infinites xifres decimals, el que és impossible per l'ordinador. En canvi, si les operacions contenen com dades ("operands") nombres decimals de precissió limitada, Mathematica donarà el resultat en forma aproximada (amb un nombre limitat de xifres decimals).  Observeu la diferència en el resultat entre les dues operacions que segueixen. Verifiqueu que en el segon cas basta que un dels tres operands tinga un punt decimal (ni tan sols cal donar la primera xifra decimal) per que el resultat s'obtinga en forma de nombre aproximat.

11/3 + 3

11.0/3 + 3

11/3 + 3.

NOTA: Mathematica pot treballar amb la precisió que es vullga.  En altra secció veurem com se li demanen les respostes numériques amb el nombre de xifres decimals que es desitje.

Compareu els resultats d'aquestes dues operacions i verifiqueu que Mathematica admeteix les formes 1D i 2D de la operació "elevar a la potència"

2^10

(2^10)

2.4^-1/ .33

2.4^(-1/ .33)

Els exponents fraccionaris entre sencers (exponents racionals) també poden representar-se amb els operadors (Sqrt[□]) y (□^(1/□))

NOTA: L'únic cas en que poden escriure's dos operadors junts es per a escriure de forma còmoda les potencies de 10. Així, el nombre d'Avogadre pot escriure's com   6.02214*^23  (mol^(-1)). Observeu com ho interpreta Mathematica

6.02214*^23

Variables , Llistes i Funcions predefinides

Variables

Qualsevol paraula que s'escomença per una lletra, i es componga de lletras i xifres (caracters alfanumérics) pot ser utilitzada com variable. Poden utilitzar-se alguns altres caràcters, però no es recomana el seu ús  perque molts d'ells tenen significats especials en  Mathematica. 
NOTA: Les funcions i variables internes o predefinides de Mathematica son paraules comunes o conjunts de paraules comunes juxtapossades de l'idioma anglès.  Comencen sempre amb una letra majúscula. Es recomana EVITAR l'ús de majúscules com primera (o única) lletra de les variables definides pels usuaris.

La forma més directa d'assignar valor a una variable és mitjançant l'operador  =  . El valor atribuït assigna també el tipus de variable que és. Així,  si el valor és un nombre sencer, la variable és considerada sencera pel Mathematica; si el valor és un nombre amb decimals, la variable és considerada  real (en informàtica es diu "variable de coma flotant") , etc..

x = 7
y = 3.75

ATENCIÓ: Observeu els "outputs" de la cel.la anterior. Voreu que Mathematica no fa servir l'operador  = en el "output" pero les variables x i y han quedat assignades (tenen atribuit un valor) per la resta de la sessió. Així, x seguirà valent 7 fins que alguna d'aquestes cosses es produeixca: 
1) Es tanque la sessió de Mathematica,  
2) Es redefinixca la variable  amb x = valor , 
3) S'elimine l'assignació tot escribint "x = . ",  o 
4) S'esborre l' assignació fent servir la funció predefinida Clear[x]. 
Per  tant, el simple fet de borrar  la cel.la o de executar altres  intruccions en la mateixa cel.la després de borrar l' expressió x=7 , per eixemple, NO DESASSIGNARÀ la variable x.

NOTA: Per a tancar una sessió de Mathematica i obrir una altra no cal "eixir" del programa (Menu Mathematica:Quit Mathematica).  N'hi ha prou en "eixir" del Kernel (Menu Kernel:Quit Kernel:Local) i, tot seguit, poser-lo de nou en marxa  (Menu Kernel:Start Kernel:Local).

Algunes variables o constants ben conegudes estan predefinides en Mathematica. Vegeu com respon  Mathematica als "inputs" següents

Pi

pel nombre π

E

pel nombre e (base dels logaritmes Neperians o naturals i de la funció exponencial)

I

per la unitat imaginària (Sqrt[-1])
Observeu com sempre s'escomença per una lletra majúscula en les paraules que tenen significats predefinits, encara que consten d'una sola lletra.

Pot operar-se amb les variables igual que amb els nombres. Una volta més, un blanc entre dues variables equival a multiplicar-les. Un nombre seguit de una variable també s'interpreta com un  producte encara que no haja blanc entre d'ells. Per aquesta raó, una variable mai pot escomençar per un número.

x*y

x y

2  x + 2  y

Observeu la diferència de la resposta de Mathematica en els dos cassos següents:

2  Pi

2.  Pi

La diferència en la resposta es deu a que π és un valor exacte, però en el segon cas el valor exacte ja no té sentit, perquè un dels factors no més es coneix fins les unitats.

ATENCIÓ: La simple juxtaposició de dues lletres no representa el seu producte, sinó una nova variable. Observeu la diferència de resposta de Mathematica en aquests dos cassos. (En aquest exemple s'utilitza el comandament " ;" que es va explicar en una altra secció més a dalt per tal d'evitar la proliferació de cel.les de "output")

a = 3; b = 5;
a b
ab

Ara procedim a desassignar les variables x i y que es varen assignar  al principi d'aquesta  subsecció "Variables".  Observeu el que passa si operem amb elles, desprès de desassignar-les.

x + y

x =. 
y =.

x + y

Llistes

Una llista en Mathematica és un conjunt d'objectes matemàtics separats per comes i tancats entre claus { , , , ... , ,}. Conforme us anireu familiaritzant amb Mathematica, descobrireu que aquest utilitza les llistes en moltes ocasions per oferir resultats i en altres situacions. Entre d'altres usos, Mathematica fa servir les llistes per a treballar amb vectors i matrius.

llista1 =  {1, 3, 7}
llista2 = {a, b, c}

Observeu els resultats d'operar amb llistes, o d'operar nombres o variables amb llistes

3*llista1

Pi llista1

Pi {x, y, z}

llista1 + llista2

llista1*llista2

Assignar una llista a una variable, var={ , , , ..., }, com s'ha fet als exemples anteriors, és molt útil, perquè podem referir-nos a l'element n-èsim d'una llista de nom  var no més escrivint  var[[n]]. De aquesta manera, ens podem referir a una component concreta d'un vector. Vegeu l'exemple següent:

v = {4, 5, 7}
w = {a, b, c}

vx = v[[1]]
wy = w[[2]]

vx + wy

El producte escalar o producte punt  , v.w , dels vectors v i w pot obtenir-se així:

v[[1]]*w[[1]] + v[[2]]*w[[2]] + 
      v[[3]]*w[[3]]

encara que Mathematica pot calcular-lo utilitzant el punt  " .  "  com operador entre dos vectors (es a dir, entre dues llistes)

v . w

Taules

El comandament Table[ expr, {i, i_mínim, i_màxim}] construeix una llista de valors de l'expressió expr en la que els valors de i varien d'un en un des de l' i_mínim a l'i_màxim. Si "i" no figura en l'expressió "expr" s'obtenen rèpliques de "expr". Si s'afegeix el comandament //TableForm el resultat s' obté en forma de taula. 
Poden afegir-se instruccions addicionals {j, j_mínim, j_màxim}...  Table[ expr, {i, i_mínim, i_màxim}, {j, j_mínim, j_màxim}..] 
Table[ expr, {i, i_mínim, i_màxim, incre}] incrementa i entre i_mínim i i_màxim utilitzant "incre" como increment

Table[i, {i, 1, 5}]
Table[a, {i, 1, 10}]
Table[(E^n), {n, -5, 5}]
Table[i a, {i, 0, 20, 2}]
Table[2 a + p,  {p, 1, 7}]
Table[{a*i + j}, {i, 1, 5}, {j, 1, 3}]

Table[i, {i, 1, 5}] // TableForm
Table[2 a + p,  {p, 1, 7}] // TableForm
Table[{a*i + j}, {i, 1, 5}, {j, 1, 3}] // TableForm

Matrius

Es poden construir en la forma convencional de matriu (arreglament bidimensional de nombres o expresions) mitjançant la paleta "BasicInput" per a generar una matriu (2x2). Per afegir columnes, n'hi ha prou en premer control+, i  control+"enter"per generar files.

(({{\[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder]}}))

(({{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}))

A tota matriu quadrada li correspón un valor numèric dit Determinant de eixa matriu.  Se obté mitjançant la funció Det[mat]

m=(({{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}));Det[m]

La matriu m definida als exemples anteriors es singular (el seu determinant és nul).

mat=(({{a, b, c}, {d, e, f}, {g, h, i}}))

Det[mat]

L'operació d'invertir una matriu utilitza el determinant d'ella mateixa. Observeu atentament el resultat de la següent operació:

Inverse[mat]

Per a multiplicar matrius se utilitza l' operador "."  (Que passa si s'utilitza l'operador " * " ?)

(({{a, b}, {c, d}})).(({{p, q}, {r, s}}))

Per obtenir el resultat en la notació matricial convencional (com arreglament bidimensional de nombres) en lloc d'obtenir-lo en forma de llista,  pot usar-se el comandament "// MatrixForm" darrere de l'operació

(({{a, b}, {c, d}})).(({{p, q}, {r, s}}))//MatrixForm

NOTA: La funció Simplify[ ] s'explica en la secció següent, però el seu significat i la seua necessitat en l'exemple següent us resultaran evidents quan executeu les cel.les.

mat  .  Inverse[mat] // MatrixForm

Simplify[mat  .  Inverse[mat]] // MatrixForm

Funcions predefinides

Mathematica disposa d'un enorme conjunt de funcions matemàtiques predefinides o intrínseques, que permeten treballar amb les dependències funcionals més comunes.  Totes les funcions predefinides comencen per una lletra majúscula. Els arguments de les funcions van sempre entre corxets (paréntesis quadrats). Donem a continuació una breu llista  amb algunes funcions molt utilitzades, que ens serviran d'eixemple.

Funció exponencial ((e^x))

Exp[2]

Exp[2. ]

Exp[2.000000000000000000000]

Funcions trigonomètriques (Sin[x],Cos[x],Tan[x], ArcSin[x],ArcCos[x],ArcTan[x]).

ATENCIÓ: Observeu que l'argument d'aquestes funcions en pren en radians. Per a calcular la funció d'un angle en graus, cal multiplicar el valor d'aquest per la constant  "Degree" : Sin[x Degree]

Sin[30. ]

Sin[30.  Degree]

Sin[Degree*30. ]

NOTA: "Degree" és  una constant predefinida (els radians que corresponen a un grau sexagesimal). Observeu l' "output" de les cel.les següents. La segona  usa "un truc" que permet obtindre el valor numèric assignat a "Degree".  N'hi han altres formes d'obtindre el valor assignat a una expressió que encara  no s'han explicat.

Degree

Degree * 1.

Arrels quadrades(Sqrt[x])

Sqrt[121]

ATENCIÓ: L'arrel quadrada d'un nombre negatiu dona com a resultat un nombre imaginari pur.

Sqrt[-9]

Valors absoluts (Abs[x])

Abs[-5]

Abs[-5 p]

ATENCIÓ: La funció Abs[z] aplicada a un nombre imaginari z dona com a resposta allò que es coneix com "mòdul" o "valor absolut" del nombre z. Si  z= a+b i  és un nombre complex, el seu mòdul  és  r =(Sqrt[(a^2) + (b^2)])

Abs[2 + I]

Abs[1 + 2  I]

Abs[1 - 2  I]

Logaritme neperià (Log[x]) i logaritme decimal (Log[10, x]).

Log[10^5]

Log[10. ^5]

Log[10, 10^5]

NOTA: El logaritme base a de x es calcula com Log[a,x]

Log[2, (2^6)]

Log[a, (a^(-b))]

ATENCIÓ: El logaritme d'un nombre negatiu dóna com resultat un nombre imaginari. Quan es treballa no més amb nombres reals  (per exemple als Fulls de Càlcul) es sol dir  que "els nombres negatius no tenen logaritme".

Log[-9. ]

Funció per obtindre valors numèrics (N[x]).

Si es volen n xifres significatives (i Mathematica conclou que té sentit el calcular-les) es pot usar la funció d'aquesta forma  N[x, n]

N[Log[10]]

N[Log[10], 20]

N[Pi, 100]

N[1/5  + 1/3]

N[1/5  + 1/3,  20]

Es pot solicitar a Mathematica que dóne el valor numèric (amb sis xifres significatives) d'una operació o un càlcul utilitzant la funció N de la següent manera, que fa servir el següent "operador" especial: "//"  . Observeu el seu ús en aquests exemples:

1/5 + 1/3
1/5 + 1/3  // N

Exp[2] // N

Funcions definides pel usuari

Es pot definir una funció donant-li un nom arbitrari mitjantzant la sintaxis  nom[x_]=expr  on nom no pot començar per un nombre i expr sol contenir la variable x.  En la definició d'una funció s'utilitza el símbol " _" darrere de la variable. Aquest símbol, que no més s'usa en el membre de la esquerra, li indica a Mathematica que es tratca d'una variable genèrica. Observeu l'obligació d'usar corxets quadrats després del nom  per tractar-se de una funció.
NOTA: en alguns exemples executem un Clear[ ...] abans de definir la funció per tal d' eliminar les possibles assignacions prèvies que tinguerem.

Clear[fun1, x]
fun1[x_] = x*Sin[(x^2)]

fun1[1]

fun1[1] // N

En aquest exemple, s'utilitza una funció que denominem deltaY  per a calcular increments de la funció y  quan x s'incrementa en 2 unitats (la funció fun1[  ] que haviem definit adés fa el paper de y en aquest exemple):

deltaY[x_] = fun1[x + 2] - fun1[x]

deltaY[1] // N
deltaY[Pi/2] // N
deltaY[Pi] // N

El exemple que segueix ajuda a recordar que el símbol "_" darrere de la variable només s'utilitza en el membre de la esquerra de la definició de la funció.  Observeu que Clear[ ] no genera output pero les altres quatre instruccions si ho fan.

Clear[fun1, x]
fun1[x_] = x*2  Sin[(x^2)]
y[x_] = fun1[x]
fun1[3. ]
y[3. ]

També es podria haver escrit d'aquetsa manera i el resultat és el mateix.

Clear[fun1, x]
fun1[x_] = x*2  Sin[(x^2)]
y[u_] = fun1[u]
fun1[3. ]
y[3. ]

Poden definir-se funcions de més d'una variable.

Clear[f, x, y]
f[x_, y_]  =  2  x^2 + 3  y^2

f[1, 1]
f[1, 2]
f[2, 1]
f[2, 2]

El  mateix resultat en forma de llista s'obté fent:

{f[1, 1], f[1, 2], f[2, 1], f[2, 2]}

Un altre eixemple.

Clear[fun, x,  deltaY, h]
fun[x_]  =  (x^2)*Sin[(x^2)]

       
deltaY[x_, h_]  =  fun[x + h] - fun[x]
fun[5. ]
deltaY[a, 2. ]
deltaY[5. , 2. ]

Expressions algebràïques

En àlgebra es manipulen símbols (generalment lletres, però Mathematica pot manipular símbols de més d'una lletra como tots els llenguatjes de programació comuns d'alt nivell) combinats o no amb nombres. Segons el paper que juguen en el problema que es tracta de resoldre, aquests símbols reben en ocassions diversos noms (incògnites, paràmetres, coeficients, variables independents, variables dependents, etc.).

Manipulació d'expressions

Un exemple clàssic d'expressió algebraica és la coneguda recepta "suma per diferència igual a diferència de quadrats". La forma normal de treballar amb Mathematica és escriure una expressió i tractar de que Mathematica ens done com resposta una expressió equivalent. Aixó es fa mitjançant  la manipulació d'expressions.

Expand[ ] y Factor[  ]

Si volem que Mathematica desenvolupe l'expressió que li donem, usarem el comandament Expand[ ]

a =. 
b =.

Expand[(a + b) (a - b)]

Si volem que Mathematica ens converteixca  una expressió en productes, el més que puga, s'utilitza Factor[  ]

Factor[(a^2) - (b^2)]

Observeu atentamente la diferència entre aquests dos exemples:

Factor[(a^2) - (b^2) + c]
Factor[(a^2) - (b^2)] + c

Expand[  ] també pot usar-se per expandir potències o radicals

Expand[(((a + b))^5)]

Expand[((8 (Sqrt[ 27]) (b^2))^(1/3))]

Factor[  ] pot usar-se per a "traure factor comú" en alguns cassos

Factor[4  x y  +  6 a (y^2)]

Suma de fraccions algebràiques

Poden sumar-se fraccions algebraiques amb el comandament Together[  ]

Together[(a/x) + (b/(x + 1))]

Traure factor comú

L'extracció d'un factor comú a un conjunt de termes no sempre es fa per Mathematica como es voldria. En ocasions el comandament Factor[ ] pot servir. També es útil el comandament Collect[  ] que s'utilitza d'aquesta forma:

Collect[a (x^2) + b x y  + a (y^3), a]

S'extrau el factor "a" (segon argument de Collect[  ]) de tots els termes del primer argument que ho contenen. També es pot usar una llista como segon argument de Collect[ ]

expr = 
      a (x^2) + b x y  + a (y^3) + b x (y^2)
Collect[expr, {a, b}]

ATENCIÓ: En realitat, Collect[  ] agrupa tots els termes que tenen les mateixes potències de les variables que se li indiquen. Per aixó no sempre es fàcil preveure que s'obtindrà. Considereu el següent eixemple :

Collect[expr, {x, y}]

Substitucions: Els operadors "/. "  i  "->"

La substitució d'una expressió per  una altra  equivalent és una operació molt comú en àlgebra i altres branques de les matemàtiques. 
L'operador " -> " (que pot introduïr-se en el "input" pulsant  "menys" seguit de "major que" ->) indica  assignació temporal. Mathematica diu a cadascuna d'aquestes assignacions regla de reemplaçament ("replacement rule").  L'operador " -> " s'utilitza així:    var -> expr. 
L'operador " /.  " escrit darrere d'una expressió fa que s'apliquen a l'expressió les assignacions temporals (regles de reemplaçament) que segueixen  a l'operador.

Eixemple: volem veure que ocorreix en 4(x^3)-2(x^2)+5/x quan x val 3. Podem fer

Clear[x]

4(x^3)-2(x^2)+5/x /. x -> 3

I quan x es susbtitueix per -(2^(1/3))? Fem

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

I quan x es substituïda per  (z^2)/5? Fem

4(x^3)-2(x^2)+5/x /. x -> ((z^2)/5)

ATENCIÓ: Observeu que desprès de cada substitució no ha quedat assignat cap valor ni expressió a x. Podeu verificar-ho executant la següent cel.la de "input":

x

Si  haguerem fet, en canvi,

Clear[x]
x = 
      ((z^2)/5)
4(x^3)-2(x^2)+5/x

obtindriem el mateix valor que abans per a l'expressió substituida, però ara x té un valor assignat "permanent" per haver utilitzat l'operador " = "

x

A més a més, i com a  consequència del mateix, l'expressió completa que depenia d' x ha quedat també amb un valor fix assignat, como pot verificar-se "executant" l' "input" següent

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

Recuperem l'expressió com era, sense valor prefixat d' x si desassignem x

x =.      
4(x^3)-2(x^2)+5/x

Poden fer-se varies substitucions en una etapa usant llistes:

Clear[a, b]
(a^2) + (b^2)   /.  {a -> Cos[α], 
        b -> Sin[α]}

Poden fer-se aplicacions succesives de l'operador "/." . Mathematica aplica les substitucions progressivament començant per l'esquerra. Compareu els resultats d'aquestes duess seqüències:

a /. a -> b /. b -> c

a /. b -> c /. a -> b

En el segon cas la primera substitució (anant d'esquerra cap a la dreta) no produeix cap efecte, no més pot produir-lo la segona. En el primer cas produeixen efecte les dues substitucions.

Simplify[] i FullSimpliy[]

Podriem esperar que el resultat de l'operació (a^2) + (b^2)   /.  {a -> Cos[α], 
          b -> Sin[α]} feta anteriorment fora 1 perque la suma dels quadrats del sinus i  del cosinus del mateix angle és la unitat. Aquest resultat s'obté  demanant-li  a Mathematica que simplifique mitjantzant el comandament Simplify[ ]

Simplify[
      (a^2) + (b^2)   /.  {a -> Cos[α], 
          b -> Sin[α]}]

En ocasions Simplify[ ] se'ns  queda curt i pot demanar-se a Mathematica que continue intentant-ho amb més alternatives amb FullSimplify[ ]

Assignacions i substitucions diferides ("delayed"): Operadors " := " i " :> "

En ocasions pot convenir que una assignació o una substitució no siguen efectives fins que no s'execute el comandament on són necessaries. Això es pot aconseguir utilitzant els operadors " := "  i  " :>  "

NOTA: l' operador " :> " també pot escriure's  " :> "

Exemple d'assignació diferida:

Asignem un valor a x

Clear[x]
x = 3

Asignem ara dues expressions, una amb " = " i l'altra amb " := "

ex1 = x^3

ex2 := x^3

Verifiquem ara els valors de ex1 i ex2

ex1

ex2

Ara reassignem x

x = 5

Aram verifiquem de nou els valors de ex1 i ex2

ex1

ex2

Es pot veure que el valor d'ex1 va quedar  fixat pel " = " mentre que el valor d'ex2 "s'adapta", cada volta que s'executa, a la nova assignació d' x. Observeu com l'assignació diferida amb " :> " no va generar "output" mentre que l'assignació ordinària, amb  =, sí el va generar.

Exemple de regla de substitució diferida

NOTA: L'ús de " :> " pot considerar-se una utilitat avançada. Pot ser una bona idea botar-se aquest exemple la primera o les primeres voltes que treballeu aquest document si encara no esteu familiaritzats amb  Mathematica.

La substitució diferida pot ser interessant quan la regla de substitució es un poc complicada. En el exemple que segueix, definim una regla de substitució en forma de funció. Si utilitzem l'operador " -> "  la instrucció Together[ ] inclosa en la regla de substitució s'executa immediatament. Si utilitzem " :> " s'executarà quan  s'aplique amb l'operador  "  /. "

f[u_] -> Together[(1/u) + (1/(u + 1))]

g[u_] :> Together[(1/u) + (1/(u + 1))]

g[r + 1] /. 
      g[u_] :> Together[(1/u) + (1/(u + 1))]

Solució de equacions. El comandament Solve[  ] . L'operador ==

Equacions de 1r, 2n, ... , n-èsim grau

Un polinomi en x , (o forma polinomial en x) que podem notar com P(x), és un conjunt de termes sumats en els que la variable x apareix succesivament elevada a les potències 0, 1, 2,3,...,n. (Poden faltar o no algues d'elles). La potència més alta ens dona l' ordre del polinomi. Els polinomis d'ordre zero son constants. Els d'ordre u, son lineals (corresponen a línies rectes). Els d'ordre dos, son quadràtics (corresponen a paràboles). Els d'ordre 3, cúbics, etc...
El problema algebraic per excelència és la resolució d'equacions de tipus P(x )=0.

NOTA: vegeu que P(x) representa una expressió genèrica. Per aquesta raó, tant l'expressió general  P(x) = a  en la que  "a" és una constant com l'expressió general P(x)=Q(x) (on Q(x) és qualsevol forma polinomial en x),  sempre poden escriure's amb l'expressió genèrica P(x)=0 per que P(x) representa "qualsevol polinomi" i no un polinomi en particular. Per citar un exemple concret, tant
4(x^3)-2x=5(x^2)-6   com  4(x^3)-2x-5(x^2)=6 son expressions que poden escriure's com  4(x^3)-2x-5(x^2)-6=0 i per aixó poden representar-se per P(x) = 0.

El comandament per a resoldre equacions es Solve[ ]. Asi, per a resoldre 4x+7=0 s'escriu

Clear[x]
Solve[4  x + 7 == 0, x] // N

(S'afegeix //N per a obtenir el resultat numéric en forma decimal)

Observeu que 
1) Quan s'escriu l'equació cal utilitzar un doble igual ==  en compte d'un a soles. La raó d'açò es comenta mes endavant.
2) Mathematica dóna el resultat en forma de "regla de substitució" o assignació temporal {x->-1.75}.  Això facilita el seu ús, per exemple, per a verificar que la solució obtinguda és correcta

4  x + 7  /.  x -> -1.75

No és necessari que l'equació estiga en la forma canònica, amb tots els termes agrupats (es a dir, acomplint estrictament la forma P(x)=0). Vegeu aquest exemple:

Equacions linials o de primer grau

Solve[4  x + 3 == -4, x] // N

Solve [6 + 3  x == 2  x + 8  x + 1] // N

Per què cal usar == en lloc de = al comandament Solve?
En una equació, el signe igual NO AFIRMA que el membre de l'esquerra és igual al de la dreta sempre i en qualsevol circumstància . En una equació  la igualtat entre els membres ÉS UNA CONDICIÓ, no és una assignació permanent. Per aixó, Mathematica exigeix que es posen dos signes igual seguits  == .   Es tracta d'un operador de condició. Si es posara un signe = significaria que per qualsevol valor d'x, el membre de l'esquerra és igual al de la dreta. Aixó no és cert en una equació. No més és cert pels valors d'x que resolen l'equació. Aquests valors privilegiats d'x que fan vertadera la CONDICIÓ son les "arrels" o "solucions" de l'equació.  El comandament Solve[ ] és una instrucció que pot interpretar-se com "cerca quins valors de la variable x fan que la condició 
expr1== expr2
 siga vertadera".

Equacions no linials: Vegeu aquests exemples

Solve[a (x^2) + b x + c == 0, x]

Solve[2  x + 3.2  (x^3) - (x^5) == 0, x]

ATENCIÓ: Algunes o totes de les arrels d'una equació no linial poden ser nombres complexos. Si totes les arrels són imaginàries, es diu que l'equació "no té solucions reals". Vegeu l'exemple següent:

Solve[5  (x^2) + 2 x + 3 == 0, x] // N

Aïllar una variable ("Despejar")

Solve[ ] és la funció de Mathematica que ens permet obtindre una variable o constant expressada en funció de tots els demés objectes presents, quan  és possible.

Clear[m, M, R, G]

Solve[F == G (( m M)/(R^2)), G]
Solve[F == G (( m M)/(R^2)), R]

Solve[T == 2  π (Sqrt[ (L/g)]), g]

Solve[(x^2) + x y + (y^2) == 4, x]

Observeu, però, que Solve[ ] té algunes limitacions si es vol usar per a "aïllar". Per exemple, si volem "aïllar" el producte m M en aquest exemple:

Solve[F == G (( m M)/(R^2)), m M]

ens trobem amb un avís d'error:    "General::ivar: m M is not a valid variable".  De vegades, especialment en Física, Química, Enginyeria... és convenient, per raons de notació, agrupar les variables. El procediment recomanat en aquests casos pot ser agrupar prèviament les variables que ens interessen. Per exemple,

Solve[F == G  (mperM/(R^2)),  mperM]

Solve[mperM /. mperM -> m M == ((F (R^2))/G), M ]

OBSERVEU: L'operació de substitució   "/. mperM->m M" s'ha introduït "dins" d'un  membre de la condició  == per a que s'execute abans que Solve[ ].

El procediment que s'ha descrit no sempre és fàcil o còmode d'aplicar. Si en l'eixemple que estem  usant,  ens interessa especialment el quocient M/R, probablement siga millor definir una variable var=M/R  i escriure des de el principi les expressions físiques amb les variables m, var i R en compte de m, M i R.

Altres equacions

Solve permet intentar trobar algunes de les solucions d'equacions trascendents, no purament algebraiques.

Solve[Sin[4  x] == Pi, x]

Solve[y Log[(Sqrt[x ])] == 5, x]

Sistemes de equacions

El comandament Solve[ ] també pot resoldre sistemes d'equacions.

Solve[{3  x + 2  y == -1, 2  x + 5  y == 3}, {x, 
        y}]

En l'eixemple que segueix pot veure's la diferència de resposta entre les solucions exactes i les solucions aproximades que s'obtenen amb   //N

Solve[{3  (x^2) + 2  y == -1, 
        2  x + 5  y == -3}, {x, y}]

Solve[{3  (x^2) + 2  y == -1, 
          2  x + 5  y == -3}, {x, y}] // N

Eliminate[ ]

De la mateixa manera que ocorreix amb el mètode de ressolució de sistemes de equacions per eliminació, el comandament Eliminate[ecuaciones, var] permet eliminar la variable var entre les equacions donades:

Eliminate[{x + y == a, x y == b}, y]

Solució numérica d'equacions

En ocasions, sobre tot al resoldre problemes amb dades físiques, químiques, etc., cal obtenir els valors numèrics de les solucions d'una equació. Mathematica usa per a buscar numèricament les arrels una variant del mètode de Newton-Raphson implementada en el comandament FindRoot[  ] .

Es necessari donar sempre un valor inicial a la variable (aquest fet és comú a tots els mètodes numérics de solució).

g[x_] = 3  (x^2) - (Sqrt[x + 2])

FindRoot[g[x] == 0, {x, -1}]
FindRoot[g[x] == 0, {x, 2. }]

Els valors -1 i 2. indiquen valors inicials. Observeu que valors inicials diferents poden conduir a trobar arrels diferents.

En ocasions és necessari augmentar la precisió amb que treballa Mathematica per obtenir les arrels. Aixó es pot  conseguir afegint opcions al comandament FindRoot[  ]. Les opcions s'afegeixen dins dels corxets i tenen la forma de "regles de reemplaçament" o assignacions temporals:  Opció -> valor

Les opcions requerides en aquest cas son AccuracyGoal i WorkingPrecision.

Clear[g, x]
g[x_] = Sin[8  x] + x
FindRoot[g[x], {x, 0.7}, AccuracyGoal -> 30, 
      WorkingPrecision -> 35]

Representació i ajust de corbes

Representació de llistes de punts

Una llista de punts (x,y) es representa mitjançant la funció ListPlot[  ].
Convé crear una llista de parells de valors {x,y} i donar-li nom.

datos1 = {{2, 4.1}, {4, 6.5}, {7, 10.2}, {8, 12.9}, {10,  
          15.0}}

ListPlot[datos1]

Les opcions següents...              			 permeten...
PlotRange -> {{xmin,xmax},{ymin,ymax}}	: seleccionar l'interval de les x i les y que es vol representar.
PlotJoined->True				: unir els punts representats amb línies rectes
Prolog->AbsolutePointSize[n]			: Representar punts de tamany controlat per n  
PlotStyle ->RGBColor[a,b,c]			: Triar el color dels punts. Per  introduir el color, pot usar-se el menú input:Color Selector

ListPlot[datos1, PlotRange -> {{0, 12}, {-1, 20}}, 
      Prolog -> AbsolutePointSize[5],  
      PlotStyle -> RGBColor[1,  0.489998,  0.149996]]

ListPlot[datos1, PlotRange -> {{0, 12}, {-1, 20}}, 
      PlotJoined -> True]

Representació de funcions: Plot[  ]

Per a representar una o més funcions sobre un intèrval comú de valors de l'abscisa s'usa la funció Plot[ ]. Aquesta funció admet moltes opcions per a canviar diferents aspectes del gràfic que es genera amb les opcions "per defecte" o predefinides en Mathematica.  Es recomana consultar el capítol "Graphics Directives and Options" del "Help Browser" de Mathematica per a obtindre una descripció en detall d'ells.

Son d'ús relativament freqüent, a banda de 
PlotRange -> {{xmin,xmax},{ymin,ymax}}
les opcions 
PlotStyle -> {Thickness[n]}   i   PlotStyle -> {RGBColor[r,g,b]} per a controlar el grossor i el color de les línies.

Plot[Exp[-x], {x, -1, 6}]

Plot[{Exp[-x], Exp[-0.5 x], Exp[-0.1 x]}, {x, -1, 
        6}]

Observeu que Mathematica pot representar situacions de discontinuitat:

Plot[Tan[x Degree], {x, 0, 360}]

Ajust de llistes de punts: Fit[  ] i Regress[ ]

Fit[ ]

Si es vol obtindre una corba contínua que represente el comportament funcional d'un conjunt de punts discrets coneguts (x,y),  pot obtenir-se una funció proporcionada per un  ajust linial per mínims quadrats . Per fer-ho s'usa la funció Fit[ ] .

Clear[datos1]

    datos1 = {{2, 4.1}, {4, 6.5}, {7, 10.2}, {8, 12.9}, {10,  
          15.0}}

    ajuste = Fit[datos1,  {1, x}, x]

NOTES:
1.- Al resultat se li ha donat el nom "ajuste". Observeu que equival a una expressió que depèn de la variable x indicada en el tercer argument de Fit[..., ..., x]
2.-El segon argument de Fit és una llista de funcions: {1,x}. En aquest cas el resultat será una recta que NO pasa per l'origen.
	Altres eixemples serien:  {x}  		: Recta que passa per l'origen
				{1,x,(x^2)}	: Polinomial  quadràtica (paràbola)
				{1,x,(x^2),(x^3)}	: Polinomial cúbica
				 {1,(x^2),(x^3)}	: Polinomial cúbica sense terme lineal.

Es pot representar la funció ajust mitjançant la funció Plot[ ]

grafAjuste = 
      Plot[ajuste,  {x, -3, 15}, 
        PlotRange -> {{0, 12}, {-1, 20}}]

OBSERVEU: podria haver-se definit la funció "ajust" d'aquesta manera

Clear[ajust]
ajust[x_] = Fit[datos1,  {1, x}, x]

Ara pot obtenir-se el valor "ajustat" per qualsevol valor arbitrari de x, inclosos els valors usats en la llista datos1

ajust[5. ]
ajust[8. ]
ajust[16. ]

El valor per x = 5. es un valor INTERPOLAT (correspon a un valor de x comprès entre aquells utilitzats en datos1)
El valor per x=8. ens permet comparar el valor de y "ajustat"  amb el valor de y "usat como dada" en datos1
El valor per x=12. és un valor EXTRAPOLAT (correspon a un valor de x no comprès entre aquells utilitzats en datos1)

Per a representar junts les dades i l'ajust, s'usa la funció de superposar gràfics: show[ ].
Per a fer-ho, és útil repetir el ListPlot[ ] que es va fer abans asignant-lo a un nom

grafDatos = 
      ListPlot[datos1, PlotRange -> {{0, 12}, {-1, 20}}, 
        Prolog -> AbsolutePointSize[5]]

Show [grafAjuste, grafDatos]

Regress[ ]

La funció Fit[ ] dóna com resposta una funció d'ajustament però no dóna dades estadístiques addicionals sobre la qualitat de l'ajustament. Si es necessita més informació sobre la qualitat de l'ajustament deu usar-se la funció Regress[ ], que té la mateixa sintaxi que Fit[ ] . 
ATENCIÓ: Abans d'usar la funció Regress[ ] cal ampliar les capacitats estàndard de Mathematica afegint el "paquet de programes" de regressió. Això es fa amb  el comando   <<Statistics`LinearRegression`  , tal como es mostra a continuació. 
 (La informació sobre els "paquets de programes" que permeten ampliar les capacitats de Mathematica es troba en l'ajuda en línia ("Help browser") baix la denominació anglesa de "Add-ons")

<< Statistics`LinearRegression`

Fit[datos1,  {1, x}, x]    
Regress[datos1,  {1, x}, x]

Alguns resultats de Regress[ ] són: 
  "Estimate" dóna els coeficients de cada térme (comparen-se amb els resultats de Fit [ ]).
SE ("Standard error" de la mostra) pot usar-se com error absolut associado a cada coeficient.
RSquared és el "coeficient de regressió" al quadrat. L'ajust és millor quants més "nous" té.

Derivació i Integració

Derivades parcials i totals

Es necessari recordar que només es pot derivar una funció respecte de les seues variables independients. En funcions d'una variable, no més es pot derivar respecte a aquesta variable.

Mathematica no sap "a priori" quins objectes d'una expressió son variables independents, constants físiques o numériques, paràmetres definits per un problema particular, etc. Per aixó, Mathematica contempla dos operadors per a derivar: la derivada parcial: D[expr, var ] i la derivada total: Dt[expr]. La derivada parcial també pot representar-se como (∂_var) expr (és a dir, derivada de l'expressió expr considerada como una funció de la variable var)

D[Exp[-k x], x]

D[Exp[-k x], k]

D[k (x^2), x]

D[(a/((b^2) + x)), x]

En l'exemple següent derivem respecte a diferents "variables". Mathematica necessita que li indiquem respecte a quina variable volem derivar. La resta d'expressions, llevat que estiguen predefinides per Mathematica, són considerades com constants a efectes de l'operació de derivar.

Clear[f, x, y, b]
f = x y + b (x^2)

D[f, x]
D[f, y]

Vegem ara l'efecte d'una derivació total en una funció

\(\(\(Clear[z, x, y]

    z = \(\(x\)\(\ \)\(y\)\(\ \ \ \)\( (*\ 
          z\ es\ una\ funció\ de\ x\ i\ de\ y\ *) \)\)

    Dt[z]\)\(\ \ \ \ \ \)\( (*\ 
      Calculem\ la\ "derivada total"\ de\ z\ *) \)\)\)

Dt[z]

ATENCIÓ: Observeu que alló que s'ha obtingut amb Dt[z] es allò que es diu  "diferencial de la funció z". Si tenim una funció z=f(x,y), el diferencial de z , dz, es igual a dz=(∂ (z/∂)x) dx + (∂ (z/∂) y) dy.   Mathematica usa el símbol Dt[var] per a indicar el diferencial d'aquesta variable "var" dependent o independent. No sempre es fàcil obtindre  una expressió de dz com la d'abans. El comandament Collect[ ] vist en una secció anterior pot ser útil per obtindre-la. Vegeu aquest eixemple

Clear[f, x, y]
f = (x^3) + Sin[x y]

Dt[f]

Collect[Dt[f], {Dt[x], Dt[y]}]

D[f, x]

D[f, y]

Derivades implícites

En ocasions es necessita calcular la derivada de y respecte d'x existint una relació entre x i y que no està (o no pot posar-se) en la forma y=f(x). Per exemple, siga    (x^2)+x y +(y^2)=4  i volem obtindre ((d y)/(d x)). En aquest cas, se li indica a Mathematica que y depèn de x escrivint " y[x]"  en l'expressió a derivar. Vegeu l'exemple següent

D[(x^2) + x y[x] + (((y[x]))^2), x]

En l' "output" que ens dóna Mathematica apareix l'expressió y'[x] que representa  la solució buscada (vegeu la NOTA mes avall). Per aïllar-la,  resolem l'equació tot igualant a zero usant y'[x] com incògnita. (Podem igualar a zero perque el membre de la dreta en l'expressió que volem derivar, (x^2)+x y +(y^2) = 4 ,  és una constant que val 4 i la seua derivada respecte a qualsevol variable és zero)

Solve[2 x+y[x]+x y'[x]+2 y[x] y'[x]==0,y'[x]]

Observe's que podríem haver derivat l'equació  (x^2)+x y +(y^2) = 4  (recorde's que en el  "input" deu  posar-se == en lloc de =)

D[(x^2) + x y[x] + (((y[x]))^2) == 4, x]

    Solve[%,  y'[x]]

NOTA: Observeu que quan no més n'hi ha una variable, Mathematica reconeix la notació tradicional f'(x) per referir-se a la derivada de f(x) respecte de x.

Integrals

Integral indefinida

Mathematica es capaç de calcular un gran nombre d'integrals. La integració indefinida té llocde forma simbòlica

Clear[x]
fun = a (x^2) + b (Sqrt[x]) + 1/x

Integrate[fun, x]

ATENCIÓ: Mathematica no afegeix pel seu compte la constant indeterminada d'integració que forma part de la solució de tota integral indefinida. Recordeu que en la forma de treballar que usa Mathematica se sol utilitzar no més una expressió cada vegada sense tenir en compte a què puga ser igualada o per a què puga ser utilitzada aquesta expressió per l'usuari. Moltes vegades Mathematica proporciona "només" una o alguna de les respostes possibles. Les respostes sempre són correctes, però poden no ser les úniques. Aquest és un dels cassos en que aixó ocorre.

Integral definida

La integral definida requereix límits d'integració per la variable

Clear[fun, x]
fun = 1/x

(∫_2^7) 
        fun \[DifferentialD]x 
% // N

Integrate[fun,  {x, a, b}]

El càlcul anterior pot donar lloc a una resposta complicada. L'opció  " Assumptions " ajuda a simplificar el resultat 
NOTA: En ocasions, el processat dels casos possibles pot requerir prou temps.

Integrate[fun,  {x, a, b},  
      Assumptions  -> {a  ∈  Reals, b  ∈  Reals, 
          x  ∈  Reals}]

Integrate[(fun^2),  {x, a, b}]

Integrate[fun,  {x, 2, 7}]

Integració numèrica

En ocassions pot interessar dur a terme una integració definida de forma numèrica. El comandament NIntegrate[  ] fa la integració definida de forma numèrica.

NIntegrate[fun,  {x, 2, 7}]

Ecuacions diferencials

El comandament per a resoldre equacions diferencials (aquelles en els termes de les quals apareixen derivades) és DSolve[ ].
Considerarem aquí equacions d'una sola variable.
L'ordre d'una equació diferencial és l'índex de la derivada de major índex que figura en ella. Així  y' = x + 2y  és una equació diferencial de primer ordre, y'' + 2y' +3 y = 0, de segon ordre, etc.   La solució general d'una equació diferencial d'ordre "n" conté "n" constants indeterminades, que Mathematica denota com C[1], C[2], etc. 
El comandament DSolve admet la notació estàndard y, y' , y'' ... però en la forma y[x], y'[x], y''[x]...
En les equacions diferencials deu usar-se el doble igual, ==, tal como es fa en Solve[ ] per a les equacions ordinàries.
Així, l'equació diferencial y' = x + 2y es resol, usant DSolve, de la següent manera. Observe's atentament la notació dels tres arguments de DSolve[ membre_esq == membre_dret, y[var], var]

DSolve[y''[x] == x + 2  y'[x], y[x], x]

Les constants poden determinar-se demanant valors concrets de la funció solució.

DSolve[{y''[x] == x + 2  y'[x], y[0] == 1}, 
      y[x], x]

DSolve[{y''[x] == x + 2  y'[x], y[0] == 1, 
        y[2] == -5}, y[x], 
      x]

DSolve[y''[x] == -a y[x], y[x], 
      x]
DSolve[{y''[x] == -a y[x], y[0] ==  0}, y[x], 
      x]

Una equació diferencial molt senzilla i molt important en ciència és la següent, que correspon a processos cinètics de primer ordre (la velocitat a la qual decreix una població "p" és proporcional al seu valor. "p" pot ser una concentració  molar, una població de nuclis radioactius, una densitat de població d'insectes, etc.) El valor de  "p " en t=0 és (Subscript[𝓅, 0]).

DSolve[{p'[t] == -k p[t], 
        p[0] == (Subscript[𝓅, 0])}, p[t],  t]