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 commentaires

Hazel Can
Hazel Can le 25 Mai 2022
@Lateef Adewale Kareem Would this kind of code be correct for the BDF method?
Torsten
Torsten le 25 Mai 2022
Modifié(e) : Torsten le 25 Mai 2022
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
Hazel Can le 26 Mai 2022
I didnt understand. How exactly do I do this?
Torsten
Torsten le 26 Mai 2022
Modifié(e) : Torsten le 26 Mai 2022
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
Hazel Can le 29 Mai 2022
i dont know how i use the 'solve command' :(
Hazel Can
Hazel Can le 29 Mai 2022
This code piece can not work correctly without errors.
%Adam-Bashforth method%
x = ( 4*y_m(n-1)-y_m(n-2) )/3 + 2*h/3* ( mu*( x - cos(t(n)) ) - sin(t(n)) )
S=solve(x)
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

Connectez-vous pour commenter.

Réponses (2)

Jan
Jan le 25 Mai 2022

0 votes

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
Current plot held
plot(t,y_m);
%plot(t,y,'-o');
legend('Exact Solution','BDF Solution')
xlabel('t')
ylabel('y')
title('When h = 0.01 and µ=20')

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by