首页 > 编程知识 正文

matlab中normfit,matlab两点间距离函数

时间:2023-05-04 06:14:19 阅读:114604 作者:3258

function [xo,fo]=opt_quadratic(f,x,TolX,TolFun,MaxIter ) ) ) ) ) ) )。

用%三点二次插值法求f(x )的最优解

%输出: xo是取最小值的点fo成为最小的函数值

if nargin 5 %在函数内实际得到输入的变量个数

MaxIter=100; %最大迭代次数默认为100

结束

if nargin 4

TolFun=1e-8; %函数值的误差为1e-8

结束

if nargin 3

TolX=1e-5; %自变量距离误差

结束

根据输入确定3点的初始值,求出对应的函数值

if长度(x ) 2

x012=x(1:3;

else

if长度(x )==2

a=x(1;

b=x(2;

else

a=x-10; b=x 10;

结束

x012=[a(ab )/2 b];

结束

f012=f(x012;

将三点的值初始化

x0=x012(1;

x1=x012(2;

x2=x012(3;

f0=f012(1;

F1=F012(2;

F2=F012(3;

求出取插值二项式最小值时的x3和与其对应的最小值f3

nd=[ F0-F2 f1-f0f2- f1 ] * [ x1 * x1x2* x2x0* x0; ) x1 x2 x0] ) );

x3=nd(1)/2/nd(2) 2;

f3=feval(f,x3 );

判断是否停止反复

ifmaxiter=0|ABS(x3-x1 ) tolx|ABS ) F3-F1 ) TolFun

xo=x3;

fo=f3;

else

根据求出多项式值和区间中的3点的值的大小比较,决定对应的新的3点

1个if x3 x1

if f3 f1

x012=[x0 x3 x1];

f012=[f0 f3 f1];

else

x012=[x3 x1 x2];

f012=[f3 f1 f2];

结束

else

if f3=f1

x012=[x1 x3 x2];

f012=[f1 f3 f2];

else

x012=[x0 x1 x3];

f012=[f0 f1 f3];

结束

结束

进行新的反复

[xo,fo]=opt_quadratic(f,x012,TolX,TolFun,MaxIter-1 );

结束

请说明这个程序。 基本上我明白了,但为什么怎么执行都错了。 你经常出现吗? subscriptindicesmusteitherberealpositiveintegersorlogicals。

Error in==Opt_Quadratic at 25

f012=f(x012; 以及f3=feval(f,x3 ); Error using==feval

argumentmustcontainastringorfunction _ handle。

有人能帮我吗?loveliness:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。