11/07/2023, 21:49
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')
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;
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
12/07/2023, 16:17
12/07/2023, 16:20
12/07/2023, 16:24
12/07/2023, 18:19
12/07/2023, 19:23
feddy ha scritto:Se dopo ho un po' di tempo do un'occhiata al codice. A livello concettuale è lo stesso problema che avevi nel post precedente, ossia una funzione che all'interno contiene un integrale, ma ammetto di non aver letto il tuo codice.
12/07/2023, 19:35
12/07/2023, 19:50
feddy ha scritto:Capisco, scusami ma non lo ricordavo e nella traccia non c'è scritto... Il problema è che la tua $F$ è definita in modo tale da prendere un linspace (per utilizzare la formula di quadratura), ma il primo addendo della funzione non deve essere un linspace, ma solamente uno scalare ($x$).
12/07/2023, 19:55
F=@(x)(x(end)-(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))) );
12/07/2023, 19:59
feddy ha scritto:Se vuoi usare questa forma ti è sufficiente aggiustare la $F$ in questo modo:
- Codice:
F=@(x)(x(end)-(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))) );
Nota l'x(end) all'inizio. Il resto è uguale
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.