以下内容由论坛超级版主dsj6700417在Matlab教学实验中,学生问题反馈的总结,在此我们对dsj6700417表示感谢!
我讲一下大家常犯的错误:
1.有同学要拟合的目标函数是a*x+b,使用了最小二乘拟合lsqcurvefit,或者非线拟合nlinfit函数,
应该使用多项式拟合polyfit.具体到此例使用polyfit(x,y,1)
2.有同学要数值求解多参数方程组,使用了fzero.
fzero只能求单参数方程的零点.多参数方程的求解用fsolve
试看下面的例子:
x=[0.0350;0.1793;0.5573];%初值
options=optimset('MaxFuns',30000,'MaxIter',30000);
[x,Fval,exitflag] =
fzero(@fx,x,options);x
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%把以下两行百分号之间的部分建立m文件,保存
function f=fx(x)
F=x(1);K=x(2);K_a=x(3);
f=[-62500/3*F*(-exp(-3*K_a)+exp(-3*K))/(-K_a+K)-7639/10;
-62500/3*F*(-exp(-18*K_a)+exp(-18*K))/(-K_a+K)-7639/100;
-62500/3*F*(-exp(-20*K_a)+exp(-20*K))/(-K_a+K)-267/5];
%%%%%%%%%%%%%%