Index in position 1 exceeds array bounds (must not exceed 1) AT d_theta_plus = (theta(j+1, n) - theta(j, n)) / delta_z;
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
D = 1.51 * (10^(-6));
tou = 2.0 / 3.0;
k_y = 0.37;
k_a = 0.85;
v_w = 0.34;
v_x = 0.66;
L = 100;
N_z = 100;
T = 2400;
N_t = 40;
delta_z = L / N_z;
delta_t = T / N_t;
rho_s = 1;
theta = 0.1;
M_m_a = 1100; % Assuming M_m_a is a constant
% Create arrays for M and theta, assuming they have appropriate initial values
M = zeros(N_z, N_t);
theta_j = zeros(N_z, N_t);
for n = 1:N_t
for j = 1:(N_z-1) % Start from 2 to N_z-1 to avoid exceeding array bounds
% Finite difference approximations for M and theta
d_theta_plus = (theta(j+1, n) - theta(j, n)) / delta_z;
d_theta_minus = (theta(j, n) - theta(j-1, n)) / delta_z;
d_M_plus = (M(j+1, n) - M(j, n)) / delta_z;
d_M_minus = (M(j, n) - M(j-1, n)) / delta_z;
% Update equation for M
M(j, n+1) = (1 / theta(j, n+1)) * ((theta(j, n) * M(j, n)) + (delta_t / delta_z) * ...
((-v_w - v_x) * ((theta(j+1, n) - theta(j-1, n)) / (2 * delta_z) * ...
((M(j+1, n) - M(j-1, n)) / (2 * delta_z))) + ...
(tou * D) * (d_theta_plus * d_M_plus - d_theta_minus * d_M_minus)) + ...
(delta_t * (k_y * rho_s * M(j, n+1)) - (k_a * (1 - (M(j, n+1) / M_m_a)) * theta(j, n) * M(j, n))));
end
end
Antworten (2)
Walter Roberson
am 29 Aug. 2023
You initialize theta as a scalar. You have for j=1 to something. You access theta(j+1,something) but when j is 1 that is theta(2,something) which does not exist since theta is scalar
0 Kommentare
Shubham
am 29 Aug. 2023
Bearbeitet: Shubham
am 29 Aug. 2023
Hi Shwetha,
Based on your code, it seems that there are two problems in the program:
1. Accessing `theta(j+1,n)` instead of `theta_j(j+1,n)`: It appears that you intended to access the variable `theta_j` instead of the general variable `theta`. This could be the reason for the error you encountered. Make sure to update the code to access the correct variable.
2. Out-of-bounds access in the equation to update `M`: The equation `M(j,n+1)` tries to access an element that goes out of bounds when `n` reaches `N_t`. This will result in an error. Please ensure that the loop or condition controlling the value of `n` is within the valid range to avoid this issue.
Additionally, it is mentioned in the code comment that `j` starts from 2, but it seems that it starts from 1 in the code. Please verify and adjust the code accordingly.
I hope this clarifies the issues in the code.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!