| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 299 人关注过本帖
标题:请高手回答,为何e<1,没有输出???想了解迭代次数,但是不行啊,求解
只看楼主 加入收藏
Vlture_
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-10-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
请高手回答,为何e<1,没有输出???想了解迭代次数,但是不行啊,求解
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define M 10
#define N 10
void main()
{
float x1,x2,x3,x4,e;
printf("请输入边界温度左:x1,右:x2,下:x3,上:x4 \n");
scanf("%f%f%f%f",&x1,&x2,&x3,&x4);
printf("请输入节点精度e:");
scanf("%f",&e);
float T[M][N],Tcopy[M][N];
int i,j; long k=1;
for(i=1;i<M-1;i++)
{
    T[i][0]=Tcopy[i][0]=x1;
    T[i][N-1]=Tcopy[i][N-1]=x2;
}
for(j=0;j<N;j++)
{
    T[0][j]=Tcopy[0][j]=x4;
    T[M-1][j]=Tcopy[M-1][j]=x3;
}
for(i=1;i<M-1;i++)
    for(j=1;j<N-1;j++)
        T[i][j]=Tcopy[i][j]=0.25*(x1+x2+x3+x4);

float dif[M][N],max;
for(i=0;i<M;i++)
    for(j=0;j<N;j++)
        dif[i][j]=1.0;
//float e=2.5;
//for(k=1;k<10000;k++)
//{
    for(i=1;i<M-1;i++)
        for(j=1;j<N-1;j++)
            T[i][j]=0.25*(T[i-1][j]+T[i+1][j]+T[i][j-1]+T[i][j+1]);
    for(i=1;i<M-1;i++)
        dif[i][j]=fabs(T[i][j]-Tcopy[i][j]);
    max=dif[1][1];
    for(i=1;i<M-1;i++)
    for(j=1;j<N-1;j++)
    {if(max<dif[i][j])
            max=dif[i][j];
    }
//if(max<=e) break;

    for(i=1;i<M-1;i++)
    for(j=1;j<N-1;j++)
        Tcopy[i][j]=T[i][j];
//}
while(max>=e)
{    for(i=1;i<M-1;i++)
        for(j=1;j<N-1;j++)
            T[i][j]=0.25*(T[i-1][j]+T[i+1][j]+T[i][j-1]+T[i][j+1]);
        for(i=1;i<M-1;i++)
            dif[i][j]=fabs(T[i][j]-Tcopy[i][j]);
    max=dif[1][1];
    for(i=1;i<M-1;i++)
     for(j=1;j<N-1;j++)
    {    if(max<dif[i][j])
            max=dif[i][j];
    }

    for(i=1;i<M-1;i++)
    for(j=1;j<N-1;j++)
        Tcopy[i][j]=T[i][j];
    k++;
}
for(i=0;i<N;i++)
for(j=0;j<M;j++)
    printf("%8.1f",T[i][j]);

if((j+1)%N==0)     printf("\n");
printf("\n");
printf("迭代次数k=%d\n",k);
}
搜索更多相关主题的帖子: include 
2013-11-19 20:07
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:20 
打印出循环变量,不就看出了次数

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-11-19 20:28
Vlture_
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-10-25
收藏
得分:0 
回复 2楼 pauljames
您好,您最好仔细看看,或者自己运行一下,循环变量不就是k吗?但是在精度e变化的时候只有e>1时才有输出,e<1时,无任何输出。希望解答
2013-11-19 20:39
快速回复:请高手回答,为何e<1,没有输出???想了解迭代次数,但是不行啊,求解 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026453 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved