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

使用道具 举报

已有11人评论

机械小虾米 发表于 2025-3-5 21:34:19
列出渐开线方程,解非线性方程,可以用牛顿迭代法,也可用拟牛顿,梯度、下山,蒙特卡罗。
回复

使用道具 举报

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

使用道具 举报

机械小虾米 发表于 2025-3-8 01:30:44
楼上方法不错,是万能的,可能收敛速度有些慢
回复

使用道具 举报

刘惠文 发表于 2025-3-9 02:54:57
根据反渐开线函数的曲线,可以给一个范围,用二分法比楼上的方法快。如果答案是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即为答案。
回复

使用道具 举报

wodeug6 发表于 2025-3-9 18:02:24
5楼比3楼快,可是牛顿迭代收敛的更快些
回复

使用道具 举报

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

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

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

使用道具 举报

sungenzhu 发表于 2025-3-11 00:22:21

一看就会啦![p:1]

本帖子中包含更多资源

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

x
回复

使用道具 举报

hightec2006 发表于 2025-3-12 18:42:56
谢谢哦;怎么能做成EXCEL表格式的
回复

使用道具 举报

新手上路8808 发表于 2025-3-13 14:38:54
笨人前一段时间也与道者各问题,刚开始的是后,是经程序设好步长一个一个试找最接近的一个。不过这样计算时间常而且精度不高。有课能会出现到你设定的计算次数还找不出结果。
后来,学习了计算方法一书,领会了一些算法。想上面说的二分法、牛顿法。我试过,近测试,牛顿法速度快,而且精度还高。列如我用0.3测试,牛顿法可能10次以内就迭代不精确的结果,而二分法迭代次数要40多次,精度也很高但同样的情况下还是不牛顿法差了一些。对了,就测试,个人感觉初始值去atn(1)效果比较好。
回复

使用道具 举报

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

本版积分规则

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

Copyright © 2021-2023 Kangli Wu   All Rights Reserved.

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

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