quad2d: Reached the maximum number of function evaluations
Show older comments
I'm trying to find the error in the following code. I want to iterate:
for iter = 1:10
% uallA = Int_GLA.*(-Int_GC - Int_GB) + Int_GA;
uallA = Int_GLA.*(-uallC - uallB) + Int_GA;
uallB = Int_GLB.*(-uallC - uallB) + Int_GB;
uallC = Int_GLC.*(-uallC - uallB) + Int_GC;
end
However, I receive the following error:
Warning: Reached the maximum number of function evaluations (2000). The result fails the global error test.
This is my code:
clc; clear all; close all;
x = linspace(-10, 10, 51);
t = linspace(0.1, 5, 51);
nx = length(x);
nt = length(t);
Wx = x(2) - x(1);
Wt = t(2) - t(1);
f = @(x) exp(-x.^2);
%%A right
for mx = 1:nx
for mt = 1:nt
GA = @(xi) 1./sqrt(4*pi*(t(mt))).*exp(-(x(mx) - xi).^2./(4*(t(mt)))).*exp(-xi.^2);
funGA = quad(GA, x(1), x(end));
Int_GA(mx, mt) = funGA;
end
end
figure(1)
surf(t,x, Int_GA)
xlabel('t')
ylabel('x')
zlabel('u')
%%B right
for mx = 1:nx
for mt = 1:nt
GB = @(xi) 1./sqrt(4*pi*(t(mt))).*exp(-(x(mx) - xi).^2./(4*(t(mt))))...
.*(-(x(mx) - xi)/(2*t(mt))).*exp(-xi.^2);
funGB = quad(GB, x(1), x(end));
Int_GB(mx, mt) = funGB;
end
end
figure(2)
surf(t,x, Int_GB)
xlabel('t')
ylabel('x')
zlabel('u')
%%C right
for mx = 1:nx
for mt = 1:nt
GC = @(xi) 1./sqrt(4*pi*(t(mt))).*exp(-(x(mx) - xi).^2./(4*(t(mt))))...
.*((x(mx)-xi).^2/(4*t(mt).^2) - 1./(2*t(mt))).*exp(-xi.^2);
funGC = quad(GC, x(1), x(end));
Int_GC(mx, mt) = funGC;
end
end
figure(3)
surf(t,x, Int_GC)
xlabel('t')
ylabel('x')
zlabel('u')
%%A left
for mt1 = 1:nt
for mx1 = 1:nx
GLA = @(xi, ta) 1./sqrt(4*pi*(t(mt1)-ta)).*exp(-(x(mx1) - xi).^2 ...
./(4*(t(mt1)-ta)));
funGLA = quad2d(GLA, x(1), x(end), t(1), t(mt1), 'AbsTol',1e-4, 'FailurePlot',true);
Int_GLA(mx1, mt1) = funGLA;
end
end
figure(4)
surf(t,x, Int_GLA)
xlabel('t')
ylabel('x')
zlabel('u')
%%B left
for mt2 = 1:nt
for mx2 = 1:nx
GLB = @(xi, ta) -(x(mx2) - xi)./(2*(t(mt2) - ta))./sqrt(4*pi*(t(mt2)-ta))...
.*exp(-(x(mx2) - xi).^2 ./(4*(t(mt2)-ta)));
funGLB = quad2d(GLB, x(1), x(end), t(1), t(mt2), 'AbsTol',1e-4, 'FailurePlot',true);
Int_GLB(mx2, mt2) = funGLB;
end
end
%%C left
for mt3 = 1:nt
for mx3 = 1:nx
GLC = @(xi, ta) 1./(4*(t(mt3)-ta).^2).*((x(mx3) - xi).^2 - ...
2*(t(mt3)-ta))./sqrt(4*pi*(t(mt3)-ta)).*exp(-(x(mx3) - xi).^2 ...
./(4*(t(mt3)-ta)));
funGLC = quad2d(GLC, x(1), x(end), t(1), t(mt3), 'AbsTol',1e-4, 'FailurePlot',true);
Int_GLC(mx3, mt3) = funGLC;
end
end
uallB = zeros(nx, nt);
uallC = zeros(nx, nt);
for iter = 1:10
% uallA = Int_GLA.*(-Int_GC - Int_GB) + Int_GA;
uallA = Int_GLA.*(-uallC - uallB) + Int_GA;
uallB = Int_GLB.*(-uallC - uallB) + Int_GB;
uallC = Int_GLC.*(-uallC - uallB) + Int_GC;
end
% uallA1 = Int_GA;
% uallB1 = Int_GB;
% uallC1 = Int_GC;
% uallA = Int_GLA.*(-uallC1 - uallB1) + Int_GA;
figure(5)
surf(t,x, uallA)
xlabel('t')
ylabel('x')
zlabel('u')
Accepted Answer
More Answers (0)
Categories
Find more on Numerical Integration and Differentiation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!