Mostrando las entradas con la etiqueta Matemáticas Básicas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Matemáticas Básicas. Mostrar todas las entradas

martes, 9 de agosto de 2016

Resolver ecuaciones e inecuaciones algebraicas


Una ecuación es una igualdad matemática entre dos expresiones algebraicas en las que aparecen valores conocidos y una variable desconocida (incógnita), relacionados mediante operaciones matemáticas básicas, ejemplos de ecuaciones se muestran a continuación:

$$ 3x^2 + 2x - 2 = 0 $$

$$ x+\frac{3}{7}=2 $$

$$ \cos(x)+sin(\frac{\pi}{2})=0 $$

Las ecuaciones algebraicas sirven para modelar situaciones poco complejas pero que requieren el uso de la herramienta matemática para obtener una solución satisfactoria. Existen diversos métodos para resolver ecuaciones, los cuales se aplican dependiendo del tipo de ecuación, incluso hay fórmulas establecidas para algunos tipos de ecuaciones que minimizan el esfuerzo de cálculo.

MATLAB dispone de la función solve perteneciente al Symbolic Math Toolbox, la cual permite resolver ecuaciones, inecuaciones y sistemas de ecuaciones; la sintaxis general de la función solve es:

solve(ec, var);

Donde ec es una ecuación algebraica definida usando variables simbólicas y var es la incógnita respecto a la cual se resuelve la ecuación dada.

A manera de ejemplo se resolverá la siguiente ecuación lineal

$$ x+3=2 $$


>> x=sym('x');
>> solve(x+3==2,x)
ans =
-1

Es importante hacer mención que para especificar una igualdad se utilizan dos signos, dado que un sólo signo hace referencia a una asignación.

Si no se especifica el segundo miembro de la igualdad, MATLAB asumirá que la expresión estará igualada a cero, es decir, para resolver la ecuación:

$$ x^2 - 2x - 1 = 0 $$

Puede hacerlo de las diversas formas que enseguida se muestran:

>> solve(x^2-2*x-1==0,x)
ans =
 2^(1/2) + 1
 1 - 2^(1/2)
>> solve(x^2-2*x-1,x)
ans =
 2^(1/2) + 1
 1 - 2^(1/2)
>> solve(x^2-2*x-1)
ans =
 2^(1/2) + 1
 1 - 2^(1/2)

Para resolver desigualdades o inecuaciones la sintaxis es prácticamente la misma, claro, sólo hay que utilizar los operadores relacionales mayor que o menor que en lugar del signo de igualdad. Por ejemplo, resolviendo la siguiente desigualdad

$$  x+2>10 $$

>> solve(x+2>10,x)
ans =
Dom::Interval(8, Inf)

MATLAB devuelve el intervalo solución para la inecuación, en este caso $ (8,\infty) $. Para el caso de un intervalo cerrado MATLAB devuelve entre corchetes el valor del límite correspondiente, por ejemplo:

>> solve(x+2>=10,x)
ans =
Dom::Interval([8], Inf)

Un sistema de ecuaciones se compone de dos o más ecuaciones y un número equivalente de valores desconocidos, es posible resolver sistemas de ecuaciones utilizando también la función solve con la sintaxis siguiente:

solve(ec1,ec2,ec3,…)

Un ejemplo, resolver el siguiente sistema de ecuaciones:

x + y = 4

x − y = 3

>> syms x y
>> sol=solve(x+y==4,x-y==3)
sol = 
    x: [1x1 sym]
    y: [1x1 sym]

Para visualizar los resultados puede acceder a los campos de cada variable como se muestra enseguida:

>> sol.x 
ans =
7/2
>> sol.y
ans =
1/2

miércoles, 28 de mayo de 2014

Números primos en MATLAB


Un número primo es un entero mayor a uno que únicamente tiene dos divisores: la unidad y el número mismo. A excepción del 2, el resto de número primos son impares.

MATLAB dispone de la función nativa isprime para determinar si un número es primo, devolviendo un valor lógico verdadero en caso de serlo y falso en caso contrario. Por ejemplo:

>> isprime(11)

ans =

     1

Ahora, la idea es crear por nosotros mismos un algoritmo sencillo que determine si un número es primo. Para ello optaremos por hacer lo siguiente: sea $n$ el número a verificar, entonces crearemos un vector cuyos términos sean todos los enteros positivos en el intervalo $[1,n]$, enseguida mediante una sentencia de control if verificar mediante la función rem si cada uno de los componentes del vector es divisor de $n$, recuerde que rem devuelve un cero si el segundo argumento es divisor del primero y un número mayor a cero si no lo es. Véase el código resultante de lo que se ha descrito:

n=input('Introduzca un número: ');
L=1:n;
ifnnz(rem(n,L)==0)==2
    disp('Número primo');
else
    disp('Número no primo');
end


lunes, 12 de mayo de 2014

Sucesión de Fibonacci en MATLAB


La sucesión de Fibonacci es una sucesión infinita de números naturales, cuyos términos resultan de la suma de los dos términos anteriores. Los primeros dos términos son 1 y 1, y enseguida el resto siguen el patrón descrito con anterioridad, así, algunos de los primeros términos se muestran enseguida:

$$1,1,2,3,5,8,13,21,34,55,...$$

Luego, cada término de la sucesión se calcula bajo la siguiente especificación: $f_i=f_{i-1}+f_{i-2}$. La implementación en MATLAB resulta muy sencilla, primero definiéndose los dos primeros términos y enseguida concatenar los que siguen el patrón mencionado mediante un bucle. Un código de ejemplo se muestra a continuación:

n=input('¿Cuántos términos necesita? ');
F=[1 1]; % Primeros dos términos de la sucesión
for i=3:n
    F=[F F(i-1)+F(i-2)];
end
disp(F);







viernes, 20 de septiembre de 2013

Factorial de un número


MATLAB dispone de una función propia para calcular el factorial de un número, la cual es nombrada propiamente como factorial.

Ahora veremos dos maneras de cómo implementar nuestra propia función que calcule el factorial de un número entero dado.

function x=ffactorial(N)
if N<0
    error('Ingrese un entero positivo');
end
k=1;
x=1;
while k<=N
    x=k*x;
    k=k+1;
end
end


function x = mifact(N)
if N<0
    error('Ingrese un entero positivo');
end
if N==0
    x=1;
else
    x=N*mifact(N-1);
end
end

Cómo puede observarse la forma de proceder es un tanto diferente. La segunda función implica la aplicación de un concepto básico y muy útil en  programación, la recursividad, que implica un llamado a la función misma dentro del cuerpo de ésta.