Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Mathematica PDF
Programacion Mathematica PDF
Qu es Mathematica?
Integra mltiples funciones para el tratamiento de diversas reas, tales como: clculo diferencial e
integral, lgebra lineal, teora de nmeros y estadstica
Clase 1-2.nb 3
Por qu es importante?
Simplify3 x + 4 y + 2 x + y - 5 x y + 10 x + x^3 + 10 x y
(6 x2 - 10) 6 x2 - 6 x + 12 8 x^2 + 12 x - 20
Simplify + -
2 -6 4
Expand
Expand[
8 p^3 q ^4 r^5 (4 p^2 q ^3 - 3 q ^5 r^6) - 4 p^3 q ^7 r^4 (8 p^2 r - 3 p^3 q - 6 q ^2 r^7)]
Expand[(1 - x)^10]
6 Clase 1-2.nb
6 x^3 + 3 x^2 - 24 x - 9
Apart
2x-3
P[x_] := (1 - x)^1000
Coefficient[P[x], x, 1000]
Factor
Factor[x (a + b + c) - y (a + b + c)]
Factor[-3 d p + p^2 + 6 d q - 2 p q + 3 d x - p x]
Factor[12 x^(2 m) - 7 x^ m - 12]
Factor[x^3 + 4 x^2 b + 4 x b^2 - 2 x^2 - 4 x b]
Clear[i]
For[i = 1, i 10, Print[Factor[x^2 - i]]; i++]
8 Clase 1-2.nb
Para resolver operaciones con expresiones algebraicas fraccionarias, se utilizan los comandos Simplify,
FullSimplify, Factor y Together.
2 d ^2 - d v - v^2 8 d ^2 + 6 d v - 9 v^2
Simplify *
4 d ^2 - 4 d v + v^2 4 d ^2 - 9 v^2
Factor[%]
b 1 2
Together - -
b^2 - b - 2 b^2 + 5 b - 14 b^2 + 8 b + 7
a+5 3 a^2-a
2- a^2 -
a+2 a+2
Together +
a^2 - 1 a^3 + 1
Evaluando expresiones
1
1 1+
x
FullSimplify1 + 1+1/x 1+1/x 1+ /. x 1 + y^2
x x
1
1 1+
x
Together1 + 1+1/x 1+1/x 1+ /. x 1 + y^2
x x
1
1 1+
x
Together1 + 1+1/x 1+1/x 1+ /. {x 1 + y^2, z 10}
x z
FullSimplify
1
1 1+
x
1+ 1+1/x 1+1/x 1+ /. {{x 1 + y^2}, {x 100}, {x -2}}
x x
10 Clase 1-2.nb
Ecuaciones e inecuaciones
3x 1 1
Roots4 - - (4 x + 12) 4, x
4 2 2
a ya
Solve + y^2 x + , a
2y 2x
NSolve[10 x^2 + 59 x + 62 0, x]
Solve a^2 + 4 a + 1 - 2 a + 4 0, a
Reduce a^2 + 4 a + 1 - 2 a + 4 0, a
Reduce[Abs[t + 3] < 4 , t]
a^2 - 3 a - 1
ReduceAbs 3, a, Reals
a^2 + a + 1
2r-1 1
A[r_] = ; A[3], A , A[-1], SimplifyAx2 + 1
r^2 + 2 r - 3 2
ClearAll[f, g]
f[x_] = 2 x2 ; g[x_] = x2 - 5 x + 6;
Suma[x_] = Simplify[f[x] + g[x]], Resta[x_] = Simplify[f[x] - g[x]],
f[x]
Producto[x_] = Simplify[f[x] * g[x]], Divi[x_] = Simplify ,
g[x]
Composition[f, g][x], f[g[x]], Composition[g, f][x], g[f[x]]
H[x_ /; x > 0] = x;
H[x_ /; x 0] = x3 ;
{H[1], H[-4]}
G[x_] := Ifx > 0, x, x3
{G[1], G[-4]}
Clase 1-2.nb 13
Binomial[3, 2]
Forma de resolucin:
y2 - y1
pen[x1_, y1_, x2_, y2_] = ;
x2 - x1
bb[x1_, y1_, x2_, y2_] = y1 - pen[x1, y1, x2, y2] * x1;
y[x_] = pen[6, 12, 0, -6] * x + bb[6, 12, 0, -6];
If[y[1] -3, Print[True], Print[False]]
Segunda sesin
Clase 1-2.nb 15
x
Plot , x2 , {x, -4, 4}, PlotRange {-1, 4}
x2 +1
g[x_ /; x 0] = x2 ;
g[x_ /; x > 0] = -x;
Plot[g[x], {x, -5, 5}]
O bien:
1
Plot , {x, -3, 3}
x+1
Solve[3 x + a y 9, y]
3
Solve- pen[7, -2, 5, -1], a
a
Clear[x, y];
y = 30 - x;
Ppro[x_] = x2 y3 ;
Plot[Ppro[x], {x, 0, 31}]
Table[{i, Ppro[i]}, {i, 11, 13, 0.1}]
Clear[x, y];
3
Solve-4 2 x + 10 y, x
% /. {x y, y x}
f[x_] = x2 Sin[x];
f[x + h] - f[x]
ExpandLimit , h 0
h
D[f[x], x]
-1 es a la derecha y 1 a la izquierda.
1+ x + 1
Simplifyx,x,x
1 + x2
18 Clase 1-2.nb
7 x2 7 x4 6 x5
f[x_] = 6 x - - 12 x3 + + ;
2 4 5
v = Solve[D[f[x], x] 0, x]
P = {};
Fori = 1, i Length[v], P = P {{x /. v[[i, 1]], f[x] /. v[[i, 1]]}}; i++
Print["Los puntos estacionarios son: ", P];
Sin[x] - x
f[x_] = ;
x3
While((Numerator[f[x]] /. x 0) 0) && ((Denominator[f[x]] /. x 0) 0),
D[Numerator[f[x]], x]
f[x_] = Together ; Print[f[x]];
D[Denominator[f[x]], x]
Print[f[0]]
ClearAll[F];
F[n_] := F[n - 1] + F[n - 2]
F[1] = 1;
F[2] = 1;
Table[{i, F[i]}, {i, 1, 10, 1}]
O bien:
Variables en Mathematica
Lectura individual hasta la diapositiva 37 (incluida)
No se declaran.
Booleano (bool): para almacenar datos cuyo valor es verdadero (true) o false (false)
20 Clase 1-2.nb
Identificadores en Mathematica
Son una secuencia de caracteres que permiten identificar de forma nica a cada elemento/objeto de un
algoritmo (variables o constantes)
Pueden tener cualquier longitud dentro del lmite que imponga el compilador
Las palabras reservadas (tales como if, while, for, do, else, entre otras) del lenguaje no pueden utilizarse
como identificadores
Es case sensitive
22 Clase 1-2.nb
Operadores en Mathematica
Operadores aritmticos
Operadores relacionales
Operadores lgicos
Clase 1-2.nb 23
Los programadores tiene dos maneras para hacer que los programas almacenen datos en memoria, ellos
son:
La operacin de lectura: se utiliza en los programas para ordenarle al computador que debe detener la
realizacin del programa y esperar a que se digite el dato por el teclado. Por ejemplo en Mathematica:
nombreCiudad=Input["Digite el nombre de la ciudad"]; edad=Input["Digite la edad"]; salario=Input["Digite
el salario"];
24 Clase 1-2.nb
+ = : suma al valor de la variable de la izquierda el valor que se encuentra a la derecha, por ejemplo:
p+=10; es equivalente a p = p+10;
- = : resta al valor de la variable de la izquierda el valor que se encuentra a la derecha, por ejemplo: p-
=10; es equivalente a p = p-10;
*= : multiplica al valor de la variable de la izquierda el valor que se encuentra a la derecha, por ejemplo:
p*=10; es equivalente a p = p*10;
/ = : divide al valor de la variable de la izquierda el valor que se encuentra a la derecha, por ejemplo:
p/=10; es equivalente a p = p/10;
p = 1;
p += 10
p -= 10
p *= 20
p / 11 // N
Clase 1-2.nb 25
Operadores ++ y --
Operadores aritmticos
Clase 1-2.nb 27
Orden de prioridad
Primera + o unitario y ^
Segunda *, /, Mod
Tercera +, -
Operadores relacionales
Se utilizan para establecer una relacin entre dos valores, devolviendo un valor lgico
Operadores lgicos
H = 6; J = 12;
(H > 0) && (J > 10)
(H > 25) || (H < 50) && (J < 50)
(H < 4) || (J > 5)
Not[H > 6]
32 Clase 1-2.nb
Estructuras de control
En Mathematica un algoritmo puede ser escrito con tres estructuras de control bsicas:
Secuenciales
Selectivas o condicionales
Repetitivas o de ciclo
Clase 1-2.nb 33
Estructura secuencial
Las estructuras secuenciales son aquellas en las que una accin o instruccin sigue a otra en secuencia
(la salida de una es la entrada de la siguiente). Es decir:
{ accin 1;
accin 2;
}
34 Clase 1-2.nb
Son aquellas en las que se evala una condicin y en funcin del resultado se realiza una operacin
Se utilizan para tomar decisiones lgicas y se suelen denominar estructuras de decisin o alternativas
A esta estructura de control se denomina instruccin If, su sintaxis en Mathematica 5.0 es la siguiente:
If [condicin, accin 1; ; accin n;]
Por ejemplo:
Permite elegir entre dos opciones o alternativas posibles en funcin del cumplimiento de una determi-
nada condicin. Su sintaxis se presenta a continuacin:
If [condicin, accin 1; ; accin n, accin 1; ; accin m;]
Por ejemplo:
x = 32;
Switch[Mod[x, 3], 0, x = x + 1, 1, x = x + 2, 2, x = x + 3]
35
38 Clase 1-2.nb
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es necesario utilizar un mismo
conjunto de acciones que se puedan ejecutar una cantidad especfica de veces
Mathematica posee tres tipos de estructuras repetitivas que estudiaremos: While, Do y For
40 Clase 1-2.nb
Instruccin While
i = 1;
While[i 10, Print[Prime[i]]; i++]
Clase 1-2.nb 41
Instruccin Do
Esta instruccin iterativa ejecuta reiterativamente una instruccin dada una variacin del o los parmet -
ros de los cules la instruccin depende. Su sintaxis se describe a continuacin:
Do [instrucciones, {parmetro, inicio, final}];
Instruccin For
Ejemplo 1
Ejemplo 2
Disee un algoritmo que resuelva el siguiente problema: suponga que un individuo quiere invertir su capital
en un banco y desea saber cuanto dinero ganar despus de un mes si el banco paga a razn de 2%
mensual
Ejemplo 3
Disee un algoritmo que resuelva el siguiente problema: un vendedor recibe un sueldo base ms un 10%
extra por comisin de sus ventas, el vendedor desea saber cunto dinero obtendr por concepto de
comisiones por las tres ventas que realiza en el mes y el total que recibir en el mes tomando en cuenta
su sueldo base y comisiones
Ejemplo 4
Disee un mtodo que reciba un nmero y devuelva true si el nmero es positivo o false sino
Ejemplo 5
Disee un mtodo que determine las soluciones a una ecuacin de primer grado a X + b = 0
Tercera sesin
48 Clase 1-2.nb
Ejemplo 6
Disee un mtodo que reciba las longitudes de los tres lados de un tringulo y determine si es equiltero,
issceles o escaleno
Ejemplo 7
Disee un mtodo que reciba tres nmeros enteros y devuelva el mayor de ellos
Ejemplo 8
Ejemplo 9
Disee un mtodo Cal a travs del cual se implementen las cuatro operaciones aritmticas bsicas:
suma, resta, multiplicacin y divisin entera. Los datos de entrada para el mtodo Cal sern los dos
operandos seguidos del operador, este ltimo representado por un valor de tipo char (+, -, * y / respecti-
vamente)
Cal[o1_, o2_, o_] := Switch[o, "+", Print[o1 + o2], "-", Print[o1 - o2], "*",
Print[o1 * o2], "/", If[o2 0, Print[o1 / o2], Print["Indefinido"]]]
Cal[4, 1, "+"]
Cal[4, 1, "-"]
Cal[4, 2, "*"]
Cal[4, 0, "/"]
52 Clase 1-2.nb
Ejemplo 10
Disee un mtodo que calcule la media aritmtica de una lista de N nmeros positivos
con = 1;
suma = 0;
Prom[ n_] := While [con <= n, num = Input["Digite el valor"];
While[num 0, num = Input["Digite el valor"]];
suma = suma + num;
If[con == n, Print[N[suma / n]]];
con = con + 1]
Prom[3]
con = 1;
suma = 0;
Prom[ L_List] := While [con <= Length[L], suma = suma + L[[con]];
If[con == Length[L], Print[N[suma / Length[L]]]]; con = con + 1]
L = {1, 2, 3, 4, 5, 6, 7, 8};
Prom[L]
Prom[ L_List] =
Module[{con = 1, suma = 0}, While [con <= Length[L], suma = suma + L[[con]];
If[con == Length[L], Print[N[suma / Length[L]]]]; con = con + 1]];
L = {1, 2, 3, 4, 5, 6, 7, 8};
Prom[L]
Clase 1-2.nb 53
Ejemplo 11
Escriba un mtodo que reciba dos valores m y n e imprima todos los dgitos pares mayores o iguales que
n y menores que m
Ejemplo 12
Escriba un mtodo DivN que reciba un nmero entero n y escriba todos sus divisores
O bien:
Div[n_] := Divisors[Floor[n]]
Div[10.6]
{1, 2, 5, 10}
Ejemplo 13
Ejemplo 14
Disee un mtodo que reciba dos nmeros y determine si son amigos. Dos nmeros son amigos si cada
uno de ellos es igual a la suma de los divisores del otro, excluyendo al nmero
Ejemplo 15
Nmeros defectivos (1): la suma de los divisores propios es menor que el nmero
Nmeros abundantes (2): la suma de los divisores propios es mayor que el nmero
TipNum[ N_] :=
Module[{S = 0, i = 1}, While [i <= N / 2, If [ Mod[N , i] == 0, S = S + i;] ;
i ++;
If[i > N / 2, If[S > N, Return[2], If[S < N, Return[1], Return[3]]]]]]
TipNum[10]
Cuarta sesin
58 Clase 1-2.nb
Ejemplo 16
P0 = 1
P1 = x
Donde n = 2,3,4,.... y x es un nmero real, que se encuentra entre -1 y 1. Escribir un mtodo que reciba
como parmetros de entrada n y x genere el Pn correspondiente, no se ocupe de validar x
Legendr[x_, n_] := Module[{i = 2}, While [i <= n, If[i == 2, pn2 = 1; pn1 = x;] ;
pn = ((2 * i - 1) / i) * x * pn1 - (( i - 1) / i) * pn2; pn2 = pn1; pn1 = pn;
i++;
If[i == n, Return[pn]]]]
Legendr[2, 5]
443
8
Clase 1-2.nb 59
Ejemplo 17
Disee un mtodo que dadas dos circunferencias (con centros en coordenadas x, y y su radio) calcule
cuntos puntos en comn tienen dichas circunferencias (uno, ninguno, dos o infinitos puntos)
Ejemplo 18
M = {{}};
H = {{}};
n = 2;
While[n 10, For[i = 1, i <= n, For[j = 1, j <= n,
If[i j, H = Insert[H, 2 i, {1, j}]]; If[i < j, H = Insert[H, 1, {1, j}]];
If[i > j, H = Insert[H, 0, {1, j}]];
j++]; If[i 1, M = H];
If [i != 1, M = Join[M, H]];
H = {{}}; i++];
Print[Tr[M]]; n++]
Clase 1-2.nb 61
Ejemplo 19
Jordan-Gauss:
2 1 3 4 2 1 0 0 0 0
1 2 3 -1 4 0 1 0 0 0
T= 2 3 2 1 4 0 0 1 0 0 ;
5 -1 3 2 6 0 0 0 1 0
3 1 0 -5 2 0 0 0 0 1
1
Forj = 1, j 5, Fori = 1, i 5, Ifi j, T[[i]] = * T[[i]];
T[[i, j]]
1
Ifi j, T[[i]] = T[[i]] - T[[i, j]] * * T[[j]];
T[[j, j]]
Print[MatrixForm[T]]; i++;
j++; If [j 6, Print[MatrixForm[T]]]
Por cofactores:
62 Clase 1-2.nb
2 1 3 4 2
1 2 3 -1 4
T= 2 3 2 1 4 ;
5 -1 3 2 6
3 1 0 -5 2
0 0 0 0 0
0 0 0 0 0
NADJ = 0 0 0 0 0 ;
0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0 0
M= ;
0 0 0 0
0 0 0 0
u = 1;
l = 1;
Fori = 1, i 5, Forj = 1, j 5, For[h = 1, h 5,
For[k = 1, k 5, If [h i && k j, M = ReplacePart[M, T[[h, k]], {u, l}];
If [u 4, l++]; If[l 5, u++; l = 1]]; k++]; h++];
u = 1; l = 1;
NADJ = ReplacePartNADJ, (-1)i+j Det[M], {i, j}; j++;
1
i++; If i 6, PrintMatrixForm Transpose[NADJ]
Det[T]
Clase 1-2.nb 63
Ejemplo 20
M = {{}};
H = {{}};
n = 2;
While[n 10,
For[i = 1, i <= n, For[j = 1, j <= n, If[i + j == n + 1, H = Insert[H, 1, {1, j}]];
If[i + j != n + 1, H = Insert[H, 0, {1, j}]];
j++]; Print[H];
If[i 1, M = H];
If [i != 1, M = Join[M, H]];
H = {{}}; i++];
Print[Det[M], " +++++ ", M // MatrixForm]; n++]
64 Clase 1-2.nb
Ejemplo 21
M = {{}};
H = {{}};
n = 2;
While[n 10, If[Mod[n, 2] 0,
For[i = 1, i <= n, For[j = 1, j <= n, If[i == j, H = Insert[H, , {1, j}]];
If[i + j == n + 1, H = Insert[H, , {1, j}]];
If[i + j != n + 1 && i j, H = Insert[H, 0, {1, j}]]; j++];
If[i 1, M = H];
If [i != 1, M = Join[M, H]];
H = {{}}; i++];
Print[Factor[Det[M]]]]; n++]