risolto bugs in integratore adattivo globale e aggiunto grafico a schema fisso

sebbene funzioni, le trasformazioni sulle matrici sono troppo onerose e  servirebbe un algoritmo piu efficiente
This commit is contained in:
2014-12-04 15:08:08 +01:00
parent e73b1a2065
commit d65fd0e0a9
2 changed files with 41 additions and 17 deletions

View File

@@ -22,15 +22,15 @@ ier = 0;
report=[];
while (i <= j - 1) && (ite < maxite)
[~,larea,lerr,m1] = static_quadratic(f,m(i:k,:));
m=[m(1:i-1,:);m1;m(k+1:j,:)]
m=[m(1:i-1,:);m1;m(k+1:j,:)];
ite = ite + 1;
j= j + 1;
report=[report;i,k+1,larea,lerr]
report=[report;i,k+1,larea,lerr];
i = i + 2;
k = k + 2;
end
report = sortrows(report,4)
report = flipud (report)
report = sortrows(report,4);
report = flipud (report);
[lenght,~] = size(report);
area=0;
err = 0;
@@ -43,27 +43,43 @@ report=[];
i=report(1,1);
k=report(1,2) - 1;
[lenght,~] = size(report);
report=report(2:lenght,:)
report=report(2:lenght,:);
[~,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;
report=[report;i,k+1,larea,lerr]
i=k+1;
k=k+2;
[~,larea,lerr,m1] = static_quadratic(f,m(i:k,:));
m=[m(1:i-1,:);m1;m(k+1:j,:)]
m=[m(1:i-1,:);m1;m(k+1:j,:)];
ite = ite + 1;
j= j + 1;
report=[report;i,k+1,larea,lerr];
report = sortrows(report,4)
report = flipud (report)
report = sortrows(report,1);
[lenght,~] = size(report);
for i=1:lenght
if(report(i,1) >= k+1)
report(i,1) = report(i,1) + 1;
report(i,2) = report(i,2) + 1;
end
end
i=k+1;
k=k+2;
[~,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;
report=[report;i,k+1,larea,lerr];
report = sortrows(report,1);
[lenght,~] = size(report);
for i=1:lenght
if(report(i,1) >= k)
report(i,1) = report(i,1) + 1;
report(i,2) = report(i,2) + 1;
end
end
report = sortrows(report,4);
report = flipud (report);
[lenght,~] = size(report);
area=0;
err = 0;
for i=1:lenght
err= err + report(i,4)
area = area + report(i,3)
err= err + report(i,4);
area = area + report(i,3);
end
end

View File

@@ -15,5 +15,13 @@ function [ area, err ] = integratore_schema_fisso( f, m, toll )
while (err > toll)
[~,area,err,m] = static_quadratic(f,m);
end
[j,~] = size(m);
hold on
fplot (f,[m(1,1) m(j,1)],'k')
plot (m(:,1),m(:,2),'*r')
hold off
end