Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
Afficher commentaires plus anciens
for Y(1) =1:1:numel(t)
↑
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
Réponses (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
le 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 commentaires
Navaneetha Krishnan Murugadoss
le 13 Mar 2022
Modifié(e) : Walter Roberson
le 13 Mar 2022
Walter Roberson
le 13 Mar 2022
k1 = fyt ((Y(1),Y(2));
12 3 2 3 21
You have one more ( than you have )
Torsten
le 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
le 13 Mar 2022
Jan
le 13 Mar 2022
Modifié(e) : Image Analyst
le 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
le 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 commentaires
Navaneetha Krishnan Murugadoss
le 14 Mar 2022
Navaneetha Krishnan Murugadoss
le 14 Mar 2022
Walter Roberson
le 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).
Catégories
En savoir plus sur MATLAB dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!