MATLAB What am I doing wrong in calculating temperature change in Matlab?

AI Thread Summary
The discussion centers on a user's confusion regarding temperature change calculations in MATLAB using a difference equation. The user initially encounters errors related to array access and multiplication in their script. They realize the need for two separate loops to account for the drink cooling in different environments: first in a room at 20 degrees and then outside at 12 degrees. After correcting the multiplication syntax, the user still faces issues, indicating that the code does not function as intended. The main takeaway is the necessity of structuring the code to handle the two distinct cooling periods effectively.
roam
Messages
1,265
Reaction score
12
I'm very confused on about solving the following question using Matlab:

A drink cools according to the difference equation:

Tn=Tn-1-0.02(Tn-1-Ta)

Where Tn is the temprature after n minutes. When you pour the drink it's 80 degrees. After you have poured it you leave it for 15 minutes in the kitchen where the air temprature is 20 degree, then you take it outside where the temprature is 12 degrees. Calculate the temprature of the drink afte it has been outside for 15 minutes.

This is my script:

Code:
k=0.02;
T_a=12;
S(1)=80;
S_a=20
for n=1:15
S(n+1)=S(n)-k(S(n)-S_a);
T(1)=S(16);
T(n+1)=T(n)-k(T(n)-T_a);
end
T(16)

I'm not quite sure what I've done wrong here but I keep getting errors like:

S_a =

20

? Attempted to access k(60); index out of bounds because numel(k)=1.

Error in ==> temp at 6
S(n+1)=S(n)-k(S(n)-S_a);

Any guidance is greatly appreciated.
 
Physics news on Phys.org
I'm no expert at MATLAB, but it looks like there are two problems. First, it doesn't seem to be parsing k(S(n)-S_q) as a multiplication of k * whatever. Looks like it thinks it's an array access?

And I don't see how you have two separate loops of 15 minutes each -- seems like you need to to the first 15 minutes, and then do another 15 minutes with the different delta-Temperature...
 
berkeman said:
I'm no expert at MATLAB, but it looks like there are two problems. First, it doesn't seem to be parsing k(S(n)-S_q) as a multiplication of k * whatever. Looks like it thinks it's an array access?

And I don't see how you have two separate loops of 15 minutes each -- seems like you need to to the first 15 minutes, and then do another 15 minutes with the different delta-Temperature...

Ok, I added the multiplication sign to my code:

Code:
k=0.02;
T_a=12;
S(1)=80;
S_a=20
for n=1:15
S(n+1)=S(n)-k*(S(n)-S_a);
T(1)=S(16);
T(n+1)=T(n)-k*(T(n)-T_a);
end
T(16)

And my code is still not working.:frown:

I think I need to have two separate loops for each 15 minutes because in the first 15 minutes the drink is placed in a room with a temperature of 20° and in the second 15 minutes it's placed outside where the temperature is 12°...
 
Back
Top