aggiunto minlen all'integratore adattivo locale
This commit is contained in:
@@ -13,27 +13,32 @@ function [ area, err, ier ] = integratore_adattivo_locale( f, m, toll , maxite )
|
||||
% err = errore assoluto
|
||||
% ier = indice di errore
|
||||
|
||||
minlen_factor=1e-6;
|
||||
[x,~] = size(m);
|
||||
i=1;
|
||||
k=i+1;
|
||||
j=x;
|
||||
minlen=(m(j,1) - m(i,1)) * minlen_factor ;
|
||||
ite = 0;
|
||||
area=0;
|
||||
err = 0;
|
||||
ier = 0;
|
||||
while (i <= j - 1) && (ite < maxite)
|
||||
while (i <= j - 1) && (ite < maxite) &&( (m(j,1) - m(i,1)) > minlen )
|
||||
ltoll = (toll * (m(k,1) - m(i,1))) / (m(j,1) - m(i,1));
|
||||
[~,larea,lerr,m1] = static_quadratic(f,m(i:k,:));
|
||||
m=[m(1:i-1,:);m1;m(k+1:j,:)];
|
||||
ite = ite + 1;
|
||||
j= j + 1;
|
||||
while (lerr > ltoll) && (ite < maxite)
|
||||
while (lerr > ltoll) && (ite < maxite) &&( (m(j,1) - m(i,1)) > minlen )
|
||||
ltoll = (toll * (m(k,1) - m(i,1))) / (m(j,1) - m(i,1));
|
||||
[~,larea,lerr,m1] = static_quadratic(f,m(i:k,:));
|
||||
m=[m(1:i-1,:);m1;m(k+1:j,:)];
|
||||
ite = ite + 1;
|
||||
j= j + 1;
|
||||
end
|
||||
if (m(j,1) - m(i,1)) <= minlen
|
||||
disp('Warning: Minlen raggiunto')
|
||||
end
|
||||
area = area + larea;
|
||||
err = err + lerr;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user