Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
Show older comments
for Y(1) =1:1:numel(t)
↑
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
Answers (4)
Y(1) is a scalar (single number), 1:numel(t) is a vector. You can't set a scalar to a vector.
Use an unused variable name instead, e.g.
for k = 1:numel(t)
Image Analyst
on 13 Mar 2022
Try
for k = 1 : numel(t)
this_t = t(k);
Y(k) = 5 * this_t ^ 2 + 42; % Replace with whatever your formula for Y is.
end
5 Comments
Navaneetha Krishnan Murugadoss
on 13 Mar 2022
Edited: Walter Roberson
on 13 Mar 2022
Walter Roberson
on 13 Mar 2022
k1 = fyt ((Y(1),Y(2));
12 3 2 3 21
You have one more ( than you have )
Torsten
on 13 Mar 2022
Fyt = @(t,y) [(-K*y(1)*y(2));
(-Yb*(K*y(1)*y(2)));
(Yp*(K*y(1)*y(2)))];
instead of
Fyt = @(t,y) [(-K*Y(1)*Y(2));
(-Yb*(K*Y(1)*Y(2)));
(Yp*(K*Y(1)*Y(2)))];
Navaneetha Krishnan Murugadoss
on 13 Mar 2022
Jan
on 13 Mar 2022
Edited: Image Analyst
on 13 Mar 2022
Which error message do you get? Avoid overdoing the parentheses:
Fyt = @(t,Y) [-K * Y(1) * Y(2); ...
-Yb * K * Y(1) * Y(2); ...
Yp * K * Y(1) * Y(2)];
This looks cleaner.
Note that you have defined "Fyt", but call "fyt" later.
This cannot work also:
k2 = fyt ((Y(1)+0.5*h, Y(2)+0.5*h*k1));
% ^ ^
Here the inner parentheses combine the two arguments, but the function Fyt (not fyt) should get 2 arguments. Better:
k2 = Fyt(Y(1) + 0.5 * h, Y(2) + 0.5 * h * k1);
Walter Roberson
on 13 Mar 2022
0 votes
The variable for a for loop must be a plain unindexed variable.
h=3600;
A0=1;
B0=3;
P0=0;
K=5*10^-5;
Yb=1;
Yp=0.15;
t = 0:0.1:10;
fyt = @(t,y) [(-K*y(1)*y(2));
(-Yb*(K*y(1)*y(2)));
(Yp*(K*y(1)*y(2)))];
Y = zeros(3,numel(t))
Y(1,1) = 1.0;
Y(2,1) = 3.0;
Y(3,1) = 0;
for i=1 : numel(t)-1
k1 = fyt(t(i),Y(:,i));
k2 = fyt(t(i)+0.5*h,Y(:,i)+0.5*h*k1);
k3 = fyt(t(i)+0.5*h,Y(:,i)+0.5*h*k2);
k4 = fyt(t(i)+h,Y(:,i)+h*k3);
Y(:,i+1) = Y(:,i) + (h/6)*(k1+2*k2+2*k3+k4);
end
figure (1)
plot(t,Y(1,:))
figure (2)
plot(t,Y(2,:))
figure (3)
plot(t,Y(3,:))
4 Comments
Navaneetha Krishnan Murugadoss
on 14 Mar 2022
Navaneetha Krishnan Murugadoss
on 14 Mar 2022
Walter Roberson
on 14 Mar 2022
Change
t = 0:0.1:10;
to
t = 0:h:43200;
Look at the results. They won't change after t=10 (unless you change the function to be integrated).
Categories
Find more on MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!