Approssimazione integrale

Messaggioda 3m0o » 05/05/2021, 22:12

Siano date \( k : [0,1] \times [0,1] \to \mathbb{R} \) e \( u : [0,1] \to \mathbb{R} \). Consideriamo la trasformazione integrale
\[ f(x) = \int_0^1 k(x,y)u(y) dy \ \ \ \ \ \ (1) \]
a) Siano \(x_i = ih \) per \( i = 0 ,\ldots , N \) e \(h=1/N \). Applicare la regola del trapezio per approssimare (in N sottointervalli) l'integrale \((1)\) ad ogni \(x_i\):
\[ Q_h^{(1)}[k(x_i,\cdot)u(\cdot)] \approx \int_0^1 k(x_i,y)u(y) dy , \ \ \ \ i=0,\ldots,N \]
Dati i valori delle funzioni \( \mathbf{f} = [f(x_0),\ldots,f(x_N)]^T \) vogliamo trovare i valori delle funzione \( \mathbf{u} = [ u(x_0),\ldots,u(x_N)]^T \) tale che
\[Q_h^{(1)}[k(x_i,\cdot)u(\cdot)] = f(x_i ), \ \ \ \ i=0,\ldots,N \ \ \ \ (2) \]
Dimostra che (2) è equivalente a trovare un sistema lineare della forma
\[ A \mathbf{u} = \mathbf{f} \]
dare una formula esplicita per le entrate della matrice \(A\).

Io sono un po' confuso sulla domanda. Non capisco se vuole semplicemente altro o qualcosa di più esplicito.

Perché per uno fare
\[ f(x_i) = \int_{0}^{1} k(x_i,y)u(y) dy = \sum_{j=0}^{N-1} \int_{x_i}^{x_{i+1}} k(x_j,y)u(y)dy \]
\[ \approx \sum_{j=0}^{N-1} (x_{j+1} - x_j) \frac{k(x_i,x_{j+1})u(x_{j+1}) + k(x_i,x_j) u(x_j) }{2} \]
\[ = \frac{1}{N} \sum_{j=0}^{N-1} \frac{k(x_i,x_{j+1})u(x_{j+1}) + k(x_i,x_j) u(x_j) }{2} \]
\[ = \frac{1}{N}\left( \frac{k(x_i,x_0)u(x_0)+k(x_i,x_N)u(x_N)}{2} + \sum_{j=1}^{N-1} k(x_i,x_j)u(x_j) \right) \]

E fin qui okay. Ma poi come vuole che trovo i valori di \( \mathbf{u} \) non ho capito. Cioè okay, costruisco la matrice
\[ A := \frac{1}{N}\begin{pmatrix}
k(x_0,x_0)/2& k(x_0,x_1) & \ldots & k(x_0,x_{N-1}) &k(x_0,x_N)/2 \\
k(x_1,x_0)/2& k(x_1,x_1)& \ldots & k(x_1,x_{N-1}) & k(x_1,x_N)/2 \\
\vdots& \vdots& \ddots & \vdots & \vdots \\
\vdots& \vdots& \ddots & \vdots & \vdots \\
k(x_N,x_0)/2 & k(x_N,x_1) & \ldots& k(x_N,x_{N-1}) & k(x_N,x_N)/2
\end{pmatrix} \]
e ottengo che risolvere il sistema lineare nelle incognite \( u(x_j)\)
\[ A \mathbf{u} = \mathbf{f} \]
è equivalente a dire
\[ Q_h^{(1)}[k(x_i,\cdot)u(\cdot)] = f(x_i ) \]

Perché poi nel punto b) mi dice questo
Ora usiamo il vettore \( \mathbf{u} \) determinato da (2) per approssimare \(f\) in un punto arbitrario \(z \in [0,1] \). Applicando ancora la regola del trapezio a (1):
\[ f(z) \approx f_z:= Q_h[k(z,\cdot)u(\cdot)] \]
Assumi che la matrice
\[ K = \begin{pmatrix}
k(x_0,x_0)& k(x_0,x_1) & \ldots & k(x_0,x_{N-1}) &k(x_0,x_N) \\
k(x_1,x_0)& k(x_1,x_1)& \ldots & k(x_1,x_{N-1}) & k(x_1,x_N) \\
\vdots& \vdots& \ddots & \vdots & \vdots \\
\vdots& \vdots& \ddots & \vdots & \vdots \\
k(x_N,x_0) & k(x_N,x_1) & \ldots& k(x_N,x_{N-1}) & k(x_N,x_N)
\end{pmatrix} \]
sia invertibile, dimostra che
\[ f_z = ( k(z,x_0), \ldots, k(z,x_N) ) K^{-1} \mathbf{f} \]
Ora sono confuso perch io non ho determinato nessun vettore.... ho semplicemente detto che è la soluzione di un sistema lineare. Okay è in un qualche modo determinarlo. Però sono un po' confuso lo stesso.


Abbiamo che
\[ f_z = \frac{1}{N}\left( \frac{k(z,x_0)u(x_0)+k(z,x_N)u(x_N)}{2} + \sum_{j=1}^{N-1} k(z,x_j)u(x_j) \right) \]
E abbiamo dunque che per trovare
\[ f_z = ( k(z,x_0), \ldots, k(z,x_N) ) K^{-1} \mathbf{f} = ( k(z,x_0), \ldots, k(z,x_N) ) \mathbf{u} = ( k(z,x_0), \ldots, k(z,x_N) ) (u(x_0), \ldots, u(x_N))^T = k(z,x_0)u(x_0) + \ldots + k(z,x_N)u(x_N) \]
e c'è qualche cosa di sbagliato...


EDIT:
A meno che non vuole che \(A=K \) e \( \mathbf{u} = [ \frac{u(x_0)}{2N}, \frac{u(x_1)}{N} , \ldots, \frac{u(x_{N-1})}{N}, \frac{u(x_N)}{2N} ]^T \) ed in tal caso le cose quadrano, e quando mi definisce il vettore \( \mathbf{u} \) sbaglia a dire che è \( \mathbf{u} = [ u(x_0) ,\ldots,u(x_N)]^T \), perché onestamente non capisco. Però non so, dubito che sia questo.
3m0o
Cannot live without
Cannot live without
 
Messaggio: 2034 di 5335
Iscritto il: 02/01/2018, 15:00

Re: Approssimazione integrale

Messaggioda 3m0o » 05/05/2021, 22:42

A meno che non sia che \( A \) e \( \mathbf{u} = [u(x_0), \ldots, u(x_N)]^T \) come le ho trovate nel punto a) mentre poi nel punto b) abbiamo che
\[ K^{-1} \mathbf{f} = \mathbf{v} \]
dove
\[ \mathbf{v} = [ \frac{u(x_0)}{2N}, \frac{u(x_1)}{N} , \ldots, \frac{u(x_{N-1})}{N}, \frac{u(x_N)}{2N} ]^T \]
e poi dunque si avrebbe che
\[ f_z = [ k(z,u(x_0)), \ldots, k(z,u(x_N)] \mathbf{v} \]
e chiaramente
\[ f_{x_i} = f(x_i) \]
per ogni \(i = 0 ,\ldots, N \).
3m0o
Cannot live without
Cannot live without
 
Messaggio: 2035 di 5335
Iscritto il: 02/01/2018, 15:00

Re: Approssimazione integrale

Messaggioda 3m0o » 06/05/2021, 10:33

Allora penso di aver risolto. Il problema "teorico", però quando mi chiede di scrivere una funzione in matlab che prende una funzione \(f\), \(N\) e un vettore \( (z_1,\ldots,z_m) \) di punti di in cui valutare \(f\) deve restituirmi \( (f_{z_1} ,\ldots,f_{z_m} ) \). Per \( k(x,y) = \exp(- (x-y)^2/2) \) Io l'ho implementato così:

Codice:
function [out] = my_approximation(fun,N,u)
K = zeros(N+1);
for i=0:N
    for j=0:N
    K(i+1,j+1)= exp(-(((i-j)./N).^2)./2) ;
    end
end
f = [];
for i=0:N
    f = [f, fun(i./N) ];
end
g = f';
v= K\g;
k=[];
sol = [];
for i=1:length(u)
    k=[];
for j=1:N+1
   k=[k,exp(- ((u(i)-j./N).^2)./2)];
end
 s = k * v;
 sol = [sol,s];
end
out = sol;
end


Però quando mi chiede l'applicazione con \(N=2,5,10 \), \( f(x) = \sqrt{ \left| 1/2 - x \right| } \) e il vettore di punti di valutazione dato da \( \operatorname{linespace}(0,1,1000) \) e di spiegare perché per \(N=10\) abbiamo una brutta approssimazione.
Il problema è che io ho una approssimazione orribile per \(N=2,5\) e \(N=10\) e non solo per \(N10\)! Cioé plottando proprio non si assomigliano per nulla le funzioni.
3m0o
Cannot live without
Cannot live without
 
Messaggio: 2037 di 5335
Iscritto il: 02/01/2018, 15:00

Re: Approssimazione integrale

Messaggioda 3m0o » 06/05/2021, 10:43

Penso di aver capito il problema :lol: :lol:
me ne sono accorto scrivendo il mio codice qui...
3m0o ha scritto:
Codice:

k=[];
sol = [];
for i=1:length(u)
    k=[];
for j=1:N+1
   k=[k,exp(- ((u(i)-j./N).^2)./2)];
end
 s = k * v;
 sol = [sol,s];
end



diventa
Codice:

k=[];
sol = [];
for i=1:length(u)
    k=[];
for j=0:N
   k=[k,exp(- ((u(i)-j./N).^2)./2)];
end
 s = k * v;
 sol = [sol,s];
end



Però, matlab "Warning" che non ho mai visto.
Warning: : Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.471040e-18.
3m0o
Cannot live without
Cannot live without
 
Messaggio: 2038 di 5335
Iscritto il: 02/01/2018, 15:00


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite