Messaggioda *marcellopedone » 03/12/2004, 20:37

*marcellopedone
New Member
New Member
 
Messaggio: 33 di 95
Iscritto il: 08/11/2002, 12:21
Località: Italy

Messaggioda GIOVANNI IL CHIMICO » 03/12/2004, 20:48

Ok però il metodo di gauss è un metodo diretto e non iterativo, anche se implementato su calcolatore.
Guarda zwan io ho appena dato l'esame di calcolo numerico e ti posso assicurare che il fatto di avere una sola soluzione non impone che i metodi siano diretti, ossia esistono metodi iterativi che partendo da un vettore di valori iniziali calcolano il vettore soluzione, sono molto complicati e hanno dei criteri di convergenza alla soluzione molto stretti, ma si usano solo per sistemi di grandi dimensioni ed elevata sparsità...
GIOVANNI IL CHIMICO
Senior Member
Senior Member
 
Messaggio: 317 di 1931
Iscritto il: 31/05/2004, 15:44
Località: Italy

Messaggioda Marco83 » 03/12/2004, 21:22

Visto il sistema, che non è di equazioni differenziali, e dato che Zwan parla di teorema di Banach-Cacciopoli o teorema delle contrazioni(questo teorema garantisce che, preso uno spazio dotato di una metrica completa su tale spazio, e data un'applicazione che risulti una contrazione rispetto alla metrica adottata, allora l'applicazione ammette uno e un solo punto fisso) credo che lo scopo sia utilizzare un metodo iterativo di punto fisso.
Per quanto riguarda la banalità dell'esempio credo sia legata al fatto che è un esempio introduttivo ai metodi iterativi, pertanto sarebbe fuoriluogo (benchè più semplice) risolverlo con un metodo algebrico classico.
Per quanto ne so, Excel non è sviluppato per questo tipo di problemi (ma magari mi sbaglio). io ti consiglio vivamente di usare Matlab.
Una spiegazione soddisfacente del metodo di punto fisso la trovi in "Introduzione al calcolo scientifico" di Quarteroni, Sacco, Saleri editore Springer
Marco83
Senior Member
Senior Member
 
Messaggio: 12 di 1052
Iscritto il: 28/12/2003, 15:11
Località: Minneapolis, MN USA

Messaggioda GIOVANNI IL CHIMICO » 03/12/2004, 22:21

Confermo, non puoi risolverlo in excel, devi usare matlab
GIOVANNI IL CHIMICO
Senior Member
Senior Member
 
Messaggio: 318 di 1931
Iscritto il: 31/05/2004, 15:44
Località: Italy

Messaggioda tony » 04/12/2004, 05:57

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">qualcuno sa come risolvere un sistema a tre equazioni e tre incognite (lineare) con excel tramite metodi iterativi? <i>[zwan9]</i>
<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
una volta si usava il "metodo di Seidel" (più propriamente "Gauss-Seidel") per sistemoni lineari un po' sparsi, con una diagonale principale di buona "forza".

dalle risposte che hai avuto si direbbe che è totalmente passato di moda;
sicuramente, tra i lettori molti "puristi" disdegnano metodi che arrivano per approssimazioni succesive ad una soluzione che (teoricamente e con strumenti di adeguata potenza) si può ottenere in modo esatto;
ma ci sono anche dei "praticoni" che son contenti di poter fare il lavoro con macchine di costo più limitato.

quindi, cerca "seidel linear equations" e troverai parecchia documentazione.

il tuo primo passo è capire l'algoritmo; l'uso di excel ti verrà dopo (anche se, probabilmente è lo scopo principale del tuo esercizio * ).

ringrazia chi ti ha dato il problema di tre sole equazioni, ma digli che, una volta delineato l'algoritmo, tra tre o tremila non c'è differenza (a parte che 3 equazioni te le controlli facilmente, mentre con 3000 se vuoi controllare la soluzione devi farti risolvere il sistema da uno di quei "puristi", perchè con la tua macchina non ce la faresti, con o senza excel)

tony <font size="1">praticone</font id="size1">

nota (*)
in excel puoi usare una macro, o sei costretta a lavorare solo sul foglione?
tony
Average Member
Average Member
 
Messaggio: 518 di 873
Iscritto il: 10/11/2005, 23:47
Località: milano

Messaggioda Marco83 » 04/12/2004, 11:46

x tony
Io nn sono un purista dei metodi iterativi, anche perchè sono spesso usati a sproposito (come dire, si usa un bazooka per uccidere una mosca), tuttavia nel terzo post (quello di Zwan) è spiegato chiaramente che la soluzione dovrebbe essere trovata ricercando i tre punti fissi legati alle iterate delle tre equazioni.
L'unico procedimento che utilizza questo metodo è l'iterazione di punto fisso (ad esempio il metodo di Newton è un caso particolare di iterazione di punto fisso)che in genere è utilizzata per trovare zeri di funzioni non lineari.
Tra l'altro per un sistemino così (dato che è un sistema lineare) dovrebbe arrivare a convergenza entro 6 o 7 iterazioni.
Marco83
Senior Member
Senior Member
 
Messaggio: 13 di 1052
Iscritto il: 28/12/2003, 15:11
Località: Minneapolis, MN USA

Messaggioda zwan9 » 04/12/2004, 11:49

marco83, cos'è il metodo di newton?
zwan9
Starting Member
Starting Member
 
Messaggio: 31 di 32
Iscritto il: 03/08/2003, 19:23

Messaggioda Marco83 » 04/12/2004, 13:49

Il metodo di Newton è un metodo per individuare gli zeri di una funzione (in generale si usa per funzioni non lineari con derivate "abbastanza buone" e poi vedremo cosa significa).
Supponiamo di avere una funzione f derivabile.
Si prenda un punto generico x0 e si scriva l'equazione della retta tangente a f in x0:
y=f(x0)+f'(x0)*(x-x0)
Tale retta intersecherà l'asse delle ascisse in un punto x1 (x1 si trova ponendo y=0);
Ripetendo il procedimento a partire da x1 otterremo un punto x2 e così via..
In generale il metodo di Newton è fatto così:
x_(k+1)=x_k-f(x_k)/f'(x_k) e dato iniziale x_0 (gli (0,0,0) che tu indicavi nel tuo post)
Questo metodo funziona sotto opportune condizioni, cioè:
f'(x_k) diversa da 0 (per un'approcccio numerico valido è bene che sia nettamente diversa da zero, altrimenti l'intersezione x_(k+1) si troverà a grande distanza da x_k);
x_0 scelto abbastanza vicino allo zero di f (anche se sembra una contraddizione in quanto non si conosce lo zero di f, è sufficiente fare un polt della funzione per rendersi conto di dove questo si trovi approssimativamente);
Per arrestare il metodo puoi semplicemente porre la condizione di arresto se (x_k-x_(k+1))<epsilon (ci vorrebbe il modulo ma non so come scriverlo) con epsilon stabilito a priori (epsilon rappresenta l'errore massimo da te accettato nella determinazione dello zero).
Un altro metodo di arresto è (f(x_k))<sigma con sigma piccolo quanto vuoi.
Il meglio si ottiene richiedendo che entrambe le soluzioni siano soddisfatte contemporaneamente.
Si possono fare delle stime di convergenza e delle correzioni del metodo al fine di farlo convergere sempre con ordine 2, anche al variare della molteplicità dello zero, ma non mi sembra il caso di approfondire...
Per quanto riguarda il sistema da te dato, sicuramente le condizioni richieste sono soddisfatte per qualunque scelta di x_0.
Tuttavia, se ti interessano metodi per risolvere efficientemente sistemi lineari, questo non è certo il migliore, in quanto non è pensato per i sistemi. Sicuramente più efficaci sono i metodi di Gauss-Seidel e i metodi di Richardson.
Onestamente non so come si possa implementare un metodo iterativo di punto fisso (come ad esempio il metodo di Newton) per la risoluzione di un sistema; se mi viene in mente qualcosa ti faccio sapere.
Marco83
Senior Member
Senior Member
 
Messaggio: 14 di 1052
Iscritto il: 28/12/2003, 15:11
Località: Minneapolis, MN USA

Messaggioda Marco83 » 04/12/2004, 20:46

Un'idea di come usare un metodo di punto fisso per un sistema mi è venuta, tuttavia ha senso solo se il sistema di equazioni è non lineare, in quanto si potrebbe usare newton su ogni singola equazione, riducendo il sistema ad un sistema lineare, risolvere questo nuovo sistema con un classico metodo x sistemi lineari(tipo fattorizzazione LU, Gauss-Seidel o Richardson) e a partire dal risultato, reimplementare un altro passo di Newton e così via, ma se il sistema è lineare, appena lancio un metodo come quelli sopraelencati, arrivo alla soluzione e non ha più senso parlare di iterazione di punto fisso.
effettivamente le richieste che ti hanno fatto sembrano un po insensate..
Prova a postare il testo completo dell'esercizio
Marco83
Senior Member
Senior Member
 
Messaggio: 16 di 1052
Iscritto il: 28/12/2003, 15:11
Località: Minneapolis, MN USA

Messaggioda tony » 06/12/2004, 05:27

zwan9,
quasi niente so di excel, e poco ho capito del tuo problema;
mi rifaccio ancora alla tua definizione iniziale
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">qualcuno sa come risolvere un sistema a tre equazioni e tre incognite (lineare) con excel tramite metodi iterativi?<i>[zwan9]</i>
<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
appannata dai molti interventi
(ne’ hai contribuito a chiarirmi le idee rispondendo all’unica domanda che ti avevo fatto:
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote">in excel puoi usare una macro, o sei costretta a lavorare solo sul foglione? <i>[tony]</i><hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">
)
per cui chiudo il mio tentativo con le seguenti considerazioni:

se in excel non puoi scrivere una macro, ma ti devi accontentare del foglione, allora è inutile che tu ti impratichisca anche superficialmente con la tecnica e gli algoritmi del metodo di Seidel:
infischiatene e lascia fare tutto al solver di excel buttando giù il seguente foglione:
Codice:
   A    B    C      D     E                    F
1  1    0,4  0,2    3     =a5*a1+b5*b1+c5*c1   =E1-D1
2  0,5  1    0,2    1,5   =a5*a2+b5*b2+c5*c2   =E2-D2
3  0,2  0,6  1     -1     =a5*a3+b5*b3+c5*c3   =E3-D3
4                                              =ABS(F1)+ABS(F2)+ABS(F3)
5  0    0    0  <======= questi sono i valori iniziali delle incognite
                         e qui si troveranno anche i risultati

(in A1:C3 i coefficienti, nella col. D i termini noti, nella col. E idem, ricalcolati, nella col. F gli errori con somma in F4)
e impostando il “solver” per calcolare le celle A5:C5 in modo da minimizzare la cella F4:

tools / solver / target cell = F4, MIN, by changing cells A5:C5

otterrai x=3,268, y=0,223, z=-1,787, come mi pare ci si debba aspettare.

se vuoi anche seguire il progresso delle poche iterazioni necessarie, non hai che da accendere la casella “show iteration results” nella finestra “options” del solver.

ripeto: io di excel non so quasi nulla, per cui non ti so dire quale tecnica usi il suo solver per l’approssimazione richiesta, (Seidel, Bertoldo, i punti fissi, e tutto il vario e fumoso bla bla bla teorico)
nè, in fondo mi pare che questa sia una richiesta del tuo problema iniziale.

tony
tony
Average Member
Average Member
 
Messaggio: 519 di 873
Iscritto il: 10/11/2005, 23:47
Località: milano

PrecedenteProssimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite