Metodo Jacobi

Messaggioda _Ronaldo_CR7- » 10/10/2021, 00:16

Immagine
Salve, ho provato a svolgere questo programma ma non mi trovo con i risultati, potreste illustrarmi come procede, in particolare come utilizzare il criterio di arresto sul residuo relativo.
Grazie
_Ronaldo_CR7-
Junior Member
Junior Member
 
Messaggio: 170 di 384
Iscritto il: 19/07/2020, 20:49

Re: Metodo Jacobi

Messaggioda Quinzio » 10/10/2021, 18:19

_Ronaldo_CR7- ha scritto:Salve, ho provato a svolgere questo programma ma non mi trovo con i risultati, potreste illustrarmi come procede, in particolare come utilizzare il criterio di arresto sul residuo relativo.
Grazie


Se leggi il regolamento al punto 1.2 vedi che:

Chi pone la domanda deve dimostrare lo sforzo che ha fatto per cercare di risolvere la difficoltà, indicare la strada che ha cercato di intraprendere e in ogni caso indicare aspetti specifici da chiarire.


Siccome qui si parla di programmazione Matlab, lo sforzo dovrebbe essere un banale ctrl+c ctrl+v, almeno per partire.
Quinzio
Cannot live without
Cannot live without
 
Messaggio: 4616 di 10586
Iscritto il: 24/08/2010, 06:50

Re: Metodo Jacobi

Messaggioda feddy » 10/10/2021, 19:32

Non basta aggiornare il tuo programma precedente usando la definizione di residuo relativo, i.e. di $\frac{||b-A x_k||}{||b||}$?
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2868 di 5935
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Metodo Jacobi

Messaggioda _Ronaldo_CR7- » 11/10/2021, 21:01

Quindi per residuo normalizzato si intende residuo k-esimo in norma diviso norm(b)?
_Ronaldo_CR7-
Junior Member
Junior Member
 
Messaggio: 171 di 384
Iscritto il: 19/07/2020, 20:49

Re: Metodo Jacobi

Messaggioda _Ronaldo_CR7- » 11/10/2021, 21:02

Quinzio ha scritto:
_Ronaldo_CR7- ha scritto:Salve, ho provato a svolgere questo programma ma non mi trovo con i risultati, potreste illustrarmi come procede, in particolare come utilizzare il criterio di arresto sul residuo relativo.
Grazie


Se leggi il regolamento al punto 1.2 vedi che:

Chi pone la domanda deve dimostrare lo sforzo che ha fatto per cercare di risolvere la difficoltà, indicare la strada che ha cercato di intraprendere e in ogni caso indicare aspetti specifici da chiarire.


Siccome qui si parla di programmazione Matlab, lo sforzo dovrebbe essere un banale ctrl+c ctrl+v, almeno per partire.


Hai ragione, il mio programma è
Codice:
 function x = jac(A,b,x0,tol,it)
x=x0;
xold=x0;
n=size(A);
res=norm(b-A*x);
k=1;

while res>tol && k<it
    for i=1:n
        s=0;
        for j=1:n
            if j~=i
                s=s+A(i,j)*xold(j);
            end
        end
        x(i)=(b(i)-s)/A(i,i);
    end
    res=norm(b-A*x);
    k=k+1;
    xold=x;
end
end
Ultima modifica di _Ronaldo_CR7- il 12/10/2021, 08:54, modificato 2 volte in totale.
_Ronaldo_CR7-
Junior Member
Junior Member
 
Messaggio: 172 di 384
Iscritto il: 19/07/2020, 20:49

Re: Metodo Jacobi

Messaggioda _Ronaldo_CR7- » 11/10/2021, 21:03

Quindi sostituisco res semplicemente cin res diviso res(b) e mi dovrebbe venire?
_Ronaldo_CR7-
Junior Member
Junior Member
 
Messaggio: 173 di 384
Iscritto il: 19/07/2020, 20:49

Re: Metodo Jacobi

Messaggioda Quinzio » 12/10/2021, 07:04

_Ronaldo_CR7- ha scritto:
Quinzio ha scritto:
_Ronaldo_CR7- ha scritto:Salve, ho provato a svolgere questo programma ma non mi trovo con i risultati, potreste illustrarmi come procede, in particolare come utilizzare il criterio di arresto sul residuo relativo.
Grazie


Se leggi il regolamento al punto 1.2 vedi che:

Chi pone la domanda deve dimostrare lo sforzo che ha fatto per cercare di risolvere la difficoltà, indicare la strada che ha cercato di intraprendere e in ogni caso indicare aspetti specifici da chiarire.


Siccome qui si parla di programmazione Matlab, lo sforzo dovrebbe essere un banale ctrl+c ctrl+v, almeno per partire.


Hai ragione, il mio programma è
Codice:
function x = jac(A,b,x0,tol,it)
x=x0;
xold=x0;
n=size(A);
res=norm(b-A*x);
k=1;

while res>tol && k<it
    for i=1:n
        s=0;
        for j=1:n
            if j~=i
                s=s+A(i,j)*xold(j);
            end
        end
        x(i)=(b(i)-s)/A(i,i);
    end
    res=norm(b-A*x);
    k=k+1;
    xold=x;
end
end


Usando il tag Code viene ancora piu' bello.

Riguardo all'errore, a un certo puno sono questioni di convenzione.
Mi sembra che abbia senso l'errore normalizzato, calcolato tra due vettori $x$ successivi. Tu fai la stessa cosa nel codice ?
Che norma usi (2, infinito) ?
Cosa dicono le tue slides, il tuo libro, le tue note, riguardo alla convenzione da usare ?
Cos'e' quella 's' che calcoli ? E' un vettore ?
Quinzio
Cannot live without
Cannot live without
 
Messaggio: 4617 di 10586
Iscritto il: 24/08/2010, 06:50

Re: Metodo Jacobi

Messaggioda _Ronaldo_CR7- » 12/10/2021, 08:52

Allora, il professore ci ha indicato l’errore normalizzato come norma di $r^(k)$ diviso r0, dove r0 è $b-Ax_0$, ma con questo metodo non funziona.
Per quanto riguarda la norma, non ci ha detto nulla, solo di usare norm un matlab, quindi credo norma 2
_Ronaldo_CR7-
Junior Member
Junior Member
 
Messaggio: 174 di 384
Iscritto il: 19/07/2020, 20:49

Re: Metodo Jacobi

Messaggioda feddy » 12/10/2021, 12:36

MatLab mi pare che per default prenda la norma $2$ di un vettore. Comunque c'è scritto nella documentazione. Con "non funziona" intendi che il metodo non converge? Stai scegliendo gli esempi corretti su cui testare il metodo di Jacobi. Cioè, stai utilizzando matrici per le quali la condizione necessaria di convergenza è soddisfatta?

@Quinzio la
Codice:
s
è uno scalare che contiene il contributo dei termini extradiagonali, è quello che su wikichiamano $\sigma$
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2869 di 5935
Iscritto il: 26/06/2016, 00:25
Località: SISSA


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite