From 8968dbd158a604a880cbc7503c7dc5d267038c30 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Sun, 7 Dec 2014 20:00:25 +0100 Subject: [PATCH] aggiunto minlen all'integratore adattivo locale --- functions/integratore_adattivo_locale.m | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/functions/integratore_adattivo_locale.m b/functions/integratore_adattivo_locale.m index b5b9d5c..2e1266b 100644 --- a/functions/integratore_adattivo_locale.m +++ b/functions/integratore_adattivo_locale.m @@ -12,28 +12,33 @@ function [ area, err, ier ] = integratore_adattivo_locale( f, m, toll , maxite ) % area = area finale % 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;