请大家帮我看看是什么原因
程序源码:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
int i = 0;
int j = 0;
int k = 0;
int s = 0;
int N = 5;
int a = 1200;
int L = 600;
double t = 0.1;
double g = 9.81;
double pi = 3.14;
double D = 0.5;
double f = 0.018;
double c0 = 0.009;
double c = 0.0;
double B = 0.0;
double R = 0.0;
double tao = 0.0;
long double Cp[81][6] = {0};
long double Cm[81][6] = {0};
long double H[81][6] = {0};
long double Q[81][6] = {0};
B = (4 * a) / (g * pi * D * D);
R = (8 * f * L) / (g * N * pi * pi * D * D * D * D * D);
//H初始化
for (i = 0; i <= 80; i ++ )
{
H[i][0] = 150;//H的左边界值
}
for (i = 0; i <= 5; i ++ )
{
H[0][i] = 150.0;
Q[0][i] = 0.48;
}
for ( i = 0; i <= 80; i ++ )
{
for ( j = 0; j <= 5; j ++ )
{
if ( i > 0 && j > 0 )
{
Cp[i][j] = H[i-1][j-1] + B * Q[i-1][j-1] - R * Q[i-1][j-1] * abs(Q[i-1][j-1]); //计算第i行所有列的Cp
}
if ( i > 0 && j <= 4 )
{
Cm[i][j] = H[i-1][j+1] - B * Q[i-1][j+1] - R * Q[i-1][j+1] * abs(Q[i-1][j+1]); //计算第i行所有列的Cm
}
}
for (k = 0; k <= 4; k ++)
{
if ( i > 0 && 0 == k )
{
Q[i][k] = ( H[i][k] - Cm[i][k]) / B;
}
if ( i > 0 && k > 0 )
{
H[i][k] = 0.5 * (Cp[i][k] + Cm[i][k]); //计算第i行所有列的H
Q[i][k] = 0.5 * (Cp[i][k] - Cm[i][k]) / B; //计算第i行所有列的Q
}
}
if (i > 0)
{
tao = sqrt( (1 - i * t / 2.1 ) * (1 - i * t / 2.1 ) * (1 - i * t / 2.1 ) );
c = c0 * tao;
Q[i][5] = -g * B * c * c + sqrt(g * g * B * B * c * c * c * c + 2 * g * Cp[i][5] * c * c );
H[i][5] = Cp[i][5] - B * Q[i][5];
}
}
// 输出计算结果
cout << "计算结果:" << endl;
cout << "========================================================================" << endl;
cout << "各点H值" << endl;
cout << "========================================================================" << endl;
for (i = 0; i <= 80; i ++)
{
for (j = 0; j <= 5; j ++)
{
cout << setw(12) << H[i][j];// << '\t';
}
cout << endl;
}
cout << "========================================================================" << endl;
cout << "各点Q值" << endl;
cout << "========================================================================" << endl;
for (i = 0; i <= 80; i ++)
{
for (j = 0; j <= 5; j ++)
{
cout << setw(12) << Q[i][j];// << '\t';
}
cout << endl;
}
system("pause");
return 0;
}
输出结果到第22行时就出现
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND
-1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND