【问题标题】:2d Steady Heat Conduction Matlab Error2d 稳态热传导 Matlab 误差
【发布时间】:2014-12-19 22:02:19
【问题描述】:

我正在尝试绘制等温线和热流线,我做了一些研究并且能够达到这一点:

clear ,clc
T1=10;
Lx=1;
Ly=1;
Nx=5;
Ny=5;
Nz=5;
Lz=1;
T2=150;
%input('input temperature at y=Ly in deg. C:  ')
dx=Lx/Nx;
dy=Ly/Ny;
x=[0:dx:1];
y=[0:dy:1];
theta = zeros(Nx + 1, Ny + 1);
theta(:,Ny+1) = 1;
Nc=12;

for j = 2:Ny
    for i = 2:Nx
        for n=1:1:199
            Theta=(2/pi).*x;
            x=((((-1)^(n+1))+1/n).*sin(n.*pi.*x/Lx).* ...
                (sinh(n.*pi.*y/Lx)/sinh(n.*pi.*Ly/Lx)));
            T=(Theta*(T2-T1))+T1;
        end
    end
end

for j = Ny+1:-1:1
    fprintf('%7.1f', T(:,j))
    fprintf('\n')
end

dT = (T2-T1)/Nc;
v = T1:dT:T2;
colormap(jet)
contourf(x, y, T, v)
colorbar
Tmax = max(T1,T2)
Tmin = min(T1,T2)
caxis ([Tmin, Tmax])
axis equal tight
title('Contour Plot of Temperature in deg. C')
xlabel('x (m)')
ylabel('y (m)')

但是当我尝试运行它时出现以下错误:

   76.6
   10.0
   10.0
   10.0
   10.0
   10.0
Error using contourf (line 69)
Z must be size 2x2 or greater.

Error in Isotherms (line 35)
contourf(x, y, T, v)

任何帮助将不胜感激,在此先感谢。

【问题讨论】:

  • T是一个向量,应该是一个矩阵(和meshgrid(x,y)一样大小)。

标签: matlab transfer heat


【解决方案1】:

你有很多问题。我看到的是:

首先,在顶部,将x 定义为x=[0:dx:1];,然后在三重循环中将其覆盖为x=((((-1)^(n+1))+1/n).*sin(n.*pi.*x/Lx).* ...。你真的要覆盖它吗?或者,是否应该将三重循环中的行分配给一个新变量?

其次,在您的三重循环中,您对 ji 的循环似乎没有做任何事情。看起来您想遍历xy 中的每个元素,但您没有这样做。这些循环要么是不必要的,要么您需要使用它们来索引您在循环核心的计算中使用的 xy 变量。

第三,假设你的三重循环是必要的,我看到你正在计算T 的每一步通过ij,但你没有以任何方式保存T 值。 .T 被每个循环覆盖。我认为您可能希望通过 `T(i,j)=(Theta*(T2-T1))+T1;" 之类的方式保存 T 值。

最后,当您调用 contour 命令时,T 的大小(即行数和列数)必须与您也提供给 @ 的 xy 向量兼容987654340@。具体来说,length(x) 必须等于T 的行数,length(y) 必须等于T 的列数(反之亦然,如果您只是使用T 的转置)。

鉴于您现有的for 循环转到2:N,我认为您最终不会得到正确大小的T。因此,您可能需要执行类似 `contour(x(2:end),y(2:end),T,v);' 之类的操作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2011-11-13
    • 2022-01-07
    • 2011-05-24
    • 2013-08-23
    相关资源
    最近更新 更多