用lsqcurvefit拟合类似y=x^(1/3)函数时,最后结果是复数,如何让结果为实数?
问题描述:
用lsqcurvefit拟合类似y=x^(1/3)函数时,最后结果是复数,如何让结果为实数?
拟合函数定义的M文件为:
function f=goodfun1(a,t)
f=a(3)*(a(1)+a(2)*t).^(1/3)+a(4);
end
主命令为:
t=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50];
y=[-8.070 -8.031 -7.982 -7.919 -7.823 -7.716 -7.599 -7.464 -7.334 -7.182 -7.023 -6.864 -6.695 -6.479 -6.286 -6.077 -5.861 -5.791 -5.732 -5.695 -5.677 -5.664 -5.649 -5.631 -5.614];
a=[-26/24 1/24 1.228 -6.842]
a=lsqcurvefit('goodfun1',a,t,y);
a(1)
a(2)
a(3)
a(4)
得到的ans a向量都是复数,如何得到实数的a参数向量?
答
f=a(3)*(a(1)+a(2)*t).^(1/3)+a(4);
^前面有个“.”,啥意思?
lsqcurvefit没弄过
Origin可以拟合:
a(1)=-1.08333
a(2)=0.04167
a(3)=0.67784
a(4)=-7.39216