首页 > 解决方案 > 为显然不应该为零的变量获取零值

问题描述

我编写了以下代码来计算沿鳍的温度分布。出于某种原因,它一直将某些值计算为零,即使它们不是!

for t = 0:300:3000
for i = 2:L2
    if i ==2
        A(i)= 0.75*rhocp*DX/DT + 3*k/dx;
        B(i)= k/dx;
        C(i)= 2*k/dx;
        D(i)= 0.75*rhocp*(DX/DT)*T(i);
    elseif i == L2
        A(i)= 0.75*rhocp*DX/DT + 3*k/dx;
        B(i)= 2*k/dx;
        C(i)= k/dx;
        D(i)= 0.75*rhocp*(DX/DT)*T(i);
    else
        A(i)= 0.75*rhocp*DX/DT + 2*k/dx;
        B(i)= k/dx;
        C(i)= k/dx;
        D(i)= rhocp*(DX/DT)*T(i);
    end

    P(1) = 0;
    Q(1) = T(1);
    for i = 2:L2
        DENO = A(i) - C(i)*P(i-1);
        NUM = D(i)+ C(i)*Q(i-1);
        P(i) = B(i)/DENO;
        Q(i) = NUM/DENO;
    end

    for i =L2:-1:2
        if i == L2
            T(i) = Q(i);
        else
            T(i) = P(i)*T(i+1) + Q(i);
        end
    end
    T(L1) = ((2*k*T(L2) - h*DX*Tinf)/(2*k - h*DX));
end
disp (T);       

`

DENO 和 NUM 在第一次迭代中计算为零,即使在计算它们的值不为零!这会导致“除以零”错误。

A(2)-C(2)*P(1)

答案=

3750.

但从分析上讲,它有一个价值。

标签: scilab

解决方案


请提供参数值,以便可以运行您的脚本...丢失 DT ,我将其设置为 1 。

最后我发现了问题:你忘记结束循环
i = 2:L2 结束必须放在 P(1)=0 之前

此外,这个循环不依赖于 t 值,因此它可以放在循环之前 for t = 0:300:3000


推荐阅读