Problema calcolo integrale numerico Matlab
Buonasera a tutti.. Spero che qualcuno di voi possa aiutarmi. Vi espongo il problema.
Tramite un solver elettromagnetico, con riferimento ad una simulazione, ho ottenuto come risultato una tabella composta da un certo numero di righe e 4 colonne. Le singole colonne rappresentano rispettivamente coordinata x, coordinata y, coordinata z e infine modulo quadro del campo elettrico (il quale dipende ovviamente da x,y e z).
Ora, quello che dovrei fare è valutare la norma del campo elettrico definita tramite la relazione:
$ || E(x,y,z)||_2=root()(int int int_(Omega )^()| E(x,y,z)| ^2 dx dy dz ) $ dove $ Omega =[x_min,x_max]xx [y_min,y_max]xx [z_min,z_max] $
il problema, tuttavia, è che io non ho a disposizione l'espressione analitica del campo. Io ho provato ad usare il comando triplequad di Matlab definendo una funzione che a seconda dei valori di x,y e z forniti andasse a leggere dalla matrice contenente i dati, di cui vi ho parlato prima, il corrispondente valore del modulo quadro del campo elettrico ma ovviamente non funziona. Quasi sicuramente ho sbagliato a scrivere la funzione ma sono due giorni che ci sto su e non ne vengo a capo. Non sono molto pratico di queste cose pertanto vi chiedo: non esiste un modo per ricostruire un'espressione approssimata della funzione a partire dai valori che ho a disposizione? O, in alternativa, come posso fare per valutare l'integrale di una funzione di tre variabili non avendo a disposizione l'espressione analitica della funzione stessa?
Ringrazio anticipatamente chiunque voglia darmi una mano
Tramite un solver elettromagnetico, con riferimento ad una simulazione, ho ottenuto come risultato una tabella composta da un certo numero di righe e 4 colonne. Le singole colonne rappresentano rispettivamente coordinata x, coordinata y, coordinata z e infine modulo quadro del campo elettrico (il quale dipende ovviamente da x,y e z).
Ora, quello che dovrei fare è valutare la norma del campo elettrico definita tramite la relazione:
$ || E(x,y,z)||_2=root()(int int int_(Omega )^()| E(x,y,z)| ^2 dx dy dz ) $ dove $ Omega =[x_min,x_max]xx [y_min,y_max]xx [z_min,z_max] $
il problema, tuttavia, è che io non ho a disposizione l'espressione analitica del campo. Io ho provato ad usare il comando triplequad di Matlab definendo una funzione che a seconda dei valori di x,y e z forniti andasse a leggere dalla matrice contenente i dati, di cui vi ho parlato prima, il corrispondente valore del modulo quadro del campo elettrico ma ovviamente non funziona. Quasi sicuramente ho sbagliato a scrivere la funzione ma sono due giorni che ci sto su e non ne vengo a capo. Non sono molto pratico di queste cose pertanto vi chiedo: non esiste un modo per ricostruire un'espressione approssimata della funzione a partire dai valori che ho a disposizione? O, in alternativa, come posso fare per valutare l'integrale di una funzione di tre variabili non avendo a disposizione l'espressione analitica della funzione stessa?
Ringrazio anticipatamente chiunque voglia darmi una mano

Risposte
Ti basta scrivere una formula di integrazione numerica!
In una dimensione, hai ad esempio la formula dei rettangoli
\[
\int_a^b f(x) dx \approx \sum_i f(x_i) h
\]
oppure dei trapezi
\[
\int_a^b f(x) dx \approx h \left( \frac{f(a) + f(b)}{2} + \sum_{i = 1}^{N-1} f(x_i) \right).
\]
In più dimensioni puoi fare la stessa cosa, ricordando che per domini semplici [come è il caso del tuo cubo] puoi spezzare l'integrale con la formula dell'integrale iterato, cioè
\[
\int_{\Omega \subset \mathbb R^3} f(x,y,z) = \int_{z_0}^{z_1} \int_{y_0}^{y_1} \int_{x_0}^{x_1} f(x,y,z) dx dy dz
\]
In una dimensione, hai ad esempio la formula dei rettangoli
\[
\int_a^b f(x) dx \approx \sum_i f(x_i) h
\]
oppure dei trapezi
\[
\int_a^b f(x) dx \approx h \left( \frac{f(a) + f(b)}{2} + \sum_{i = 1}^{N-1} f(x_i) \right).
\]
In più dimensioni puoi fare la stessa cosa, ricordando che per domini semplici [come è il caso del tuo cubo] puoi spezzare l'integrale con la formula dell'integrale iterato, cioè
\[
\int_{\Omega \subset \mathbb R^3} f(x,y,z) = \int_{z_0}^{z_1} \int_{y_0}^{y_1} \int_{x_0}^{x_1} f(x,y,z) dx dy dz
\]
Raptorista ti ringrazio per la risposta e, anzi, mi scuso per il fatto che io risponda solo ora.. In realtà, io avevo provato a scrivere una funzione in matlab contenente una formula per l'integrazione numerica (realizzata con tre cicli for, uno per la variazione di ognuna della variabili) ma provando tale funzione con una funzione di prova non ottengo un risultato corretto.. Ci sto ancora lavorando su.. Speriamo bene
Grazie ancora per la tua gentilezza

Le formule di integrazione si trovano tabulate, quindi l'implementazione dovrebbe essere fattibile senza particolari problemi.
Se il problema non è nell'implementazione, probabilmente è nelle formule.
Se il problema non è nell'implementazione, probabilmente è nelle formule.