我无法获取我的函数的结果。如果1和2适用,但是对于第三个函数它不起作用。它只是打印2到9结果它应该解决函数中的方程并给我结果但它不起作用。你能告诉我这有什么问题吗?
class Program
{
public double tri(double a,double b,double c,double d,int n)
{
double[] w = new double[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int m = n - 2;
double result = 0;
for (int i = 1; i <= m; i++)
{
b = (b - c) * (a / b);
d = (d - d) * (a / b);
w[i] = d / b;
}
for (int j = m ; j <= 1; j--)
{
w[j] = (d - w[j + 1] * c) / b;
result = w[j];
}
return result;
}
static void Main(string[] args)
{
int n = 10;
double dif_co = 0.00000036;
double t_int = 0.1;
double s = 0.117;
double n_dis = 1.111;
double[] temp = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
double a, b, c, d;
Program heat = new Program();
for (int i = 1; i <= n; i++)
{
if (i == 1)
{
a = 0;
b = 1;
c = 0;
d = 700;
temp[0]=700;
Console.WriteLine("temprature is {0}", temp[0].ToString());
}
else if (i == n)
{
a = 0;
b = 1;
c = 0;
d= 300;
temp[9]=300;
Console.WriteLine("temprature is {0}", temp[9].ToString());
}
else
{
a = -((2 * dif_co * t_int) - s * n_dis * t_int);
b = (4 * (t_int * t_int)) + 4 * dif_co * t_int;
c = (2 * dif_co * t_int) + (s * n_dis * t_int);
d = ((2 * dif_co * t_int) * 300) + ((4 * (n_dis * n_dis) -
(4 * dif_co * t_int)) * 300) + ((2 * dif_co * t_int)
+ (s * n_dis * t_int) * 300);
temp[i] = heat.tri(a, b, c, d, n);
Console.WriteLine("Temprature is {0}", i, temp[i].ToString());
}
}
}
}
答案 0 :(得分:1)
我建议使用调试器并在小块中精心设计代码,以使其成长为您最终需要的内容。我发现的第一个错误是你有一个无效的倒计时循环
for (int j = m ; j <= 1; j--)
应该阅读
for (int j = m ; j >= 1; j--)
即。假设m大于1,所以在你的代码中,循环永远不会执行。
我发现的第二件事是您在三函数中使用值d作为乘数但是在循环中将d设置为( d - d ) *别的东西 - 你能发现明显的错误吗?
没有去寻找其他任何东西,但我强烈建议你给变量命名一些有意义的“a,b,c,d ......”让错误发现变得更加困难。