齿轮论坛 www.gearbbs.net

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 6490|回复: 12
收起左侧

用c代码换高手指点EXCEL中inv反函数求解方法

[复制链接]
发表于 2009-5-6 08:57 | 显示全部楼层 |阅读模式

本帖子中包含更多资源。

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

x
本帖最后由 ryen.chen 于 2009-5-7 19:30 编辑

  1. #include<iostream.h>
  2. #include<math.h>
  3. #include<conio.h>
  4. double AInv(double y, double e);
  5. void main()
  6. {
  7.      double x, y;
  8.      cout<<"Input y (>0): ";
  9.      cin>>y;
  10.      x = AInv(y, 0.000001);
  11.      if (x<0)  cout<<"Failed after 100 iterations!"<<endl;
  12.      else      cout<<"ainv("<<y<<") = "<<x<<endl;
  13.      getch();
  14. }
  15. double AInv(double y, double e)
  16. {
  17. double x, maxX, minX;
  18. const double pi = 3.14159265358979;
  19. maxX = pi/2;
  20. minX = 0;
  21. for (int i=1;i<=100;i++)
  22. {   x =  (maxX + minX) / 2;
  23.      if (maxX-x<e) return(x);        
  24.      if (y>tan(x) - x)  minX = x;
  25.      else                     maxX = x;
  26.      cout<<minX<<", "<<maxX<<endl;
  27. }
  28. return(-1);
  29. }
复制代码
发表于 2009-5-6 19:32 | 显示全部楼层
这个是VC的代码,你大概是看不懂才要交换的吧,过两天我发一个,现在这台电脑上没有。
发表于 2009-5-6 21:36 | 显示全部楼层
本帖最后由 poxiangzi 于 2009-5-6 21:37 编辑

你这个是用二分法求解反渐开线函数的VC代码,我这里有一个Excel编写的反渐开线函数文件,使用牛顿迭代法,你可以参考。

反渐开线函数.rar

2.41 KB, 下载次数: 124, 下载积分: 齿轮币 -2 枚

发表于 2009-5-7 08:13 | 显示全部楼层
3楼的使用牛顿迭代法,迭代了10次还是很准确的。
 楼主| 发表于 2009-5-7 19:38 | 显示全部楼层
写错了,VB代码直接可以用在EXCEL里,求VB代码
发表于 2009-5-7 20:03 | 显示全部楼层
高,高,实在是高
我研究了N年的 ainv(A),现在不研究了。
发表于 2009-5-7 22:04 | 显示全部楼层
3楼的使用牛顿迭代法,迭代了10次还是很准确的。
fanes 发表于 2009-5-7 08:13


呵呵,迭代的次数和是否能收敛和初值有关,这个excel表格的解法只要迭代3、4次就够了。

有一篇文章,大家看看,知道了算法写程序就简单了。

反渐开线函数的综合解算法.pdf

186.69 KB, 下载次数: 141, 下载积分: 齿轮币 -2 枚

发表于 2009-5-8 21:01 | 显示全部楼层
楼上所言极是,要用收敛快的迭代法。
发表于 2009-5-8 23:59 | 显示全部楼层
我记得最快的是这个,比牛顿法快,有兴趣的可以测试一下
无标题.PNG
发表于 2011-10-8 21:28 | 显示全部楼层
哪位大侠有VB代码直接可以用在EXCEL里,求VB代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|齿轮论坛

GMT+8, 2024-5-15 06:52 , Processed in 0.176696 second(s), 13 queries , MemCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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