Generar código para fsolve
Este ejemplo muestra cómo generar código C para resolver sistemas de ecuaciones no lineales con fsolve
.
Ecuación que se desea resolver
El sistema de ecuaciones no lineales que se desea resolver es
Convierta las ecuaciones al formato F(x) = 0.
Pasos de generación de código
Escriba una función que calcule el lado izquierdo de las dos ecuaciones. Para la generación de código, el programa debe asignar todos los arreglos cuando se crean y no debe cambiar sus tamaños después de su creación.
function F = root2d(x) F = zeros(2,1); % Allocate return array F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2); F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5; end
Escriba una función que configure el problema y llame a
fsolve
. La función debe referirse aroot2d
como un identificador de función, no como un nombre.function [x,fval] = solveroot options = optimoptions('fsolve','Algorithm','levenberg-marquardt','Display','off'); fun = @root2d; rng default x0 = rand(2,1); [x,fval] = fsolve(fun,x0,options); end
Cree una configuración para la generación de código. En este caso, utilice
'mex'
.cfg = coder.config('mex');
Genere código para la función
solveroot
.codegen -config cfg solveroot
Pruebe el código generado ejecutando el archivo generado, que se llama
solveroot_mex.mexw64
o similar.[x,fval] = solveroot_mex
x = 0.3532 0.6061 fval = 1.0e-14 * -0.1998 -0.1887
Consulte también
fsolve
| codegen
(MATLAB Coder) | optimoptions