Not enough input arguments.
显示 更早的评论

Not enough input arguments.
Error in BDF>@(t,y)mu*(y-cos(t))-sin(t) (line 7)
f_m = @(t,y) mu*(y-cos(t))-sin(t);
Error in BDF (line 14)
y_m(i)=(4.*y_m(i-1)-y_m(i-2))/3+(2/3).*h*(3*f_m(t(i)))
%% Backward Difference Formula Method %%
clc; clear all;
h=0.01;
t=0:h:1;
n=numel(t);
mu = 20;
f_m = @(t,y) mu*(y-cos(t))-sin(t);
exact = @(t) exp(mu*t)+cos(t);
%initials%
y_m(1)=exact(0);
y_m(2)=exact(h);
%Adam-Bashforth method%
for i=3:n
y_m(i)=(4.*y_m(i-1)-y_m(i-2))/3+(2/3).*h*(3*f_m(t(i)))
end
plot(t, exact(t));
hold
plot(t,y);
%plot(t,y,'-o');
legend('Exact Solution','BDF Solution')
xlabel('t')
ylabel('y')
title('When h = 0.01 and µ=20')
6 个评论
Hazel Can
2022-5-25
The BDF method gives the following equation for y(n):
y(n) = ( 4*y(n-1)-y(n-2) )/3 + 2*h/3* ( mu*( y(n) - cos(t(n)) ) - sin(t(n)) )
Solve this equation for y(n) and update y_m(i) in the loop accordingly.
Hazel Can
2022-5-26
If I write
x = ( 4*y(n-1)-y(n-2) )/3 + 2*h/3* ( mu*( x - cos(t(n)) ) - sin(t(n)) )
and say to solve for x, do you know how to proceed ?
After doing this, your loop looks like
for i=3:n
y_m(i) = the expression you got for x (with y(...) replaced by y_m(...))
end
Hazel Can
2022-5-29
Hazel Can
2022-5-29
回答(2 个)
Jan
2022-5-25
f_m = @(t,y) mu*(y-cos(t))-sin(t);
f_m is a function with 2 inputs.
y_m(i)=(4.*y_m(i-1)-y_m(i-2))/3+(2/3).*h*(3*f_m(t(i)))
% ^^^^
Here you provide 1 input only.
%% Backward Difference Formula Method %%
clc; clear all;
h=0.01;
t=0:h:1;
n=numel(t);
mu = 20;
f_m = @(t,y) mu*(y-cos(t))-sin(t);
exact = @(t) exp(mu*t)+cos(t);
%initials%
y_m(1)=exact(0);
y_m(2)=exact(h);
%Adam-Bashforth method%
for i=3:n
fun = @(x) x - (4*y_m(i-1)-y_m(i-2))/3 - 2*h/3*f_m(t(i), x);
y_m(i)=fzero(fun, y_m(i-1));
end
plot(t, exact(t)); hold
plot(t,y_m);
%plot(t,y,'-o');
legend('Exact Solution','BDF Solution')
xlabel('t')
ylabel('y')
title('When h = 0.01 and µ=20')
类别
在 帮助中心 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
