求线性拟合算法

autoegg 2004-12-21 06:38:47
小弟有一算式如下:
mag = img[0]*img[0] + img[1]*img[1] + img[2]*img[2];
mag = sqrt(mag)/2;

因为其中涉及到求平方根,所以实时性不高,我想用线性算式来模拟上述算式,即:
mag = a*img[0] + b*img[1] + c*img[2];

哪位大侠能够告知小弟,上述算式中的a、b、c应当取何值?
...全文
132 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mathe 2004-12-22
  • 打赏
  • 举报
回复
应该是x2/2同mag非常接近。
上面错了,应该是
x1=(x0*x0+a)/(2*x0)
x2=(x1*x1+a)/(2*x1)
这里我用的就是计算sqrt(x)的迭代公式。
使用
x(n+1)=(x(n)*x(n)+a)/(2*x(n))
可以计算出sqrt(a),如果初始值(x0)选择的较好,那么迭代不了几次就精度很高了。
现在这种方法误差最大的时候是abs(img[0])=abs(img[1])=abs(img[2]),这时
计算出来x2=1.75*img[0], 而精确值是2*mag=sqrt(3)*img[0]=1.732img[0]
误差在1%左右
autoegg 2004-12-22
  • 打赏
  • 举报
回复
谢谢三位!:)
mathe,您能不能解释一下为什么x2的结果非常接近mag?
gxqcn 2004-12-22
  • 打赏
  • 举报
回复
感觉上式有问题:x0、x1、a 的“量冈”不同,作加法运算应无任何意义。
mathe 2004-12-22
  • 打赏
  • 举报
回复
Let x0=max(abs(img[0]),abs(img[1]),abs(img[2]))
a=img[0]*img[0]+img[1]*img[1]+img[2]*img[2]
x1=(x0+a)/(2*x0)
x2=(x1+a)/(2*x1)
呵呵,这时x2的结果应该非常接近mag了
gxqcn 2004-12-22
  • 打赏
  • 举报
回复
可以利用平均值不等式:√((a^2+b^2+c^2)/3)≥(|a|+|b|+|c|)/3,

mag = c * ( abs(img[0]) + abs(img[1]) + abs(img[2]) ), c = √3/6
autoegg 2004-12-22
  • 打赏
  • 举报
回复
谢谢dengsf,确实是不可行。
大侠能否有一个算式模拟如下算式:
mag = img[0]*img[0] + img[1]*img[1] + img[2]*img[2];
mag = sqrt(mag)/2;

只要新的算式中不出现平方根就可以(因为求平方根很耗时,导致程序实时性不高)
autoegg 2004-12-22
  • 打赏
  • 举报
回复
谢谢三位,特别感谢gxqcn和mathe,你们两位的方法效果都很好!
立马结贴!
dengsf 2004-12-21
  • 打赏
  • 举报
回复
汗……
写错,是(1,0,0)和(-1,0,0)
dengsf 2004-12-21
  • 打赏
  • 举报
回复
想要两个式子相等,并且 A,B,C是常数的话是不可能的。
说明很简单,分别代入 (1,0,0)和(2,0,0)看求出的 a 值就知道了。

除非数字有更多的限制条件,这样用近似的话可能还可以。
autoegg 2004-12-21
  • 打赏
  • 举报
回复
自己先顶!:)
当前非线性拟合和多元拟合的工具较少,这是针对常用的拟合算法,开发的一款数据拟合为主的软件。包括线性拟合的各种算法,非线性拟合的各种算法,以及多元拟合的各种算法。其中提供了很多非线性方程的模型,以满足不同的需,也可以制定自己所需要的指定非线性方程模型的,采用最先进的初始值估算算法,无需初始值就可以拟合自己想要的非线性方程模型各个模块的介绍如下。 1.线性拟合算法模块 根据最小二乘拟合算法,对输入的数据进行变量指定次方的拟合。同时可对自变量或因变量进行自然对数和常用对数的转换后再拟合。根据实际情况,开发了单调性拟合以针对各种定量分析的用途。同时开发了,针对一组数据,得到最高相关系数的自动拟合功能,由程序自动选择拟合次数以及自变量和因变量的数据格式。 2.非线性拟合算法模块 根据非线性方程的特点,开发了最先进的智能初始值估算算法,配合LM迭代算法,进行非线性方程的拟合。只需要输入自变量和因变量,就可以拟合出所需要的非线性方程。拟合相关系数高,方便快捷。并借助微粒群算法,开发了基于微粒群的智能非线性拟合算法,拟合出方程的相关系数相当高,甚至会出现过拟合现象。 3.多元拟合算法模块 根据最小二乘算法的原理开发了多元线性拟合算法,同时开发了能够指定变元次数的高次多元线性拟合。由于多元变量的情况下函数关系复杂,采用高次多元线性拟合能有效提高拟合效果而不会出现过拟合现象。同时针对每个变元可能最合适的拟合次数不一定都一样,开发了自适应高次多元拟合算法

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧