Vectors must be same length
2 views (last 30 days)
Show older comments
% Define constants
L = 50; % Length of the plate in cm
W = 30; % Width of the plate in cm
T_top = 85; % Temperature at the top side in °C
T_sides = 25; % Temperature at the left, bottom, and right sides in °C
accuracy = 1e-2; % Desired accuracy
% Define the points where temperature needs to be calculated
points = [L/4, W/4; 3*L/4, W/4; L/2, W/2; L/4, 3*W/4; 3*L/4, 3*W/4];
% Initialize variables
T = zeros(size(points, 1), 1);
n = 1;
accuracy_met = false;
% Calculate temperature at each point using the infinite series
while ~accuracy_met
T_old = T;
for i = 1:size(points, 1)
x = points(i, 1);
y = points(i, 2);
% Calculate the temperature at the current point (x, y)
T(i) = T_sides + 4 * T_top / pi;
for m = 1:0.01:10 % Considering odd terms in the series
T(i) = T(i) + (4 * T_top / (pi * m)) * sinh(m * pi * x / L) * sin(m * pi * y / W);
end
end
% Check for accuracy
max_diff = max(abs(T - T_old));
if max_diff < accuracy
accuracy_met = true;
end
n = n + 1;
end
% Display the number of terms required for the desired accuracy
fprintf('Number of terms required for accuracy of %.2f°C: %d\n', accuracy, n);
% Plot Temperature vs. Number of Terms
figure;
plot(1:n, T, '-o');
xlabel('Number of Terms');
ylabel('Temperature (°C)');
title('Temperature vs. Number of Terms');
grid on;
% Display the solution in tabular form
results = [points, T];
disp('Point (x, y) Temperature (°C)');
disp(results);
0 Comments
Accepted Answer
檮杌
on 4 Oct 2023
The error occurs because n=3 but T is a 1x5 vector.
% Define constants
L = 50; % Length of the plate in cm
W = 30; % Width of the plate in cm
T_top = 85; % Temperature at the top side in °C
T_sides = 25; % Temperature at the left, bottom, and right sides in °C
accuracy = 1e-2; % Desired accuracy
% Define the points where temperature needs to be calculated
points = [L/4, W/4; 3*L/4, W/4; L/2, W/2; L/4, 3*W/4; 3*L/4, 3*W/4];
% Initialize variables
T = zeros(size(points, 1), 1);
n = 1;
accuracy_met = false;
% Calculate temperature at each point using the infinite series
while ~accuracy_met
T_old = T;
for i = 1:size(points, 1)
x = points(i, 1);
y = points(i, 2);
% Calculate the temperature at the current point (x, y)
T(i) = T_sides + 4 * T_top / pi;
for m = 1:0.01:10 % Considering odd terms in the series
T(i) = T(i) + (4 * T_top / (pi * m)) * sinh(m * pi * x / L) * sin(m * pi * y / W);
end
end
% Check for accuracy
max_diff = max(abs(T - T_old));
if max_diff < accuracy
accuracy_met = true;
end
n = n + 1;
end
% Display the number of terms required for the desired accuracy
fprintf('Number of terms required for accuracy of %.2f°C: %d\n', accuracy, n);
% Plot Temperature vs. Number of Terms
figure;
plot(1:length(T), T, '-o');
xlabel('Number of Terms');
ylabel('Temperature (°C)');
title('Temperature vs. Number of Terms');
grid on;
% Display the solution in tabular form
results = [points, T];
disp('Point (x, y) Temperature (°C)');
disp(results);
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!