数学研发论坛

 找回密码
 欢迎注册
楼主: wayne

[提问] 用代数数逼近π

[复制链接]
发表于 2010-8-23 11:08:14 | 显示全部楼层
${49+23*sqrt(75)}/79$
如果限定b=1,结果为
${54+sqrt(78)}/20$

评分

参与人数 1威望 +6 鲜花 +10 收起 理由
wayne + 6 + 10

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-8-23 12:08:40 | 显示全部楼层
,咋算的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-8-23 12:42:16 | 显示全部楼层
穷举,改成3位数可以达到
${66+68*sqrt(789)}/629$不过就有点慢了

  1. #include <stdio.h>
  2. #include <math.h>
  3. #define MAX 999
  4. int main()
  5. {
  6.     int a,b,c;
  7.     double berr=10.0;
  8.     int ba,bb,bc,bd;
  9.     for(a=0;a<=MAX;a++)for(b=-MAX;b<=MAX;b++)for(c=0;c<=MAX;c++){
  10.         double e=a+b*sqrt(c);
  11.         double f=e/M_PI;
  12.         int d=(int)ceil(f);
  13.         if(-MAX<=d&&d<=MAX){
  14.               double err=fabs(e/d-M_PI);
  15.               if(err<berr){
  16.                  berr=err;ba=a;bb=b;bc=c;bd=d;
  17.               }
  18.         }
  19.         d=(int)floor(f);
  20.         if(-MAX<=d&&d<=MAX){
  21.               double err=fabs(e/d-M_PI);
  22.               if(err<berr){
  23.                  berr=err;ba=a;bb=b;bc=c;bd=d;
  24.               }
  25.        }
  26.     }
  27.     printf("(%d+%d*sqrt(%d))/%d:err %g\n",ba,bb,bc,bd,berr);
  28. }

复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-8-23 12:44:04 | 显示全部楼层
在理论上有没有可以分析的余地呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-8-23 12:52:48 | 显示全部楼层
我感觉超越数是一个很大的盲区,似乎很少有这方面的研究。
总感觉 能在超越数的幂 的线性组合(权是整数)中找出名堂来
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-8-23 13:18:26 | 显示全部楼层
13# mathe

可以用floor(d+0.5)来实现 round 函数的功能,
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-8-23 13:25:51 | 显示全部楼层
错了,有点乱,
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-8-23 14:26:31 | 显示全部楼层
本帖最后由 zgg___ 于 2010-8-23 14:33 编辑

用代数数来逼近某个具体数值的方法是已有一定研究的,有兴趣可以了解一下传说中的LLL算法,Mathematica中是集成了这个算法的,大家可以敲入下面的话来试一试效果先……

  1. << NumberTheory`Recognize`
  2. f = Recognize[N[Pi, 25], 10, t]
  3. N[Solve[f == 0, t], 30] // MatrixForm
  4. N[Pi, 30]
复制代码

评分

参与人数 1威望 +6 鲜花 +6 收起 理由
wayne + 6 + 6 wonderful!!!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-8-23 14:28:34 | 显示全部楼层
15# wayne
就连超越数之和是不是超越数都很难证...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-8-23 15:11:33 | 显示全部楼层
${453 + 802*sqrt(1000)}/8217$
======================
我的精度比mathe的最后的那个高一点
呵呵
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2021-1-21 22:22 , Processed in 0.061949 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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