Hi Khang,
The error "Too many output arguments" indicates that the "midpoint" function did not return two outputs. You need to initializes time and velocity vectors and applies the midpoint method to solve the differential equation. Kindly refer to the folllowing revised code for better understanding:
function [t, v] = midpoint(dvdt, tspan, v0, h)
% Initialize time and solution vectors
t = tspan(1):h:tspan(2);
v = zeros(size(t));
v(1) = v0;
% Midpoint method loop
for n = 1:(length(t) - 1)
tn = t(n);
vn = v(n);
k1 = h * dvdt(tn, vn);
k2 = h * dvdt(tn + h/2, vn + k1/2);
v(n+1) = vn + k2;
end
end
m = 1000;
f = 75000;
v0 = 0;
h = 0.1;
tspan = [0 10];
c = [50, 100, 500, 1000, 2000];
dvdt = cell(1, length(c));
% Create the differential equations for each value of c
for i = 1:length(c)
dvdt{i} = @(t, v) (f - c(i) * v) / m;
end
t = cell(1, length(c));
v = cell(1, length(c));
% Solve using the midpoint method for each value of c
for k = 1:length(c)
[t{k}, v{k}] = midpoint(dvdt{k}, tspan, v0, h);
end