猿代码 — 科研/AI模型/高性能计算
0

科学计算迭代,初值影响太大了

摘要: 1)赋初值为0 for(i=1; i=N-2; i++) for(j=1; j=N-2; j++) for(k=1; k=N-2; k++) { A=0; B=0; } printf("init ok!\n");迭代2527步。init ok!it= 100 error=0.010373it= 200 error=0.004651it= 300 error=0.002839it= ...
1)
赋初值为0 
for(i=1; i<=N-2; i++)
for(j=1; j<=N-2; j++)
for(k=1; k<=N-2; k++)
{
A[i][j][k]=0;
B[i][j][k]=0;
}
printf("init ok!\n");
迭代2527步。

init ok!
it= 100   error=0.010373
it= 200   error=0.004651
it= 300   error=0.002839
it= 400   error=0.001976
it= 500   error=0.001483
it= 600   error=0.001170
it= 700   error=0.000962
it= 800   error=0.000815
it= 900   error=0.000705
it=1000   error=0.000619
it=1100   error=0.000546
it=1200   error=0.000484
it=1300   error=0.000429
it=1400   error=0.000381
it=1500   error=0.000338
it=1600   error=0.000300
it=1700   error=0.000266
it=1800   error=0.000236
it=1900   error=0.000210
it=2000   error=0.000186
it=2100   error=0.000165
it=2200   error=0.000147
it=2300   error=0.000131
it=2400   error=0.000116
it=2500   error=0.000103
it=2527   error=0.000100
converged ok!
Time: 56.282s    global max error = 0.085212


2)
for(i=1; i<=N-2; i++)
for(j=1; j<=N-2; j++)
for(k=1; k<=N-2; k++)
{
A[i][j][k]=1;
B[i][j][k]=1;
}
printf("init ok!\n");

赋初值为1.

init ok!
it= 100   error=0.005959
it= 200   error=0.002455
it= 300   error=0.001414
it= 400   error=0.001047
it= 500   error=0.000825
it= 600   error=0.000671
it= 700   error=0.000555
it= 800   error=0.000461
it= 900   error=0.000383
it=1000   error=0.000318
it=1100   error=0.000265
it=1200   error=0.000221
it=1300   error=0.000185
it=1400   error=0.000155
it=1500   error=0.000131
it=1600   error=0.000111
it=1663   error=0.000100
converged ok!
Time: 36.8392s   global max error = 0.069821
迭代1663步。
时间减少约3分之1

3)所以怎么选初值也是个问题,
其实个这问题和大整数分解是一样的一个问题。

说点什么...

已有0条评论

最新评论...

本文作者
2024-2-22 00:39
  • 0
    粉丝
  • 626
    阅读
  • 0
    回复
资讯幻灯片
热门评论
热门专题
排行榜
Copyright   ©2015-2023   猿代码-超算人才智造局 高性能计算|并行计算|人工智能      ( 京ICP备2021026424号-2 )