matlab fsolve()函数的使用
fsolve()函数通常用于数值求方程或方程组的解,更常用于求解非线性方程组。其基本结构如下:(可以在matlab命令页面输入help fsolve查询)fsolve()解决的方程形式为F(X)=0;用法为:X = fsolve(FUN,X0,OPTIONS)或者写为[x,fval,exitflag]=fsolve(fun,x0,options)其中f...
fsolve()函数通常用于数值求方程或方程组的解,更常用于求解非线性方程组。其基本结构如下:(可以在matlab命令页面输入help fsolve查询)
X = fsolve(FUN,X0,OPTIONS)
[x,fval,exitflag]=fsolve(fun,x0,options)
x=fsolve(@(x)sin(x)-0.5,[1 3])%此处采用匿名函数法@(x)
其中1和3分别是设定的两个初值,一般设定在解附近,若不知道
解,也可随意设置,如果解不知最优,会有一定影响.options不填则默认。其中@(x)sin(x)-0.5也可以写为'sin(x)-0.5'
结果如下:
x =
0.5236 2.6180%可见结果尽量给出初值上最近的值,前后俩个分别对应初值1和3
x =
0.5236 2.6180
[x,fval,exitflag]=fsolve(@myfun,[1 3 8 9])%设定了四个初值,其中@myfun也可以用'myfun' 则会给出偏差值fval,以及exitflag的值,结果如下:
x =
0.5236 2.6180 8.9012 8.9012
fval =
1.0e-09 *
-0.1387 -0.0000 -0.0000 -0.0000
exitflag =
1
>> x=fsolve(@(x)sin(x)-0.5,[1 3])
其中fval为真实值与拟合值之间的差,从结果来看是非常理想的。
function F = myfun(x,c)
F = [ 2*x(1) - x(2) - exp(c*x(1))-x(1) + 2*x(2) - exp(c*x(2))];
x =
0.5671
0.5671
fval =
-1.0640e-08
exitflag =
1
function F = myfun(x,c)
F = [ 16*x(1)+c*x(2)];
c = -1; % define parameter first
[x,fval,exitflag] = fsolve(@(x) myfun(x,c),[-5;-5])
x =
-0.3307
-5.2918
fval =
-4.4409e-15
exitflag =
1
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐
所有评论(0)