error in ode45 - function must return a column vector
8 次查看(过去 30 天)
显示 更早的评论
I'm trying to get matlab to solve at plot solution lines on top of my slope field. But it just keeps telling me that my function doesn't return a column vector.
I have tried doing the transpose f = f(:); but still doesn't work
this is my code.
f = @(t,y) (3880 - 0.817*y + (731000*y.^7.88)/(116000.^7.88 + y.^7.88));
dirfield(f,0:10:100,0:1000:10000);
hold on;
y0 = 0:100:8000;
f = f(:);
[ts,ys] = ode45(f,[0,50],y0);
plot(ts,ys);
hold off
0 个评论
回答(1 个)
Star Strider
2024-6-8
It would help to have ‘dirfield’ (whatever it is). The other problem is that with one differential equation, ‘y0’ has to have one value, not a vector.
Put the plot and the differential equation solution in a loop, and loop over the ‘y0’ values —
f = @(t,y) (3880 - 0.817*y + (731000*y.^7.88)/(116000.^7.88 + y.^7.88));
% dirfield(f,0:10:100,0:1000:10000);
y0 = 0:100:8000;
figure
hold on
for k = 1:numel(y0)
[ts,ys] = ode45(f,[0,50],y0(k));
plot(ts,ys)
end
hold off
grid
xlabel('tx')
ylabel('ys')
I am not certain what you want as a result.
.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
