Approssimazione integrale
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.
\[ 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.
Risposte
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 \).
\[ 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 \).
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ì:
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.
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.
Penso di aver capito il problema
me ne sono accorto scrivendo il mio codice qui...
diventa
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.


me ne sono accorto scrivendo il mio codice qui...
"3m0o":
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
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.