level 1
sky无聊之人
楼主
data = {{1, 2}, {3, 4}}
In[25]:= factor = {0.3, 0.4};
FindFit[data, c x - 1, c, x, NormFunction -> (Norm[#/factor] &)]
Out[26]= {c -> 1.8866}
如上,这里的factor={0.3,0.4}是分别给最小二乘法中的(在这里一共就2项)每项各乘了一个因子,
换成以下这样可能更清楚些,formula2就是相当于把factor分配进去后的结果,可以看到前一项的因子是0.3,后一项的是0.4。
In[21]:= formula1 = (c - 3)^2 + (3 c - 5)^2 // Simplify;
formula2 = ((c - 3)/0.3)^2 + ((3 c - 5)/0.4)^2 // Simplify;
FindMinimum[formula1, c]
FindMinimum[formula2, c]
Out[23]= {1.6, {c -> 1.8}}
Out[24]= {16.4948, {c -> 1.8866}}
跟之前的是一致的结果。
factor如果都取1,factor={1,1},那就跟没有这个是一样了,这很自然。
但我试了下,发现取值不能超过1,好像只能在0~1之间取。
但如果取成{1,0.9},就一个取1,一个取小数,也算不出来,运行一下子接着就没下文了,结果之前定义的那些变量也都变蓝了,就变成没定义的了!顺便也想问下这是为什么?
当然主要是想请教下在这里的factor该如何理解,权重吗,标准差,还是别的什么东西?
谢谢!
2018年12月18日 06点12分
1
In[25]:= factor = {0.3, 0.4};
FindFit[data, c x - 1, c, x, NormFunction -> (Norm[#/factor] &)]
Out[26]= {c -> 1.8866}
如上,这里的factor={0.3,0.4}是分别给最小二乘法中的(在这里一共就2项)每项各乘了一个因子,
换成以下这样可能更清楚些,formula2就是相当于把factor分配进去后的结果,可以看到前一项的因子是0.3,后一项的是0.4。
In[21]:= formula1 = (c - 3)^2 + (3 c - 5)^2 // Simplify;
formula2 = ((c - 3)/0.3)^2 + ((3 c - 5)/0.4)^2 // Simplify;
FindMinimum[formula1, c]
FindMinimum[formula2, c]
Out[23]= {1.6, {c -> 1.8}}
Out[24]= {16.4948, {c -> 1.8866}}
跟之前的是一致的结果。
factor如果都取1,factor={1,1},那就跟没有这个是一样了,这很自然。
但我试了下,发现取值不能超过1,好像只能在0~1之间取。
但如果取成{1,0.9},就一个取1,一个取小数,也算不出来,运行一下子接着就没下文了,结果之前定义的那些变量也都变蓝了,就变成没定义的了!顺便也想问下这是为什么?
当然主要是想请教下在这里的factor该如何理解,权重吗,标准差,还是别的什么东西?
谢谢!


