Coding an equation (with summation within equation) with nested for Loops

2 views (last 30 days)
Hello,
I am attempting to code the following equation in matlab using three for loops:
However, my initial values are incorrect and I believe my issue is related to how I am handling the the summation inside the equation. I would appreciate any suggestions on how to alter my for loop.
for i=1:length(x)
for j=1:length(Temp(:,1))
for n=1:20
T_xt(i,j,n)= T_amb2 + (q_p./k).*(((exp(m.*(x(i)-2.*L))+...
exp(-m.*x(i)))/(m.*(1-exp(-2.*m.*L))))-...
((2.*exp(-m^2.*a.*t(j)))*(1./(2.*m.^2*L)+...
(L.*((cos((n.*pi.*x(i))./L).*...
exp((-n.^2.*pi.^2.*a.*t(j))./L.^2))./(m.^2.*L.^2 + n.^2*pi^2))))));
end
end
end

Accepted Answer

Walter Roberson
Walter Roberson on 20 Nov 2020
You are probably summing T_xt(:,:,:) over the third dimension to get T(x,t) . However, when you do that, you would be adding T_amb2 once for each n value, which is not correct.
You can meaningfully create T_xt(i,j,n) but it should only be the cos*exp/sum term. Then you would sum those along the third dimension, multiply by 2*exp(-m^2*alpha*t), subtract from the [] and so on.
  1 Comment
AbeSal
AbeSal on 21 Nov 2020
Thank you for the suggestion. After updating my code my plot looked better but there was an issue at t=0. Are there additionally changes you might suggest I make to the code?
S(1)=0;
for i=1:length(x)
for j=1:length(Temp(:,1))
T_xt(i,j)= T_amb + (q_p./k).*(((exp(m.*(x(i)-2.*L))+...
exp(-m.*x(i)))/(m.*(1-exp(-2.*m.*L))))-...
((2.*exp(-m^2.*a.*t(j)))*(1./(2.*m.^2*L)+...
(L.*S(end)))));
for n = 1:20
S(n+1) = S(n)+(cos((n.*pi.*x(i))./L).*...
exp((-n.^2.*pi.^2.*a.*t(j))./L.^2))./(m.^2*L.^2 + n.^2.*pi.^2);
end
end
end

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!