sum in function of function itself (recursive)

I have following Problem:
I want to calculate an adaptive Quadrature recursively. My Quadratur formula U is given by two funcitons S and T.
This is my code, where a and b are the endpoints of my interval, e is the error tolerance, and f is the function:
function y=adaptive_quadratur(a,b,e,f)
S=((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b))
T=(b-a)/12*(f(a)+4*f((3*a+b)/4)+2*f((a+b)/2)+4*f((a+3*b)/4)+f(b))
U=T+(T-S)/15
if abs(T-S)<=e*(b-a)
y=U;
return
end
adaptive_quadratur(a,(a+b)/2,e,f) + adaptive_quadratur((a+b)/2,b,e,f)
end
However Matlab gives me an Error for my last line, but I dont know why.

 Réponse acceptée

Torsten
Torsten le 14 Déc 2022
Modifié(e) : Torsten le 14 Déc 2022
Works for me:
f = @(x)x^2;
a = 0;
b = 1;
e = 1e-4;
y = adaptive_quadratur(a,b,e,f)
y = 0.3333
function y=adaptive_quadratur(a,b,e,f)
S=((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b));
T=(b-a)/12*(f(a)+4*f((3*a+b)/4)+2*f((a+b)/2)+4*f((a+3*b)/4)+f(b));
U=T+(T-S)/15;
if abs(T-S)<=e*(b-a)
y=U;
return
end
y = adaptive_quadratur(a,(a+b)/2,e,f) + adaptive_quadratur((a+b)/2,b,e,f)
end

1 commentaire

Thank you, I also just solved my issue using ChatGPT. I was missing an "y=" in front of my last line.
So this would be my working code:
function y=adaptive_quadratur(a,b,e,f)
S=((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b));
T=(b-a)/12*(f(a)+4*f((3*a+b)/4)+2*f((a+b)/2)+4*f((a+3*b)/4)+f(b));
U=T+(T-S)/15
if abs(T-S)<=e*(b-a)
y=U;
return
end
y=adaptive_quadratur(a,(a+b)/2,e,f) + adaptive_quadratur((a+b)/2,b,e,f)
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Numerical Integration and Differential Equations dans Centre d'aide et File Exchange

Produits

Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by