es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Necesito operar este ciclo en Matlab.

La función del código tiene como objetivo simular la transferencia de calor a través de una barra de acero inoxidable y generar una matriz T que indica la temperatura en diferentes puntos de la barra después de un tiempo determinado. A continuación se encuentra la traducción del código y el resultado obtenido.

function acero_inoxidable(~,~,~)
clear,clc

%Parámetros iniciales
T_i = [0 0 12.5 25 37.5 50 0]; %Temperatura inicial
k = 0.0162; % Conductividad térmica del acero inoxidable
cp = 0.5; % Capacidad calorífica del acero inoxidable
rho = 8000; % Densidad del acero inoxidable
dt = 3; % Paso de tiempo
dx = 0.0125; % Distancia entre puntos
t = 120; % Tiempo total
q = 20000; % Generación de calor

Fo = (k*dt)/(((dx)^2)*rho*cp); % Parámetro Fo
e_gen = q*(dt)/(rho*cp); % Energía generada en cada paso de tiempo
n = t/dt; %Número de pasos de tiempo
p = n;
T = zeros(n,7); % Matriz T inicial

for iteration = 1:p %Iteraciones en el tiempo

    for x = 2:6 %Iteraciones en la barra

     T(iteration,x) = [Fo*(T_i(1,x+1)+273.15 + T_i(1,x-1)+273.15) + (T_i(1,x)+273.15)*(1-2*Fo) + e_gen - 273.15]; %Cálculo de la temperatura
    end

end
T_i = T; %Actualización de la temperatura inicial
disp(T) %Impresión de la matriz T
end

El resultado obtenido es una matriz T que muestra la temperatura en diferentes puntos de la barra después de 40 iteraciones de tiempo. Sin embargo, la temperatura inicial (T_i) no se actualiza después de cada iteración, lo que hace que la matriz T sea siempre la misma. Para corregir esto se debe agregar un bucle para realizar 40 iteraciones y actualizar la temperatura inicial después de cada iteración. A continuación se muestra el código corregido y el resultado obtenido.

function acero_inoxidable(~,~,~)
clear,clc

%Parámetros iniciales
T_i = [0 0 12.5 25 37.5 50 0]; %Temperatura inicial
k = 0.0162; % Conductividad térmica del acero inoxidable
cp = 0.5; % Capacidad calorífica del acero inoxidable
rho = 8000; % Densidad del acero inoxidable
dt = 3; % Paso de tiempo
dx = 0.0125; % Distancia entre puntos
t = 120; % Tiempo total
q = 20000; % Generación de calor

Fo = (k*dt)/(((dx)^2)*rho*cp); % Parámetro Fo
e_gen = q*(dt)/(rho*cp); % Energía generada en cada paso de tiempo
n = t/dt; %Número de pasos de tiempo
T = zeros(n,7); % Matriz T inicial

for j=1:40 %Iteraciones para actualizar la temperatura inicial

    for i = 1:n %Iteraciones en el tiempo 

        for x = 2:6 %Iteraciones en la barra

            T(i,x) = [Fo*(T_i(1,x+1)+273.15 + T_i(1,x-1)+273.15) + (T_i(1,x)+273.15)*(1-2*Fo) + e_gen - 273.15]; %Cálculo de la temperatura
        end

    end
    T_i = T(n,:); %Actualización de la temperatura inicial
end
disp(T) %Impresión de la matriz T
end

El resultado obtenido es una matriz T que muestra la temperatura en diferentes puntos de la barra después de 40 iteraciones de tiempo, donde la temperatura inicial se actualiza después de cada iteración. Esta matriz se puede utilizar para realizar diferentes análisis y entender mejor la transferencia de calor en diferentes materiales.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, es necesario almacenar cada T_i calculado en el bucle de vuelta en T_i. Esto se puede hacer asignando T a T_i al final de cada iteración, como se muestra a continuación:

    para iteración = 1:p
    
        para x = 2:6
    
            T(iteración,x) = [Fo*(T_i(1,x+1)+273.15 + T_i(1,x-1)+273.15) + (T_i(1,x)+273.15)*(1-2*Fo) + e_gen - 273.15];
        end
    
        T_i = T(iteración,:);
        disp(T_i)
    
    end
    

    De esta manera, cada T_i calculado en el bucle se almacena de vuelta en la variable T_i, actualizándola para la próxima iteración. Los T_i actualizados se imprimen como salida. Note que he utilizado T(iteration,:) en lugar de T(iteration,x) para almacenar cada T_i en la variable T_i.

Comments are closed.