scilab - 为显然不应该为零的变量获取零值
问题描述
我编写了以下代码来计算沿鳍的温度分布。出于某种原因,它一直将某些值计算为零,即使它们不是!
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.
但从分析上讲,它有一个价值。
解决方案
请提供参数值,以便可以运行您的脚本...丢失 DT ,我将其设置为 1 。
最后我发现了问题:你忘记结束循环
i = 2:L2 结束必须放在 P(1)=0 之前
此外,这个循环不依赖于 t 值,因此它可以放在循环之前 for t = 0:300:3000
推荐阅读
- database - Python 3 网页抓取,数据提取
- python - 使用动态创建的布尔掩码时,numpy“TypeError:输入类型不支持 ufunc 'bitwise_and'”
- python - google-api-core 1.1.2 有要求 setuptools>=34.0.0
- java - 按字段对一组元素进行排序
- python - 对`_imp__的未定义引用
- java - 不一致的状态比较 Java
- python - 如何在单次遍历中找到python链表中的中间元素?
- java - jsp文件中的if语句进不去
- arduino - 在没有以太网屏蔽的情况下将数据从 arduino 发送到 sql server
- javascript - 处理 JS 计算的 CSS 值而不使用内联或嵌入样式