注册 登录
编程论坛 Matlab

怎样用matlab对二次根式函数进行拟合

xuanyuanyun 发布于 2008-11-28 00:41, 3182 次点击
已知函数形式:
y^2=a*x^2+b*x+c
现在需要做出拟合曲线并求出各系数.
matlab里面已有的cftool工具箱里面没有这样的拟合方式


这个是要用来对实验数据进行处理的.
例如
x=[0 0.47 1 1.47 2 2.2 2.47 2.67 3.2 3.67 4.2 4.4 4.87 5.4 5.87 6.4 6.6 7.07 7.6 8.07 8.6 9.07]
y=[0.371 0.350 0.320 0.296 0.268 0.259 0.248 0.239 0.215 0.199 0.187 0.186 0.182 0.180 0.182 0.193 0.199 0.213 0.236 0.263 0.301 0.331]
求具体拟合方法
而且后期还需要做一个t=(a*x+b)/y的曲线拟合,所以最好能有可以直接用cftool工具箱拟合的方法...
谢谢了
3 回复
#2
meteora11062008-11-28 23:02
这就是一个二次多项式的拟合么,用polyfit(x,y,n);取n=2就可以了,返回多项式的系数向量
#3
ddc2008-12-05 18:37
先画出散点图,在图形窗口点tools,选Basic Fitting,在弹出的窗口左边选你需要的拟和,
这是最简单的方法。
#4
ydgsl2008-12-08 10:30
有两种拟合结果:
一种是fx1=@(b,x)sqrt(b(1)*x.^2+b(20*x+b(3))
b=[.43714247e-2, -.44192033e-1, .14281110]
lsqcurvefit(fx1,b,x,y)
b=[.43714247e-2, -.44192033e-1, .14281110]
RSS =.5099161667e-3
R^2= 0.9932
另一种是先将y平方,Y=y.^2;
fx2=@(b,x)b(1)*x.^2+b(2)*x+b(3)
b=[.44068474e-2, -.44253673e-1, .14217014]
b=lsqcurvefit(fx2,b,x,Y)
b=[.44068474e-2, -.44253673e-1, .14217014]
RSS=.14609031e-3
R^2=0.9931
两者的结果不是完全相同的,后者即为多项式拟合。

[[it] 本帖最后由 ydgsl 于 2008-12-8 10:42 编辑 [/it]]
1