⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xx3.htm

📁 返回 第一章 关于寿星万年历 第二章 公历与儒略日 第三章 回历计算 第四章 天文坐标 第五章 近现代农历的天文学性质及其规则 第六章 离散序列的直线拟合算法
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<script language=javascript>
function int2(v){ return Math.floor(v);}
var JD={ //日期元件
  Y:2000, M:1, D:1, h:12, m:0, s:0,
  toJD:function(){ //公历转儒略日
   var y=this.Y, m=this.M, n=0; //取出年月
   if(m<=2) m+=12,y--;
   if(this.Y*372+this.M*31+this.D>=588829)//判断是否为格里高利历日1582*372+10*31+15
     n =int2(y/100), n =2-n+int2(n/4);//加百年闰
   n +=int2(365.25*(y+4716)+0.01);    //加上年引起的偏移日数
   n +=int2(30.6*(m+1))+this.D;       //加上月引起的偏移日数及日偏移数
   n +=((this.s/60+this.m)/60+this.h)/24 - 1524.5;
   return n;
  },
  setFromJD:function(jd){ //儒略日数转公历
   jd+=0.5;
   var A=int2(jd), F=jd-A, D;  //取得日数的整数部份A及小数部分F
   if(A>=2299161) D=int2((A-1867216.25)/36524.25),A+=1+D-int2(D/4);
   A     +=1524; //向前移4年零2个月
   this.Y =int2((A-122.1)/365.25);//年
   D      =A-int2(365.25*this.Y); //去除整年日数后余下日数
   this.M =int2(D/30.6001);       //月数
   this.D =D-int2(this.M*30.6001);//去除整月日数后余下日数
   this.Y-=4716; this.M--;
   if(this.M>12) this.M-=12;
   if(this.M<=2) this.Y++;
   //日的小数转为时分秒
   F*=24; this.h=int2(F); F-=this.h;
   F*=60; this.m=int2(F); F-=this.m;
   F*=60; this.s=F;
  },
  toStr:function(){ //日期转为串
   var Y="     "+this.Y,M="0"+this.M, D="0"+this.D;
   var h=this.h,m=this.m,s=int2(this.s+.5);
   if(s>=60) s-=60,m++;
   if(m>=60) m-=60,h++;
   h="0"+h; m="0"+m; s="0"+s;
   Y=Y.substr(Y.length-5,5); M=M.substr(M.length-2,2); D=D.substr(D.length-2,2);
   h=h.substr(h.length-2,2); m=m.substr(m.length-2,2); s=s.substr(s.length-2,2);
   return Y+"-"+M+"-"+D+" "+h+":"+m+":"+s;
  }
};


var gan=Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
gan['甲']=0;gan['乙']=1;gan['丙']=2;gan['丁']=3;gan['戊']=4;
gan['己']=5;gan['庚']=6;gan['辛']=7;gan['壬']=8;gan['癸']=9;

function getsjb(lun,nd,ra,ye){//取数据表
 var i,j,k,p,v,v2,rn,Y;
 nd=nd.split(" "); for(i=0;i<4;i++) nd[i]-=0;

 //提取朔日和节气
 JD.h=12;JD.m=JD.s=0;
 ra.length=ye.length=0;
 var n1=-1,n2=-1;
 var qa=new Array();
 for(i=0;i<lun.length;i++){
   v=lun[i];  if(!v) continue;
   if(v.substr(0,1)=="-") {
     Y=v-0, rn=1;
     continue;
   }
   if(Y==nd[0] && rn==nd[1]) n1=qa.length;
   if(Y==nd[2] && rn==nd[3]) n2=qa.length;
   JD.Y = Y;
   JD.M = v.substr(0,2)-0;
   JD.D = v.substr(2,2)-0;
   if(rn<6&&JD.M>8) JD.Y--;
   if(rn>8&&JD.M<5) JD.Y++;

   qa[qa.length]=JD.toJD(); //初一

   if(rn==1) ye[ye.length]=qa.length-1; //年首的月积数
   rn++;
 }
 if(n1==-1||n2==-1) return 'err';


 //取朔
 for(i=n1;i<=n2;i++) ra[ra.length]=qa[i];

 ra.jd=ra[0]-0.5;
 for(i=1;i<ra.length;i++) ra[i]-=ra[0];
 ra[0]=0;

}
function nihe(r,k){//拟合计算
 var b=0;
 //var k=365.2422/8; if(r[1]-r[0]<33) k=29.5306; //斜率
 var i,j,kk,v;

 var k1=k-1,k2=k+1;
 for(kk=0;kk<12;kk++){ //查找次数
  var bm=-1000,bM=1000,bmi=-1;
  for(i=0;i<r.length;i++){
   v=r[i]-(k*i+b); //直线至少要上移的量
   if(v>bm) bm=v,bmi=i;
   if(v<bM) bM=v;
  }
  var h=(bM+1-bm)/2;
  if(h>-1e-7){ b+=bm+h; r.gk = k; r.gb = b; r.gh = h; return "ok"; }
  for(i=0;i<r.length;i++){
   if(i==bmi) continue;
   v=( r[i]+1 - r[bmi] ) / (i-bmi);
   if(i<bmi && v>k1) k1=v;
   if(i>bmi && v<k2) k2=v;
   if(k1>k2) return "无解";
  }
  k=(k1+k2)/2;
  b=r[bmi]-k*bmi;
 }
 return "查找"+kk+"次未找到解";
}

function chec(){
 var i, nd=tin.innerText, ta=nlb.innerText, s='',c2;
 var ra=new Array(), ye=new Array();
 nd=nd.split('\r\n');
 ta=ta.split('\r\n');
 for(i=0;i<nd.length;i++){
   if(!nd[i]) continue;
   if(getsjb(ta,nd[i],ra,ye)=='err') alert("表提取错误");

   c2=nihe(ra,29+499/940);
   if(c2=='ok') s += (ra.gb+ra.jd).toFixed(6)+' ' + ra.gk.toFixed(8) + ' h=' + ra.gh.toFixed(8) +'\r\n';
   else s += c2+'\r\n';
 }

 //年积数处理
 c2=nihe(ye,12.37);
 if(c2=='ok'){
  s+='年首积月 b='+ye.gb.toFixed(6)+' k='+ye.gk.toFixed(8)+' h='+ye.gh.toFixed(6);
 } else s+='年首月积无解';

//alert(ra);

 out.innerText = '适用于-721年-479年\r\n平朔\r\n'+s;
 JD.setFromJD(ra.jd+0.5+ra[ra.length-1])
// alert( JD.toStr() );
}


/**
错误 
#号表示改后与《中西历日...》不符
-701.06.02 改 06.01 #
-654.12.15 改 12.16 #
-618.06.14 改 06.13
-579.09.29 改 09.28
-577.12.05 改 12.15
-571.12.27 改 12.28
-535.06.26 改 06.25 #
-491.01.22 改 01.23 #
-491.03.22 改 03.23 #
-487.01.08 改 01.09 #
**/
</script>

<a href=index.htm>返回</a>
<input type=button value='确定' onclick="chec()"><br>
<textarea id=tin cols=80 rows=20>
-721 1 -479 12
</textarea><br>
<textarea id=out cols=80 rows=20></textarea><br>
<textarea id=nlb style="display:none">
-721
1217
0116
0214
0316
0414
0514
0612
0712
0810
0909
1009
1107

-720
1207
0105
0204
0304
0403
0502
0601
0630
0730
0828
0927
1026
1125

-719
1224
0123
0222
0323
0422
0521
0620
0719
0818
0916
1016
1114

-718
1214
0112
0211
0312
0411
0511
0609
0709
0807
0906
1005
1104

-717
1203
0102
0131
0302
0331
0430
0529
0628
0727
0826
0925
1024
1123

-716
1222
0121
0219
0320
0418
0518
0616
0716
0814
0913
1012
1111

-715
1211
0109
0208
0309
0408
0507
0606
0705
0804
0902
1002
1031

-714
1130
1229
0128
0226
0328
0427
0526
0625
0724
0823
0921
1021
1119

-713
1219
0117
0216
0317
0416
0515
0614
0713
0812
0911
1010
1109

-712
1208
0107
0205
0306
0404
0504
0602
0702
0731
0830
0928
1028
1127

-711
1226
0125
0223
0325
0423
0523
0621
0721
0819
0918
1017
1116

-710
1215
0114
0212
0314
0413
0512
0611
0710
0809
0907
1007
1105

-709
1205
0103
0202
0303
0402
0501
0531
0629
0729
0828
0926
1026
1124

-708
1224
0122
0221
0321
0420
0519
0618
0717
0816
0914
1014
1113

-707
1212
0111
0209
0311
0409
0509
0607
0707
0805
0904
1003
1102

-706
1201
1231
0129
0228
0330
0428
0528
0626
0726
0824
0923
1022
1121

-705
1220
0119
0217
0319
0417
0517
0615
0715
0814
0912
1012
1110

-704
1210
0108
0207
0307
0406
0505
0604
0703
0802
0831
0930
1030

-703
1128
1228
0126
0225
0326
0425
0524
0623
0722
0821
0919
1019
1117

-702
1217
0115
0214
0316
0414
0514
0612
0712
0810
0909
1008
1107

-701
1206
0105
0203
0305
0403
0503
0601
0701
0731
0829
0928
1027
1126

-700
1225
0124
0222
0323
0421
0521
0619
0719
0817
0916
1016
1114

-699
1214
0112
0211
0312
0411
0510
0609
0708
0807
0905
1005
1103

-698
1203
0101
0131
0302
0331
0430
0529
0628
0727
0826
0924
1024
1122

-697
1222
0120
0219
0320
0419
0518
0617
0717
0815
0914
1013
1112

-696
1211
0110
0208
0309
0407
0507
0605
0705
0803
0902
1002
1031

-695
1130
1229
0128
0226
0328
0426
0526
0624
0724
0822
0921
1020
1119

-694
1218
0117
0216
0317
0416
0515
0614
0713
0812
0910
1010
1108

-693
1208
0106
0205
0306
0405
0504
0603
0703
0801
0831
0929
1029
1127

-692
1227
0125
0224
0324
0423
0522
0621
0720
0819
0918
1017
1116

-691
1215
0114
0212
0314
0412
0512
0610
0710
0808
0907
1006
1105

-690
1204
0103
0202
0303
0402
0501
0531
0629
0729
0827
0926
1025
1124

-689
1223
0122
0220
0322
0420
0520
0619
0718
0817
0915
1015
1113

-688
1213
0111
0210
0310
0409
0508
0607
0706
0805
0904
1003
1102

-687
1201
1231
0129
0228
0329
0428
0527
0626
0725
0824
0922
1022
1120

-686
1220
0119
0217
0319
0417
0517
0615
0715
0813
0912
1011
1110

-685
1209
0108
0206
0308
0407
0506
0605
0704
0803
0901
1001
1030

-684
1129
1228
0127
0225
0326
0424
0524
0622
0722
0821
0919
1019
1117

-683
1217
0115
0214
0315
0414
0513
0612
0711
0810
0908
1008
1106

-682
1206
0105
0203
0305
0403
0503
0601
0701
0730
0829
0927
1027
1125

-681
1225
0123
0222
0324
0422
0522
0620
0720
0818
0917
1016
1115

-680
1214
0113
0211
0312
0410
0510
0608
0708
0807
0905
1005
1103

-679
1203
0101
0131
0301
0331
0429
0529
0627
0727
0825
0924
1023
1122

-678
1222
0120
0219
0320
0419
0518
0617
0716
0815
0913
1013
1111

-677
1211
0109
0208
0310
0408
0508
0606
0706
0804
0903
1002
1101

-676
1130
1230
0128
0227
0327
0426
0525
0624
0724
0822
0921
1020
1119

-675
1218
0117
0215
0317
0415
0515
0613
0713
0811
0910
1009
1108

-674
1208
0106
0205
0306
0405
0504
0603
0702
0801
0830
0929
1028
1127

-673
1226
0125
0224
0325
0424
0523
0622
0721
0820
0918
1018
1116

-672
1216
0114
0213
0313
0412
0511
0610
0710
0808
0907
1006
1105

-671
1204
0103
0201
0303
0401
0501
0530
0629
0728
0827
0925
1025
1124

-670
1223
0122
0220
0322
0420
0520
0618
0718
0816
0915
1014
1113

-669
1212
0111
0210
0311
0410
0509
0608
0707
0806
0904
1004
1102

-668
1202
1231
0130
0228
0329
0427
0527
0626
0725
0824
0922
1022
1120

-667
1220
0118
0217
0318
0417
0516
0615
0714
0813
0911
1011
1110

-666
1209
0108
0206
0308
0406
0506
0604
0704
0802
0901
0930
1030

-665
1128
1228
0127
0225
0327
0425
0525
0623
0723
0821
0920
1019
1118

-664
1217
0116
0214
0315
0413
0513
0612
0711
0810
0908
1008
1106

-663
1206
0104
0203
0304
0403
0502
0601
0630
0730
0828
0927
1027
1125

-662
1225
0123
0222
0323
0422
0521
0620
0719
0818
0916
1016
1114

-661
1214
0113
0211
0313
0411
0511
0609
0709
0807
0906
1005
1104

-660
1203
0102
0131
0301
0330
0429
0529
0627
0727
0825
0924
1023
1122


-659
1221
0120
0218
0320
0418
0518
0616
0716
0815
0913
1013
1111

-658
1211
0109
0208
0309
0408
0507
0606
0705
0804
0902
1002
1031

-657
1130
1230
0128
0227
0328
0427
0526
0625
0724
0823
0921
1021
1119

-656
1219
0117
0216
0316
0415
0515
0613
0713
0811
0910
1009
1108

-655
1207
0106
0204
0306
0404
0504
0602
0702
0801
0830
0929
1028
1127

-654
1226
0125
0223
0325
0423
0523
0621
0721
0819
0918
1017
1116

-653
1216
0114
0213
0314
0413
0512
0611
0710
0809
0907
1007
1105

-652
1205
0103
0202
0302
0401
0501
0530
0629
0728
0827
0925
1025
1123

-651
1223
0121
0220
0321
0420
0519
0618
0718
0816
0915
1014
1113

-650
1212
0111
0209
0311
0409
0509
0607
0707
0805
0904
1003
1102

-649
1202
1231
0130
0228
0330
0428
0528
0626
0726
0824
0923
1022
1121

-648
1220
0119
0217
0318
0417
0516
0615
0714
0813
0911
1011
1109

-647
1209
0107
0206
0307
0406
0505
0604
0704
0802
0901
0930
1030

-646
1128
1228
0126
0225
0326
0425
0524
0623
0722
0821
0919
1019
1118

-645
1217
0116
0214
0316
0414
0514
0612
0712
0810
0909
1008
1107

-644
1206
0105
0203
0304
0403
0502
0601
0630
0730
0828
0927
1026
1125

-643
1224
0123
0221
0323
0421
0521
0620
0719
0818
0916
1016
1114

-642
1214
0112
0211
0312
0411
0510
0609
0708
0807
0905
1005
1104

-641
1203
0102
0131
0302
0331
0430
0529
0628
0727
0826
0924
1024
1122

-640
1222
0120
0219
0320
0418
0518
0616
0716
0814
0913
1012
1111

-639
1210
0109
0207
0309
0407
0507
0606
0705
0804
0902
1002
1031

-638
1130
1229
0128
0226
0328
0426
0526
0624
0724
0822
0921
1021
1119

-637
1219
0117
0216
0317
0416
0515
0614
0713
0812
0910
1010
1108

-636
1208
0106
0205
0306
0404
0504
0602
0702
0731
0830
0928
1028
1126

-635
1226
0124
0223
0324
0423
0523
0621
0721
0819
0918
1017
1116

-634
1215
0114
0212
0314
0412
0512
0610
0710
0808
0907
1007
1105

-633
1205
0103
0202
0303
0402
0501
0531
0629
0729
0827
0926
1025
1124

-632
1224
0122
0221
0321
0420
0519
0618
0717
0816
0914
1014
1112

-631
1212
0110
0209
0310
0409
0509
0607
0707
0805
0904
1003
1102

-630
1201
1231
0129
0228
0329
0428
0527
0626
0725
0824
0923
1022
1121

-629
1220
0119
0217
0319
0417
0517
0615
0715
0813
0912
1011
1110

-628
1210
0108
0207
0307
0406
0505
0604
0703
0802
0831
0930
1029

-627
1128
1227
0126
0224
0326
0425
0524
0623
0722
0821
0919
1019
1117

-626
1217
0115
0214
0315
0414
0513
0612
0711
0810
0909
1008
1107

-625
1206
0105
0203
0305
0403
0503
0601
0701
0730
0829
0927
1027
1126

-624
1225
0124
0222
0323
0421
0521
0619
0719
0817
0916
1015
1114

-623
1213
0112
0210
0312
0411
0510
0609
0708
0807
0905
1005
1103

-622
1203
0101
0131
0301
0331
0429
0529
0627
0727
0826
0924
1024
1122

-621
1222
0120
0219
0320
0419
0518
0617
0716
0815
0913
1013
1112

-620
1211
0110
0208
0309
0407
0507
0605
0705
0803
0902
1001
1031

-619
1129
1229
0127
0226
0328
0426
0526
0624
0724
0822
0921
1020
1119

-618
1218
0117
0215
0317
0415
0515
0613
0713
0812
0910
1010
1108

-617
1208
0106
0205
0306
0405
0504
0603
0702
0801
0830
0929
1029
1127

-616
1227
0125
0224
0324
0423
0522
0621
0720
0819
0917
1017
1115

-615
1215
0113
0212
0314
0412
0512
0610
0710
0808
0907
1006
1105

-614
1204
0103
0201
0303
0401
0501
0530
0629
0729
0827
0926
1025
1124

-613
1223
0122
0220
0322
0420
0520
0618
0718
0816
0915
1015
1113

-612
1213
0111
0210
0310
0409
0508
0607
0706
0805
0903
1003
1101

-611
1201
1230
0129
0228
0329
0428
0527
0626
0725
0824
0922
1022
1120

-610
1220
0118
0217
0318
0417
0516
0615
0715
0813
0912
1011
1110

-609
1209
0108
0206
0308
0406
0506
0604
0704
0802
0901
1001
1030

-608
1129
1228
0127
0225
0326
0424
0524
0622
0722
0820
0919
1018
1117

-607
1216
0115
0214
0315
0414
0513
0612
0711
0810
0908
1008
1106

-606
1206
0104
0203
0304
0403
0502
0601
0701
0730
0829

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -