热流模拟中矩阵指数的误差

时间:2015-12-15 11:51:17

标签: matlab matrix

当我运行这个我编写的代码来模拟MATLAB中的热流模型时,我得到的错误是“下标索引必须是真正的正整数或逻辑”。我认为这可能与我的linspace命令有关,生成一个不同类型的变量而不是整数,所以它不能正常工作,但我不知道如何修改我的脚本来纠正这个。

Cp = 400;
p = 8960;
k = 400;
a = k/(p*Cp); 
dt = 0.01;
dx = sqrt(5*a*dt); %% 5 as 1/5 is smaller than 1/4 for stability

T = zeros(20000,10000);

for x = linspace(1,10000,10000);
    T(x,:) = 1000; 
end

for x = linspace(10001,20000,10000);     
    T(x,:) = 25;
end

for  t = linspace(1,10000,10000); 
    for x = linspace(1,20000,20000);
         T(x,t+1) = T(x,t)+a*dt*((T(x-1,t)-2*T(x,t)+ T(x+1,t))/(dx*dx)); 
    end  
end

1 个答案:

答案 0 :(得分:2)

爆炸的路线是:

Core Data

具体而言T(x,t+1) = T(x,t)+a*dt*((T(x-1,t)-2*T(x,t)+ T(x+1,t))/(dx*dx)); 触发错误,因为T(x-1,t)从1开始,因此x - 1 = 0且0不是有效索引。

在更一般的Matlab编码说明中,我会写x而不是x = 1:10000,但这不会导致错误。请注意,我只是解决了Matlab错误消息。我不知道你的整体代码是否有效。