fsolve
这个例子展示了如何生成C代码来求解非线性方程组fsolve
.
要解的非线性方程组是
把方程转换成这个形式F(x) = 0.
写一个函数来计算这两个方程的左边。对于代码生成,您的程序必须在创建数组时分配所有数组,并且在创建后不能更改它们的大小。
函数F = root2d(x) F = 0 (2,1);分配返回数组F (1) = exp (exp (- x (x (1) + (2)))) - x (2) * (1 + x (1) ^ 2);F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;结束
编写一个函数来设置问题并调用fsolve
.函数必须引用root2d
作为函数句柄,而不是名称。
函数[x,fval] = solveroot options = optimoptions(“fsolve”,“算法”,“levenberg-marquardt”,“显示”,“关闭”);Fun = @root2d;rng默认的X0 = rand(2,1);[x,fval] = fsolve(fun,x0,options);结束
为代码生成创建配置。在这种情况下,使用墨西哥人的
.
CFG = code .config(墨西哥人的);
为solveroot
函数。
codegen配置cfgsolveroot
通过运行生成的文件来测试生成的代码solveroot_mex.mexw64
或类似的。
[x,fval] = solveroot_mex
X = 0.3532 0.6061 fval = 1.0e-14 * -0.1998 -0.1887
fsolve
|codegen
(MATLAB编码器)|optimoptions