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.
- fzero: Encuentra las raíces de una función no lineal (una ecuación)
- fsolve: soluciona el sistema de varias ecuaciones no lineales.
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:
- x: Es la raíz encontrada por la función fzero (resultado)
- función: Ecuación NO LINEAL en formato: función anónima o función definida.
- x0: Punto inicial o Intervalo con cambio de signo
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
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:
- x: es el resultado de la solución del sistema de ecuaciones no lineal
- función: Ecuación NO LINEAL en formato: función anónima o función definida.
- x0: Punto inicial, vector con el mismo número de incógnitas.
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.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.