24小时热门版块排行榜    

查看: 3045  |  回复: 31

guojiashun

铁杆木虫 (正式写手)

你自己写一个最小二乘的程序来做,应该也不难。
21楼2014-08-14 14:31:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojiashun

铁杆木虫 (正式写手)

又用待定系数法a=inv(X)*y’做了几组不同取点的结果,发现误差不是由matlab的逆矩阵算法误差造成的!这里我犯了一个严重且低级的数学错误!这里不能用待定系数法做!高次多项式的曲线无法用这个方法拟合,不同的取点会导致得到的多项式系数完全不同。看来最小二乘法等拟合方法才是正途!
22楼2014-08-14 15:09:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

businiao412

金虫 (正式写手)

引用回帖:
20楼: Originally posted by guojiashun at 2014-08-14 14:28:41
由此可见数值方法里面还是最小二乘法最准确

我昨天晚上也用您说的方法测试了,发现选用不同的X值组成的四个点,得出的四个系数确实有差别的,不过没有仔细整理,我再看看,另外如果取多于五点时,显示五个方程四个未知数求解不出结果,您知道maple软件可以做这样带有位置参量的最小二乘拟合吗?
23楼2014-08-14 15:11:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojiashun

铁杆木虫 (正式写手)

引用回帖:
23楼: Originally posted by businiao412 at 2014-08-14 15:11:56
我昨天晚上也用您说的方法测试了,发现选用不同的X值组成的四个点,得出的四个系数确实有差别的,不过没有仔细整理,我再看看,另外如果取多于五点时,显示五个方程四个未知数求解不出结果,您知道maple软件可以做 ...

可以的,“Maple为我们提供了11个不同的命令实现最小二乘拟合计算”
24楼2014-08-14 15:16:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

businiao412

金虫 (正式写手)

引用回帖:
22楼: Originally posted by guojiashun at 2014-08-14 15:09:31
又用待定系数法a=inv(X)*y’做了几组不同取点的结果,发现误差不是由matlab的逆矩阵算法误差造成的!这里我犯了一个严重且低级的数学错误!这里不能用待定系数法做!高次多项式的曲线无法用这个方法拟合,不同的取点 ...

其实我觉得,咱们用最小二乘法拟合的过程中,咱们选的点位置不同,数目不同得到的结果也会有有些差别吧?
25楼2014-08-14 16:00:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojiashun

铁杆木虫 (正式写手)

引用回帖:
25楼: Originally posted by businiao412 at 2014-08-14 16:00:47
其实我觉得,咱们用最小二乘法拟合的过程中,咱们选的点位置不同,数目不同得到的结果也会有有些差别吧?...

应该是,但是数目应该影响最大。
26楼2014-08-14 16:03:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

businiao412

金虫 (正式写手)

引用回帖:
26楼: Originally posted by guojiashun at 2014-08-14 16:03:06
应该是,但是数目应该影响最大。...

所以我觉的即使使用最小二乘拟合,也很难得到文章中的结果。
27楼2014-08-14 16:39:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojiashun

铁杆木虫 (正式写手)

引用回帖:
27楼: Originally posted by businiao412 at 2014-08-14 16:39:14
所以我觉的即使使用最小二乘拟合,也很难得到文章中的结果。...

但论文中写的是用最小二乘得到的。
28楼2014-08-14 18:21:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojiashun

铁杆木虫 (正式写手)

我用最小二乘法做了一下:
syms Q
x=[1-Q:0.001*Q:1];
y=-(1.-x).^(3/2);
N=length(x);
syms A
for n=1:N
       for m=1:4
           A(m,n)=x(n)^(m-1);
       end
end
a=(A*A')\(A*y');
其中a(1)=a0;  a(2)=a1; a(3)=a2; a(4)=a3;然后得到很长很长很长一串a关于Q的表达式,人工化简基本不可能了.............然后用eval函数化简最简单的 a3 项,得
eval(a(4))=-1230776300378990335736947704895/5070602400912917605986812821504/conj(Q)^3*conj(Q^(3/2))= -0.2427/Q^(3/2)= -8/(33*Q^(3/2))
但是其它几项太复杂了,化简不动.........
29楼2014-08-14 19:03:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guojiashun

铁杆木虫 (正式写手)

把取点密度减小:x=[1-Q:0.1*Q:1]; 可得:
eval(a(4))=-23980501898594795/90564573756653568/conj(Q)^3*conj(Q^(3/2))
             =-0.2648/Q^(3/2);
eval(a(3))=-1/1716*conj(Q^(3/2))*(-2997562737324347/2199023255552-12000*conj(Q)-500*conj(Q)*2^(1/2)+3008*conj(Q)*5^(1/2)+1116*conj(Q)*10^(1/2)+721*conj(Q)*7^(1/2)*10^(1/2)-704*conj(Q)*2^(1/2)*5^(1/2)-381*conj(Q)*3^(1/2)*10^(1/2)+624*conj(Q)*3^(1/2)*5^(1/2))/conj(Q)^3
             =-(1.6841e+003*Q-1.3631e+003)/(1716*Q^(3/2))
             =-(0.9814*Q-0.7943)/Q^(3/2) ≈ -(72*Q-56)/(77*Q^(3/2))

后面实在整不动了,说明最小二乘可定是可行的,但是这个论文作者采用何等手段获得如此整齐精准的表达式呢?
30楼2014-08-14 19:28:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 businiao412 的主题更新
信息提示
请填处理意见