Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.

조회 수: 19 (최근 30일)
for Y(1) =1:1:numel(t)
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.

답변 (4개)

Torsten
Torsten 2022년 3월 13일
편집: Torsten 2022년 3월 13일
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
Image Analyst 2022년 3월 13일
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
Jan
Jan 2022년 3월 13일
편집: Image Analyst 2022년 3월 13일
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
Walter Roberson 2022년 3월 13일
The variable for a for loop must be a plain unindexed variable.

Torsten
Torsten 2022년 3월 13일
편집: Torsten 2022년 3월 13일
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
Torsten
Torsten 2022년 3월 14일
편집: Torsten 2022년 3월 14일
Look at the results. They won't change after t=10 (unless you change the function to be integrated).

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Function Handles에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by