Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
18 次查看(过去 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.
0 个评论
回答(4 个)
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
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);
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,:))
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Function Handles 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!