Rechercher : dans
Par :

Suite de nombres (MATLAB)

Dernière réponse le 26 nov 2008 à 16:59:34 yoyo, le 26 nov 2008 à 12:26:22 
 Signaler ce message aux modérateurs

Bonjour,

voici le problème pour lequel j'aimerais un petit coup de pouce: j'aimerais écrire la suite de nombre suivante:

12112113114115116111111111111 etc... (le premier 2 est un cas particulier, et le nombre de 1 qui terminent dépendent de N et de i)

j'ai donc écrit cette fonction qui marche, testez là:

function [y]=suite_nombres(i,N)
p=5+3*i;
%définit l'emplacement des nombres >=2
nb_point=3*(N+1);
k=1;
l=2;



for pnt=1:nb_point,



if pnt==nb_point

g(pnt)=1;
y(pnt)=g(pnt);

elseif pnt==2

g(pnt)=2;
y(pnt)=g(pnt),;

elseif pnt==5

g(pnt)=2;
y(pnt)=g(pnt),;

%Fin des cas particuliers constants

elseif pnt==8+3*(k-1)

l=l+1;

if k<i+1


k=k+1;
g(pnt)=l;
y(pnt)=g(pnt),;

else

g(pnt)=1;
y(pnt)=g(pnt),;

end;

else

g(pnt)=1;
y(pnt)=g(pnt),;

end;

end;



Le truc c'est qu'à l'affichage comme vous pouvez le constater, il commence avec y=1, puis y=12 etc...moi ce que je veux c'est qu'il m'affiche le résultat final directement. Par ailleurs, je me demande si dans le cadre d'un calcul utilisant cette fonction, il utilise seulement le résultat final, ou s'il utilise les résultats de l'affichage dont je ne veux pas!!!!!!!

Merci pour votre aide

Configuration: Windows XP
Firefox 3.0.4

Meilleures réponses pour « suite de nombres (MATLAB) » dans :
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
[Word] Écrire un nombre en toutes lettres VoirPour transformer un nombre en toutes lettres sans se perdre dans l'orthographe (tirets, 's'...), il est possible de demander à Word de formater ce nombre en lettres : Créer un champ avec CTRL-F9 S'affichera {} à l'écran Le remplir avec la...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...

1

 Sacabouffe, le 26 nov 2008 à 16:59:34

Salut
Tel que ton programme est fait là, en sortie t'as le vecteur y de la suite de nombres.
y(1) = premier chiffre
y(2) = deuxième chiffre
...
...
Je sais pas trop ce que tu veux exactement. Tu veux juste avoir l'affichage de la suite ?

Si c'est le cas, ce que tu peux faire c'est ajouter la ligne y = num2str(y); à ton programme. La variable de sortie y est alors une chaîne de caractères avec des espaces entre chaque nombre.

Si tu veux récupérer le nombre décimal donné par ta suite, ajoute plutôt la ligne y=sum(y.*(10.^(size(y,2)-1:-1:0))); à ton programme.

Pour finir, tu peux grandement simplifier ton programme, il peut s'écrire sous cette forme :

function y=suite_nombres(ii,N)
y=ones(1,3*(N+1));
y(2)=2;
val=(2:ii+2);
ind_val=(5:3:3*(N+1));
m=min(size(val,2),size(ind_val,2));
y(ind_val(1:m))=val(1:m);
J'ai pris ii au lieu de i parce qu'il est un peu dangereux d'utiliser i vu que c'est le nombre complexe pour Matlab normalement. À toi d'ajouter la ligne qui te convient suivant ce que tu veux récupérer en sortie puisque vraisemblablement c'est pas le vecteur des nombres.

Ciao Thought I heard a rumbling, calling to my name
Two hundred million guns are loaded, Satan cries "Take aim!"

Répondre à Sacabouffe