+发表新主题
ec818 发布于2006-12-17 22:27 60 次浏览 7 位用户参与讨论
跳转到指定楼层
我想用visual foxpro编程序,求反渐开线函数,搞了很久,也弄不出,不知有谁知道,能否帮我一下,多谢了!
回复

使用道具 举报

已有7人评论

skylark1708 发表于 2006-12-18 09:01:20
列出渐开线方程,解非线性方程,可以用牛顿迭代法,也可用拟牛顿,梯度、下山,蒙特卡罗。
回复

使用道具 举报

sdqdzsg 发表于 2006-12-19 09:53:58
举个例子采用迭代法)
如已知反渐开线函数值为a,求角度x
设定x=0
if(((tan(x)-x)-a)>0.0001)
x=x+0.000001
endif
输出x值即为所求值
我有一个用C语言编的,见附页
回复

使用道具 举报

skylark1708 发表于 2006-12-19 10:53:38
楼上方法不错,是万能的,可能收敛速度有些慢
回复

使用道具 举报

帝国的崛起 发表于 2006-12-19 10:59:34
根据反渐开线函数的曲线,可以给一个范围,用二分法比楼上的方法快。如果答案是50,那么要循环50/0.000001=50000000次,比较慢,用下面的例子,要快很多。
x1=0,x2=90
x = (x1+ x2) / 2
    b= Tan(x ) - x
    If b > a Then
        x2 = x
    Else: x1 = x
    End If
    Loop Until Abs(b - a) < 0.00000001
最终得到x即为答案。
回复

使用道具 举报

夏天的尾声 发表于 2006-12-20 14:53:01
5楼比3楼快,可是牛顿迭代收敛的更快些
回复

使用道具 举报

hj666030 发表于 2006-12-23 12:45:01

3楼的是按照渐开线函数值inv(x)分段(每10度分一段,从0到60度共分6段)、再在各个段内进行求解,如果所求的值刚好接近段的上限,迭代次数将达到十几万次,不知道理解的是否正确?这个是不是属于迭代法呢?大家说说吧。

有个疑问:3楼的程序每段判断求解终止的条件怎么都不一样呢?6段分别有6个终止条件,哪位解释一下。

二分法不用求导数,也不依赖于初值,这点比牛顿法好,牛顿法虽然快,可是依赖于初值。

楼主不妨参考一下:

http://bbs2.jxcad.com.cn/forum.p ... 145844&keyword=
回复

使用道具 举报

山西居士 发表于 2007-1-7 02:37:20

一看就会啦![p:1]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ| Archiver|手机版|小黑屋| 碧波制图网 Stonespider

Copyright © 2021-2023 Kangli Wu   All Rights Reserved.

Powered by Discuz! X3.5( 苏ICP备18011607号-1 )

快速
回复
返回
列表
返回
顶部