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.