Aller au contenu

Rayon spectrale,methode de Jacobi (Matlab)[Résolu]


nubnab

Messages recommandés

bonjour

je sollicite votre aide pour ecrire 2 fonctions sous matlab:

j'aimerais aussi sans trop vous en demandez, de m'expliquer les solutions obtenus.

1. ecrire une fonction [r]=Rhoj(A) qui donne le rayon spectrale* de la matrice J associée à la méthode itérative de Jacobi(On pourra utiliser la fonction de Matlab eigs)

(*c'est le module de la plus grande valeur propre de J)

Rappel de la méthode de Jacobi

Pour une matrice A dont les éléments diagonaux sont nuls, on effectue la decomposition A=D - (E+F), avec D la matrice diagonale associée à A,

E l'opposée de la matrice triangulaire strictement inferieure à A, et F l'opposée de la matrice triangulaire strictement superieure associée à A.

on pose alors

J= D-¹(E+F)=I- D-¹A

(D-¹:matrice inverse de D)

resoudre le systeme lineaire AX=b par la méthode de Jacobi, c'est trouver lalimite de la suite Xk definie par, Xo arbitraire et

Xk+1=JXk + D-¹b

la matrice J se calculant de façon rapide et exacte à l'aide de A et D

2eme fonction

ecrire une methode [X,err,it,prec]=[Jacobi(A,b,itm,tol) qui resout le systeme lineaire AX=b par la methode de Jacobi

les arguments d'entrée et de sortie sont:

input

A matrice carré de taille n,n

b matice de taille n,p

itm ||AX - b ||/||b|| recherché

(les deux en normes 2)

output

X matrice n,p solution

err

0 si inversion reussie

1 si nb iteration depassé

2 si rayon spectrale trop grand

it nombre d'iterations effectuées

prec ||AX - b ||/||b|| obtenue

(les deux en normes 2)

merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Tu peux aussi demander au prof de t'expliquer la correction du TP, après tout, c'est son taff... J'ai quand même une question : vous êtes tous dans le même cours de Matlab, ou bien vous vous êtes donnés le mot ? C'est le quatrième topic en une semaine qui contient un copié/collé d'un TP de Matlab. PCI n'est pas cyberpapy. Ce forum d'entre-aide est là pour filer des coups de main entre personnes qui ont des problèmes, pas pour gratter une correction de TP. (désolé si ça donne l'impression que tu prends pour tout le monde)

Regarde un peu la tronche de ce que tu postes : un copié/collé de TP, même pas un essai de réponse, nichts, niet, nada. On a l'impression que tu attends qu'on te file un scripte tout chaud à imprimmer et à filer au prof, c'est dingue quand même. En plus, "sans trop nous en demander", si y a pas les explications, c'est pas grave tant que le résultat est là... Tu pourrais au moins nous mettre le résultat de ton boulot, et dire un truc du style "à tel endroit, ça marche pas : il fait ça au lieu de faire ça, et je comprends pas pourquoi". Là, je serais ravi de t'aider. Mais franchement, faire le TP à ta place, non, quoi.

J'ai l'impression de voir mes étudiants. Je donne l'énoncé : rien. Je l'explique en détail, en en montrant les subtilités : rien. Je donne l'architecture du programme, les entetes des fonctions avec la description de ce qu'elles font : rien. Encéphalogramme plat. Je vais pas coder à leur place non plus, y a un moment où il faut se sortir les doigts du cul, bordel ! La vie, c'est quelque chose qu'on est seul à pouvoir se créer, on ne peut pas faire des copier/coller...

Allez, désolé pour le coup de gueule.

Lien vers le commentaire
Partager sur d’autres sites

salut monsieur iorinc!

1) ce n'est pas un Ctrl c / Ctrl v mais simplement 2 questions d'un tres long tp avec parties theorique(ie des maths) et plusieurs fonctions a ecrire donc ce que j'ai posté represente environ 8% du TP

2) je ne vien pas gratter les reponses ici, puisque tu es si intelligent, tu ne penses pas que je pourrais recupperer une correction toute faite sans me compliquer la vie a poster un long message, par exemple celle de mon voisin en classe et remixer le programme sans que le prof le remarque? mais non j'ai essayer de chercher.

il ya au moin un truc avec laquelle je suis d'accord avec toi c'est que j'aurais du au moin ecrire ce que j'ai pu faire

pour la 1ere fonction j'ai reussi a ecrire que ça:

D=diag(diag(A));

E=-tril(A,-1);

F=-triu(A,+1);

B_j=inv(D)*(E+F);

rho_j(A)=max(abs(eig(B_j));

parcontre l'autre je ny arrive pas du tout

voila voila

Lien vers le commentaire
Partager sur d’autres sites

pour le premier, ça semble ok, il ne reste plus qu'à le mettre sous forme de fonction matlab (avec function r=truc(A) etc...)

Pour la deuxième, d'abord tu génères une matrice X(n,p) en random (La méthode de Jacobi marche quelque soit X - on pourrait ne mettre que des 1 mais le hasard fait souvent bien les choses), ensuite check esle rayon spectral de b, s'il est supérieur à 1, tu mets 2 dans err et tu quittes.

Sinon, tu fais une boucle : tant que it < itm ou tol > prec

prevX = X; % sauvegarde du X précédant pour l'erreur

X = JX + D-¹b; % nouveau X

it = it +1; % itérations

prec = norm(AX - b)/norm(b); % précision

err = X - prevX; % erreur

end

voilà :incline:

Lien vers le commentaire
Partager sur d’autres sites

pour le premier, ça semble ok, il ne reste plus qu'à le mettre sous forme de fonction matlab (avec function r=truc(A) etc...)

Pour la deuxième, d'abord tu génères une matrice X(n,p) en random (La méthode de Jacobi marche quelque soit X - on pourrait ne mettre que des 1 mais le hasard fait souvent bien les choses), ensuite check esle rayon spectral de b, s'il est supérieur à 1, tu mets 2 dans err et tu quittes.

Sinon, tu fais une boucle : tant que it > itm ou tol > prec

prevX = X; % sauvegarde du X précédant pour l'erreur

X = JX + D-¹b; % nouveau X

it = it +1; % itérations

prec = norm(AX - b)/norm(b); % précision

err = X - prevX; % erreur

end

voilà :transpi:

lorinc est un dieu ! :sm:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour tout le monde

merci pour ton aide iorinc

dans le premier programme j'avais oublier de verifier aussi que les elements diagonaux de la matrice A etaient differents de 0

n=size(A);

for i=1:n

if A(i,i) ~=0;

etc...

le deuxieme aussi etait aussi faisable apres une bonne comprehension de la methode en question

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...