Polinomio composito e area di una funzione integrale
Consideriamo il seguente esercizio:

Ho io scritto questo codice
Script:
Funzione get_polyn:
Funzione Cavalieri_Simpson_polinomi:
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?
.

Ho io scritto questo codice
Script:
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:
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:
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?
.
Risposte
Occhio, x(:,end) non è un matrice, ma un vettore colonna! E soprattutto andava corretto il termine x(:,end)-0 che segue. Quello rappresentava il $(b-a)$ che moltiplica la formula di integrazione. Tuttavia, in questo caso, $b$ valeva sì x(:, end), ma $a$ valeva $-1$. Quindi $b-a=x- (-1)=x+1$. Scusami ma stavo dando per scontato che $F$ fosse corretta senza guardarla in pratica.
Se $F$ fosse stato della forma $f(x)+\int_-1^{x}g(t)dt$ avrei dovuto mettere $f(x( :,end))+...$ giusto? tipo se $f(x)=x^2$ allora $(x( :,end))^2$?
"feddy":
Occhio, x(:,end) non è un matrice, ma un vettore colonna! E soprattutto andava corretto il termine x(:,end)-0 che segue. Quello rappresentava il $(b-a)$ che moltiplica la formula di integrazione. Tuttavia, in questo caso, $b$ valeva sì x(:, end), ma $a$ valeva $-1$. Quindi $b-a=x- (-1)=x+1$. Scusami ma stavo dando per scontato che $F$ fosse corretta senza guardarla in pratica.
Si il $-1$ lo avevo detto io (quando ho detto che andava integrata da $-1$ a $x$, non so se avevi visto il messaggio avevi scritto pure edit), non se ti ricordi ahahha, però si grazie mille
"andreadel1988":
Se $ F $ fosse stato della forma [...]
Sì
Scusami, avevo perso il messaggio riguardo al "-1".
"feddy":
[quote="andreadel1988"]Se $ F $ fosse stato della forma [...]
Sì
Scusami, avevo perso il messaggio riguardo al "-1".[/quote]
Non ti preoccupare, anzi grazie mille dell'aiuto
"andreadel1988":
Se $F$ fosse stato della forma $f(x)+\int_-1^{x}g(t)dt$ avrei dovuto mettere $f(x( :,end))+...$ giusto? tipo se $f(x)=x^2$ allora $(x( :,end))^2$?
Il problema è che con i vettori non si può fare $(x( :,end))^2$, credo che per forza debba fare con approssimazione puntuale.