生成的代码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”,“显示”,“关闭”);有趣= @root2d;rng默认的x0 =兰德(2,1);[x, fval] = fsolve(有趣,x0,选项);结束
为代码生成创建一个配置。在这种情况下,使用
墨西哥人的
.cfg = coder.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