Icono del sitio Control Automático Educación

Resolver Ecuaciones No Lineales en Matlab

Sistema de Ecuaciones No Lineales

En esta entrada va a aprender detalladamente como Resolver Ecuaciones No Lineales en Matlab, podrás ver vários ejemplos y descargar los códigos para que lo pongas en práctica.

Antes de comenzar, te invito a que le des un vistazo a nuestro curso gratuito de Matlab para ingenieros desde cero.

Y que te suscribas al canal si deseas seguir aprendiendo a programar en este potente software de ingeniería.

Ecuaciones No Lineales en Matlab

Matlab nos permite solucionar ecuaciones no lineales de una forma muy simple de forma numérica.

Si nos enfrentamos a un problema que sea NO lineal (o sea que hayan operaciones entre las variables como: x^2,sin⁡(x), xy, e^z) Podemos recurrir al comando fzero o fsolve.

Raíces de Ecuaciones No Lineales en Matlab

El comando fzero es utilizado para encontrar la raíz de una ecuación no lineal más cercana del punto inicial establecido.

Esta función también permite encontrar dicha raíz dentro de un intervalo preestablecido, siempre y cuando ese intervalo presente un cambio de signo.

La sintaxis de la función fzero en matlab es la siguiente:

x = fzero(@(x)función, x0);

Donde:

Es importante destacar que este comando, como su nombre lo indica, solo consigue detectar el punto por donde la ecuación matemática pasa por el origen.

Ejemplo de fzero en Matlab

Resolver los dos siguientes ejemplos usando el fzero. El segundo ejemplo por ser un polinomio, puede usarse directamente la función roots.

Solución 1

clc
clear
close all

%Crea la función anónima con la ecuación no lineal
fa1 = @(x) x.^2 + 2*log(x) - cos(x) - 5;

%Creo un vector x linealmente espaciado
x = linspace(0.01,3,100);
%Evaluo la función
y = fa1(x);

%Creo un vector x linealmente espaciado
x = linspace(0.01,3,100);
%Evaluo la función
y = fa1(x);

plot(x,y),grid

x0 = 1; %punto inicial
x = fzero(fa1,x0)

Solución 2

clc
clear
close all

%Creo un vector x linealmente espaciado
x = linspace(-6.1,5.1,100);
%Evaluo la función
y = f(x);

x0 = 1; %punto inicial
x = fzero(@f,x0)

%Solución cuando es un polinomio no lineal
roots([1 3 -41 -87 400 444 -720])


function y = f(x)
    y = x.^6+3*x.^5-41*x.^4-87*x.^3+400*x.^2+444*x-720;
end
Numeros Complejos en Matlab
Formato de Salida en MATLAB

Resolver Sistema de Ecuaciones No Lineales en Matlab

La forma típica de organizar este sistema de ecuaciones no lineales, es igualar cada una de las ecuaciones a cero, dejando el sistema de la siguiente forma:

f(x)=0

Cada una de las incógnitas o variables de la ecuación, deberán ser almacenadas en un vector.

Por ejemplo, si se tiene el siguiente sistema:

3𝑥^2+3𝑦^2−2𝑧=4\\𝑥𝑦+𝑧=2\\𝑥+𝑦−2𝑧=−3

Se iguala todo a cero:

3𝑥^2+3𝑦^2−2𝑧−4=0\\𝑥𝑦+𝑧−2=0\\𝑥+𝑦−2𝑧+3=0

Las incógnitas x, y, z se asignan en un vector de nombre cualquiera dentro de matlab. Por ejemplo un vector llamado x:

x=\begin{bmatrix}
x\\ 
y\\ 
z
\end{bmatrix}\rightarrow 
\begin{matrix}
x(1)\\ 
x(2)\\ 
x(3)
\end{matrix}

Sustituimos en la ecuación original, para poder hacer que matlab consiga solucionar el sistema de ecuaciones no lineales.

3𝑥(1)^2+3𝑥(2)^2−2𝑥(3)−4=0\\𝑥(1)𝑥(2)+𝑥(3)−2=0\\𝑥(1)+𝑥(2)−2𝑥(3)+3=0

fsolve en Matlab

La sintaxis de la función fsolve es:

x = fsolve(@(x)función, x0);

Donde:

Ejemplo fsolve en Matlab

Solucionar el siguiente sistema de ecuaciones no lineales:

3x_1 - cos(x_2x_3)-\frac{1}{2}=0
x_1^2-625x_2^2=0
e^{-x_1x_2}+20x_3=-\frac{10\pi-3}{3}
clc
clear
close all

%Función Anónima
F = @(x) [3*x(1)-cos(x(2)*x(3))-1/2;
         x(1)^2-625*x(2)^2;
         exp(-x(1)*x(2))+20*x(3)+(10*pi - 3)/3];
     
     
%Solución del sistema de ecuaciones no lineales
x0 = [0;0;0]; %Condicion Inicial

x = fsolve(F,x0)

x = fsolve(@fun,x0)
     

%Usando función definida
function y = fun(x)
    %Se escriben las 3 ecuaciones no lineales
    e1 = 3*x(1)-cos(x(2)*x(3))-1/2;
    e2 = x(1)^2-625*x(2)^2;
    e3 = exp(-x(1)*x(2))+20*x(3)+(10*pi - 3)/3;
    
    %Concatena las 3 ecuaciones en el vector de salida
    y=[e1,e2,e3];
end

Descargar Códigos


Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.

Citar este Artículo

📌 Selecciona el formato:
Giraldo, S. A. C. (2021). Resolver Ecuaciones No Lineales en Matlab. Control Automático Educación. https://controlautomaticoeducacion.com/matlab/ecuaciones-no-lineales/
Salir de la versión móvil