error with index and array elements

5 ビュー (過去 30 日間)
Henry Bartholomew
Henry Bartholomew 2021 年 2 月 6 日
回答済み: Star Strider 2021 年 2 月 6 日
Hello all,
I am asking for your help with an error I keep getting with my code. First, here is my current code:
clear all;
close all;
clc;
% Analytical solution
t=0:600; % Makes time go from 0 to 600 sec
Tcoffee=(130*exp(-t/200)+70); % The function for the temp. of the coffee
% Numerical solution
X0=1; % Initial state
T0=0; % Initial time
T=600; % Final time of 600 sec
h=30; % Time step of 30 sec
g=70; % Forcing function (room temp)
N=T/h; % Number of time steps
Thist=[T0:h:T]; % Creates a vector of the solution
Xhist=zeros(1,N); % Creates a row vector of zeros
Xhist(1)=X0; % Assigns the first element
for i=2:1:N+1
X=Xhist(i-1); % "Old" X from step i-1
T=Thist(i-1); % "Old" time from step i-1
f=(130*exp(-T/200)+g); % Dynamics
Xhist=X+f*h; % Euler's method
end
and the error i keep getting:
Index exceeds the number of array elements (1).
Error in Untitled (line 22)
X=Xhist(i-1); % "Old" X from step i-1
Lastly, some things to note are that the value for Xhist when i type it into the command window is 6001 and not a table. What is also weird is that if i add a % infront of
g=70; % Forcing function (room temp)
becomes a 1x20 double table but then I get the error:
Unrecognized function or variable 'g'.
Error in Untitled (line 24)
f=(130*exp(-T/200)+g); % Dynamics
but if I change g in
f=(130*exp(-T/200)+g); % Dynamics
to be +70, Xhist goes back to being the number 6001 again. So if anyone can shed so light on why I'm having this issue, I would be most appreciative.

採用された回答

Star Strider
Star Strider 2021 年 2 月 6 日
In this line:
Xhist=X+f*h; % Euler's method
‘XHist’ is re-defined as a scalar. That’s causing the problem. It probably needs to be subscripted. I leave that to you.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpline Postprocessing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by