|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 灰袍法师 于 2012-3-16 20:21 编辑
关键字:贝塞尔曲线,牛顿迭代法,求曲线交点
一直以来,求两条曲线交点都是个比较麻烦的事情
尤其是求Excel的平滑曲线的交点,因为根本拟合不出一个曲线方程
本附件借用了以下贴的VBA代码
[原创]揭开Excel平滑曲线的秘密 by 海底眼
附件先把两条曲线看作折线,找出两两折线的交点
然后用这个交点作为起始点,用牛顿法求解
f(x) = 曲线1 - 曲线2 = 0
就可以找出两条曲线的交点
(牛顿法求解任意连续曲线方程的理论知识,只是高三数学或者大一数学,请自行搜索学习,这里不啰嗦了)
每一步的牛顿法迭代,都要依靠海底眼的自定义函数,计算这个X坐标在 实际的平滑曲线 上的斜率,对应的Y坐标等等
即:
从起始点开始,作一条 f(x) 的切线,切线与X轴的交点作为下一次牛顿法的起始点
如果切线与X轴的交点,其 f(x) 的Y坐标也是0
那么就找到 f(x) = 0 的解
也就是找到了 曲线1 = 曲线2 的交点了。
其实用规划求解来做 f(x) = 0 的解方程,也是可以的,也是牛顿法求解
不过速度比自己写VBA要慢得多,而且规划求解的对话框很烦人,这里就一并在VBA里面解决算了,反正牛顿法简单得要命。。。却又非常的好用。
原有附件在Excel2003不能使用,现在修改了,应该可以了。。。
数值牛顿法求解两条贝塞尔曲线的交点.rar
(37.6 KB, 下载次数: 1502)
补充内容 (2013-10-15 07:56):
非常重要:请下载本附件后,根据本帖第23楼对代码作修改,否则某些情况下会出错 |
评分
-
2
查看全部评分
-
|