Ho io scritto questo codice
Script:
- Codice:
g=@(t)(t.*(sin(t)).^2.*exp(-t));
m=10;
a=-2;
b=1;
F=@(x)(x-(x(:,end)-0)/6/m.*( g(x(:,1))+2*sum(g(x(:,3:2:2*m)),2)+4*sum(g(x(:,2:2:2*m)),2)+g(x(:,2*m+1))) );
k=0;
t=linspace(a,b,100);
for tt=t
k=k+1;
x(k,:)=linspace(0,tt,2*m+1);
end
figure(1)
hold on
plot(t,F(x),'k')
pause
n=3;
A=0;
x = linspace(a,b,m+1);
for j=1:m
x_in=linspace(x(j),x(j+1),n+1)';
for i=1:length(x_in)
y(i) = x_in(i)-Cavalieri_Simpson(-1,x_in(i),m,g);
end
a = get_polyn(x_in,y');
t = linspace(x(j),x(j+1),100);
yp= polyval(a,t);
plot(t,yp,'r');
A=A+Cavalieri_Simpson_polinomi(x(j),x(j+1),m,a);
pause
end
title('Grafico')
legend('F','polinomio composito')
xlabel('asse x')
ylabel('asse y')
Funzione get_polyn:
- Codice:
function a = get_polyn(x,y)
n=length(x)-1;
V(1:n+1,n+1)=ones(n+1,1);
for j=n:-1:1
V(1:n+1,j) = x.*V(1:n+1,j+1);
end
a = V\y;
Funzione Cavalieri_Simpson_polinomi:
- Codice:
function I2m=Cavalieri_Simpson_polinomi(a,b,m,f)
H=(b-a)/m;
x=linspace(a,b,2*m+1);
I2m=H/6*( polyval(f,x(1))+ 2*sum(polyval(f,x(3:2:2*m))) + 4*sum(polyval(f,x(2:2:2*m))) + polyval(f,x(2*m+1)));
end
Il tutto funziona, però quando va a fare il grafico della funzione $F$ me lo da sbagliato, come posso risolvere senza modificare la base della formula di quadratura?
.