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:
@@ -22,15 +22,15 @@ ier = 0;
|
|||||||
report=[];
|
report=[];
|
||||||
while (i <= j - 1) && (ite < maxite)
|
while (i <= j - 1) && (ite < maxite)
|
||||||
[~,larea,lerr,m1] = static_quadratic(f,m(i:k,:));
|
[~,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;
|
ite = ite + 1;
|
||||||
j= j + 1;
|
j= j + 1;
|
||||||
report=[report;i,k+1,larea,lerr]
|
report=[report;i,k+1,larea,lerr];
|
||||||
i = i + 2;
|
i = i + 2;
|
||||||
k = k + 2;
|
k = k + 2;
|
||||||
end
|
end
|
||||||
report = sortrows(report,4)
|
report = sortrows(report,4);
|
||||||
report = flipud (report)
|
report = flipud (report);
|
||||||
[lenght,~] = size(report);
|
[lenght,~] = size(report);
|
||||||
area=0;
|
area=0;
|
||||||
err = 0;
|
err = 0;
|
||||||
@@ -43,27 +43,43 @@ report=[];
|
|||||||
i=report(1,1);
|
i=report(1,1);
|
||||||
k=report(1,2) - 1;
|
k=report(1,2) - 1;
|
||||||
[lenght,~] = size(report);
|
[lenght,~] = size(report);
|
||||||
report=report(2:lenght,:)
|
report=report(2:lenght,:);
|
||||||
[~,larea,lerr,m1] = static_quadratic(f,m(i:k,:));
|
[~,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]
|
|
||||||
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;
|
ite = ite + 1;
|
||||||
j= j + 1;
|
j= j + 1;
|
||||||
report=[report;i,k+1,larea,lerr];
|
report=[report;i,k+1,larea,lerr];
|
||||||
report = sortrows(report,4)
|
report = sortrows(report,1);
|
||||||
report = flipud (report)
|
[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);
|
[lenght,~] = size(report);
|
||||||
area=0;
|
area=0;
|
||||||
err = 0;
|
err = 0;
|
||||||
for i=1:lenght
|
for i=1:lenght
|
||||||
err= err + report(i,4)
|
err= err + report(i,4);
|
||||||
area = area + report(i,3)
|
area = area + report(i,3);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -15,5 +15,13 @@ function [ area, err ] = integratore_schema_fisso( f, m, toll )
|
|||||||
while (err > toll)
|
while (err > toll)
|
||||||
[~,area,err,m] = static_quadratic(f,m);
|
[~,area,err,m] = static_quadratic(f,m);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
[j,~] = size(m);
|
||||||
|
hold on
|
||||||
|
fplot (f,[m(1,1) m(j,1)],'k')
|
||||||
|
plot (m(:,1),m(:,2),'*r')
|
||||||
|
hold off
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user