Inscription / Connexion Nouveau Sujet
Niveau LicenceMaths 2e/3e a
Partager :

scilab erreur de dimension "plot"

Posté par
filou23
07-04-18 à 19:30

bonjour a toutes et a tous

Voila je voulais faire un tracé de courbe sur Scilab, mais voila apparemment j'ai une erreur de dimension au niveau de mon plot et vraiment je planche dessus depuis 1h et impossible de trouver si vous voyez d'où vient le problème ça serait super sympa de me le dire je deviens fou
voila l'erreur que scilab m'affiche (d'ailleurs il m'ouvre un graphique sans tracé tout vide) :

"plot : Dimension erronée des arguments d'entrée n°2 et n°3 : Dimensions incompatibles."


voici mon code :

T=[0.5172 0.5473 -1.224 0.8012;0.5473 1.388 1.353 -1.112; -1.224 1.353 0.03642 2.893; 0.8012 -1.112 2.893 0.05827];

z1=[1 0 0 0]';
z2=[1;1;1;1]*(1/2);
z3=[1;1;0;2]*(1/2);
tol=10^-8;
nitermax =70;

[nu1,x1,niter1,err1]=puissance(T,z1,tol,nitermax);
[nu2,x2,niter2,err2]=puissance(T,z2,tol,nitermax);
[nu3,x3,niter3,err3]=puissance(T,z3,tol,nitermax);

figure(0)

plot(1:nitermax+1,nu1,'r',1:nitermax+1,nu2,'r',1:nitermax+1,nu3,'r')
legend('z1','z2','z3')
title('approximation de la valeur propre en fonction du nombre')
xlabel('nombre d iteration');
ylabel('erreur');

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 19:59

Juste pour préciser nu1 nu2 nu3 sont de simple réelle

Posté par
bbomaths
re : scilab erreur de dimension "plot" 07-04-18 à 21:08

Bonsoir.

Où et comment est définie la fonction puissance() ?

Vérifiez le nombre de points à afficher : nitermax + 1 ou nitermax

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 21:17

ha oui voila ma fonction puissance merci de ton aide :

function[nu1,x1,niter,err]=puissance(A,z0,tol,nitermax);
    q=z0/norm(z0);q2=q;err=[];nu1=[];
    res=tol+1;niter=0;z=A*q;
    
    while (res>=tol & niter<=nitermax)
        q=z/norm(z);z=A*q;lam=q'*z;x1=q;
        z2=q2'*A; q2=z2/norm(z2); q2=q2';
        y1=q2; c=abs(y1'*x1);
        if (c>=5e-2),
            res=norm(z-lam*q)/c;
           niter=niter+1;err=[err; res]; nu1=[nu1; lam];
       else
           disp('Probleme de convergence !');
           break;
           end
    end
    endfunction

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 21:21

j'ai enlever le +1 a coté de mon niter mais ça ne change rien :/
Vraiment je suis intrigué ^^

Posté par
bbomaths
re : scilab erreur de dimension "plot" 07-04-18 à 21:42

La définition de fonction est-elle correcte ?

function[nu1, x1, niter, err] = puissance(A, z0, tol, nitermax)

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 21:47

Oui j'en suis sûr car cette fonction fait parti de mon énoncé j'ai bien vérifié

Posté par
bbomaths
re : scilab erreur de dimension "plot" 07-04-18 à 21:52

Il n'y a pas d'inversion dans l'ordre des arguments ?

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 21:59

comme ca tu veux dire ?


function[nu1,x1,err,niter]=puissance(A,z0,tol,nitermax);
    q=z0/norm(z0);q2=q;err=[];nu1=[];
    res=tol+1;niter=0;z=A*q;
    
    while (res>=tol & niter<=nitermax)
        q=z/norm(z);z=A*q;lam=q'*z;x1=q;
        z2=q2'*A; q2=z2/norm(z2); q2=q2';
        y1=q2; c=abs(y1'*x1);
        if (c>=5e-2),
            res=norm(z-lam*q)/c;
           niter=niter+1;err=[err; res]; nu1=[nu1; lam];
       else
           disp('Probleme de convergence !');
           break;
           end
    end
    endfunction



T=[0.5172 0.5473 -1.224 0.8012;0.5473 1.388 1.353 -1.112; -1.224 1.353 0.03642 2.893; 0.8012 -1.112 2.893 0.05827];

z1=[1 0 0 0]';
z2=[1;1;1;1]*(1/2);
z3=[1;1;0;2]*(1/2);
tol=10^-8;
nitermax =70;

[nu1,x1,err1,niter1]=puissance(T,z1,tol,nitermax);
[nu2,x2,err2,niter2]=puissance(T,z2,tol,nitermax);
[nu3,x3,err3,niter3]=puissance(T,z3,tol,nitermax);

figure(0)

plot(1:nitermax,nu1,'r',1:nitermax,nu2,'r',1:nitermax,nu3,'r')
legend('z1','z2','z3')
title('approximation de la valeur propre en fonction du nombre')
xlabel('nombre d iteration');
ylabel('erreur');

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 22:07

ca ne change rien :,( mais ma fonction puissance fonctionne je l'ai testé...

Posté par
bbomaths
re : scilab erreur de dimension "plot" 07-04-18 à 22:29

on va laisser passer la nuit... de mon côté, j'ai une erreur sur l'appel de la fonction puissance( )...

Posté par
filou23
re : scilab erreur de dimension "plot" 07-04-18 à 23:40

Dac merci quand même à demain ^^

Posté par
bbomaths
re : scilab erreur de dimension "plot" 08-04-18 à 00:06

Je pense avoir trouvé...

scilab erreur de dimension  plot

Le vecteur nu1 n'a pas la bonne dimension (69 x 1) alors que les autres (nu2 et nu3) ont comme dimension 71 x 1 ou la commande plot( ) n'est pas appelée avec une valeur correcte.


plot(1 : nitermax - 1, nu_1, 'r', 1 : nitermax + 1, nu_2, 'r', 1 : nitermax + 1, nu_3, 'r')

Posté par
filou23
re : scilab erreur de dimension "plot" 08-04-18 à 10:14

Bizarre comme modif j'aurais pas cru que cela soit un problème^^
en tous cas j'ai essayer ce que tu as fait et pour moi ca ne fonctionne pas tu peux m'envoyer ton code en entier? Je commence a me demander si cela ne viendrai pas de mon ordi qui m'aime pas xD

Posté par
filou23
re : scilab erreur de dimension "plot" 08-04-18 à 10:42

Ca fonctionne MERCI BEAUCOUP !!!
MAis la vraiment il y a quelque chose qui m'intrigue si je passe par exemple a 60 le nombre d'itération de ma ma fonction qui trace les courbe l'erreur revient je comprend pas pourquoi :/

Posté par
bbomaths
re : scilab erreur de dimension "plot" 08-04-18 à 12:10

Bonjour.

Je pense que vous devriez vérifier l'enchainement de vos calculs, les dimensions des matrices, ...



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

Inscription gratuite

Fiches en rapport

parmi 1742 fiches de maths

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 !