论坛首页· 友情链接申请·申请版主· 广告投放· 道具中心· 设为首页· 收藏本站
发新话题
打印

看看这两个程序的执行结果有什么不同?

看看这两个程序的执行结果有什么不同?

程序1:
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main(){
     double a[5][5]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,100,100,100};//定义数组存放各点的电位值
     int n=0;                                                                     //存放迭代次数
     double a1;                                                                   //临时存放电位值     
     double b=1.0;                                                                    //存放加速收敛因子
     //cout<<"输入加速收敛因子:";
     //cin>>b;
     int flag=0;                                                                  //存放布尔值判断迭代是否继续
     while(flag==0){
                 flag=1;
                 for(int i=1;i<4;i++){
                         for(int j=1;j<4;j++){
                                 a1=a[j];
                                 a[j]=a[j]+b/4*(a[i-1][j]+a[j-1]+a[i+1][j]+a[j+1]-4*a[j]);
                                 flag*=(fabs(a[j]-a1)<1e-5);
                         }
                 }
                 n+=1;
     }
     flag=0;                                                                      //控制输出格式
     for(int i=0;i<5;i++){
                      for(int j=0;j<5;j++){
                      cout<<a[j]<<"    ";
                      flag+=1;
                      if(flag%5==0)cout<<'\n';
                      }
                      }
     cout<<"加速收敛因子为"<<b<<"的时候迭代次数为:"<<n<<endl;
     cout<<'\n';
     system("pause");
     return(1);
}


程序2:
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
void main()
{

double a[5][5];//
单位为V

int N,i,j,c;


double w=0.00001,js=1.0,a0,a1;

       //cout<<"输入加速因子,1<=a<2"<<endl;
       //cin>>js;

for(j=0;j<5;j++)//
赋值循环,给定边值和域内各点初值

{


if(j<4){


for(i=0;i<5;i++)a[j]=0;


}


else for(i=0;i<5;i++)a[j]=100;


}


N=0;//
迭代次数初值

do{//
迭代循环

c=0;


for(i=1;i<4;i++)//
迭代计算循环

{


for(j=3;j>0;j--)


{


a0=a[j];


a[j]+=js*(a[i+1][j]+a[j+1]+a[i-1][j]+a[j-1]-4*a[j])/4;


a1=a[j];


if(((a1-a0)<w)&&(a0-a1<w))c++;//
计算在最大允许误差范围内的点的个数

}


}


N++;


}while(c<9);


cout<<"
迭代次数:"<<N<<endl;//输出迭代次数

for(j=4;j>=0;j--)//
输出循环

{


for(i=0;i<5;i++)cout<<setw(12)<<a[j]<<'\t';


cout<<endl;


}

}


只用看的。。。说出执行结果有什么不同。。试试吧!


[ 本帖最后由 d_d 于 2008-4-3 22:15 编辑 ]

TOP

发新话题