fsolve
这个例子展示了如何生成C代码来求解非线性方程组fsolve
.
要解的非线性方程组为
把方程转换成这种形式F(x) = 0.
写一个函数,计算这两个方程的左边。对于代码生成,程序必须在创建所有数组时分配它们,并且在创建后不能更改它们的大小。
函数F = root2d(x);%分配返回数组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
|optimoptions
|codegen
(MATLAB编码器)