Fonction matlab

Résolu
Bonjour,

je veux dessiner une fonction en matlab , mais ya un probleme qui s affiche ds le progamme :

D=linspace(0,1,10);
B=linspace(0,1,10);
f=1,2;
g=2;
m=8 ;
D=B/B+(1-B).*((f-(f/g).^m)/f-1);
plot(B,D)

voici l erreur
??? D=B+(1-B).*((f-(f/g).^m)/(f-1);
|
Error: Unbalanced or unexpected parenthesis or bracket.

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    l'erreur est étonnante, je compte le bon nombre de parenthèse.
    la seule chose qui me gène c'est "f=1,2". Normalement, les nombre réel s'écrivent avec un point. Là, je ne sais pas ce que ça donne.
    je ne comprend pas non plus ton B/B... en plus, un vecteur divisé par un vecteur, je suis étonner qu'il ne râle pas.
    pourquoi donner des valeurs à D alors que tu l'écrases quelques lignes plus loin ?
    1. merci Char snipeur ,je suis débutante en matlab donc c'est pas évident ds un premier temps , l'objectif c de dessiner D en fonction de B ,
      et B et D peuvent prendre des nombres et ce sont pas des vecteurs
      avec f , g et m donné
      voila le programme corrigé :
      D=linspace(0,1,10);
      B=linspace(0,1,10);
      f=1.2;
      g=2;
      m=8 ;
      D=B/(B+(1-B).*((f-(f/g).^m)/(f-1)));
      plot(B,D)

      j'ai essayé de modifier les parentheses ,
      1. Contributeur
        B=linspace(0,1,10);
        veux dire que B est un vecteur. Lorsque tu fais B/B tu essais de faire un produit "matriciel" qui ne fonctionne pas sur des vecteurs (je crois qu'il est impossible d'inverser un vecteur). Ce qui est génial avec MATLAB, c'est que tu peux faire des opérations terme à terme grace aux opérateurs préfixés avec un point, comme tu l'utilises avec la multiplication et la puissance.
        D=B./(B+(1-B)*((f-(f/g)^m)/(f-1)));
        Il faut bien faire attention aux choses que tu multiplies et que tu divises.
        1. oui vous avez raison , merci bcp
          le probleme est résolu