Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Matlab - méthode de remontée

Posté par
Kernelpanic
01-12-19 à 11:37

Bonjour à tous,

j'ai une question à vous poser sur de Matlab. J'essaye d'écrire un code pour effectuer la méthode de remontée quand on essaye de résoudre un système linéaire. Voici le code :

function [ x ] = remontee( U,y ) \\ \\ n = size(y); \\ x = y;\\ \\ for~ i=n:-1:1 \\ ~~~~x(i) = x(i) - U(i,i+1:n)*x(i+1:n); \\ ~~~~x(i) = x(i)/U(i,i); \\ end \\ \\ end

où U est une matrice triangulaire supérieure (dont on sait que les éléments de la diagonale sont non nuls) et où le système est du style

U*x = y

bon le problème c'est qu'il y a un tour de boucle inutile (du moins c'est pas un vrai problème, en terme de nombre d'opérations c'est pas important...) étant donné que je fais x = y au départ, je voudrais commencer la boucle à n-1 et écrire avant cette dernière

x(n) = x(n)/U(n,n)

mais j'ai une erreur :

Error using  /
Matrix dimensions must agree.

Error in remontee (line 5)
x(n) = x(n) / U(n,n) ;


je dois avouer que je ne comprends pas cette erreur, je divise des scalaires non ? il n 'y a pas d'opérations élément par élément avec ./ alors je vois pas le problème... je débute sur matlab, ce serait gentil de bien vouloir m'expliquer le souci pour que je ne refasse pas cette erreur en TP etc...

Merci d'avance !

Posté par
Kernelpanic
re : Matlab - méthode de remontée 01-12-19 à 11:48

De toute manière je crois que le code ne marche pas. Je vais revoir ça (j'ai testé sur des exemples, la boucle ne fonctionne pas comme je veux).

Posté par
sanantonio312
re : Matlab - méthode de remontée 01-12-19 à 15:19

Je connais mal Matlab, mais est-il normal d'utiliser des index négatifs pour des éléments de matrices? (i varie de -1 à 1 dirait-on?)

Posté par
Kernelpanic
re : Matlab - méthode de remontée 01-12-19 à 15:30

Bonjour sanantonio312, merci de ta réponse. Non, en fait la ligne

i = n : -1 : 1

veut dire que l'indice i va de n à 1 en décroissant avec un pas de -1 (le pas se met au centre)

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !