IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Beaucoup d'arguments dans ma fonction ? [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 53
    Par défaut Beaucoup d'arguments dans ma fonction ?
    Salut tout le monde,
    J'ai écrit un code afin d'estimer les paramètres d'un GARCH à partir des données empiriques en minimisant la somme des erreurs, cependant je dois utiliser beaucoup de variables en entrée pour définir ma fonction à minimiser et ce que j'ai fait n'a pas l'air de marcher, Matlab m'indique que je me trompe dans le nom de la fonction :s Des idées ?

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    % Charger nbr_sim sombre de simulations
    % Charger taux sans risque quotidien (/360) r
    % Charger vecteur des S0 (S0 au dÈbut d'observation des prix pour chaque option) 
    % Charger vecteur des Sigma0 (S0 au dÈbut d'observation des prix pour chaque option)  
    % Charger vecteur des maturitÈs Mat_vec
    % Charger vecteur durÈe de vie restante (afin d'Èxploiter les observations
    % des options non Èchues)rest_vec
    % Charger les matrices d'observations pour chaque maturitÈ dans un cell
    % array prix_array
    % Charger les vecteurs des strikes disponibles pour chaque maturitÈ dans un
    % autre cell array strike_array
     
    function f = f(om,alpha,gam,beta,vec_strike,mat_vec,prix_array{1},s0_vec,sig0_vec,rest_vec,r,nbr_sim)
     
    % GÈnÈration et stockage en mÈmoire des tous les nombres alÈatoires
    nbr_mat = size(mat_vec,1);
    eps2=cell(nbr_mat);
    for i = 1:nbr_mat
    mat = mat_vec(i);
    eps1=cell(nbr_strike);
    for j = 1: nbr_strike
            eps1{j}=rndn(nbr_sim,mat);
    end 
    eps2{i}= eps1{j}; 
    end 
     
    e=zero(nbr_mat,nbr_obs);
    c=zero(nbr_mat,nbr_strike);
    nbr_strike = size(vec_strike,1);
    for i = 1:nbr_mat
    vec_strike = strike_array{i};
    prix=prix_array{i};
    nbr_strike = size(vec_strike,1);
    mat = mat_vec(i);
    so=s0_vec(i);
    sig0=sig0_vec(i);
    nbr_obs=mat_vec(i)-rest_vec(i);
    eps1=eps2{i};
     
    for j =1 : nbr_strike
      strike = vec_strike (j);  
        eps=eps1{j};  % matrice des nombres alÈatoires qui va Ítre utilisÈe dans les simulations
      payoff=zero(nbr_sim);
       for k = 1 : nbr_sim
          sigma=zeros(nbr_sim,mat+1); 
           Z = zeros(nbr_sim,mat);
               for l = 2 : mat+1
                 sigma (1,1)=sig0;
                 Z(1)=1;
                 sigma (k,l)=(om + (alpha * (eps(k,l-1)-(0.5+ gam))^2)*sigma(k,l-1)^2+beta*sig(l- 1)^2)^0.5; 
                 Z(k,l) = Z(k,l-1)*Exp((-0.5 *(cig(k,l)^2))+(sig(k,l)*eps(k,l)));
               end
         st = sz * (Exp(r * mat)) * Z(mat);
         payoff(k)= max(st-strike,0);
     
      end
        c (i,j)= mean (payoff);
     
      %%%%%%% Calcul des erreurs
     
       for l = i : nbr_obs
           e(i,j)=e(j)+(prix(l,j)-(c(i,j)*exp(r*(l-mat))))^2;
       end
    end
    c (i,j)% stocker dans un cell array
    e(i,j) % stocker dans un cell array
    end
     
    ee =zero(nbr_mat);
    for i =1 : nbr_mat
        for j =1 :nbr_strike
        ee(i)=ee+e(i,j);
        end
    eee=eee+ ee(i);
    end
    f = eee;
     
    %Optimisation
     
    %Matrice des contraintes
    A = [1 1 1 ; -1 0 0 ; 0 -1 0 ; 0 0 -1];       
    b = [1 ; 0 ; 0 ; 0];
     
    fmincon

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Tu n'as pas le droit d'écrire çà: dans les paramètres d'entrée d'une fonction.

    Duf

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 53
    Par défaut
    Merci Duf mais même après l'avoir enlevé j'ai ces erreurs à la ligne 28 qui restent :
    Function keyword use is invalid here
    parse error at ')' : usage might be invalid MATLAB syntax
    Je dois utiliser plusieurs matrices que je dois stocker dans un cell array, je vais utiliser une seule pour le test mais après je dois mettre toutes mes matrices comme arguments ? (...,prix1,prix2,........)

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 53
    Par défaut
    Pour être plus explicite :
    J'ai un vecteur de maturités, pour chaque valeur de ma variable maturité j'ai un vecteur de données et une matrice de données que je stocke dans un cell array.
    Donc j'ai deux cell arrays, 4 vecteurs et 2 scalaires comme input dans ma fonction. + 4 paramètres à estimer.
    Puis-je mettre comme argument Prix_array ou je dois mettre les matrices qui le compose une par une ?
    J'ai essayé plusieurs combinaisons, changer les parenthèses,....mais le problème persiste :s
    S'il vous plaît de l'aide

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Non tu peux très bien faire passer Prix_array entier.
    J'aurais plusieurs remarques:

    Quelles erreurs obtiens-tu encore, et quelles sont les lignes concernées?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 53
    Par défaut
    Merci Winjerome, merci pour ces corrections mais le problème persiste :
    J'ai les erreurs :

    Function keyword use is invalid here
    parse error at ')' : usage might be invalid MATLAB syntax
    Avec le mot function et la parenthèse de fin sont sous-lignés en rouge

    De plus en ayant mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    % ParamËtres
    om = par(1);
    alpha=par(2);
    gam =par(3);
    beta=par(4);
    function f = f (par,prix_array,strike_array,mat_vec,s0_vec,sig0_vec,rest_vec,r,nbr_sim)
    J'ai prix_array et strike_array coloriés en marron avec l'erreur :

    Terminate statement with semicolon to supress outpout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passage d'argument dans une fonction
    Par wadcyr8_197 dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2007, 09h41
  2. Généricité des Input Arguments dans une fonction
    Par RaphTIM dans le forum MATLAB
    Réponses: 5
    Dernier message: 06/06/2007, 16h28
  3. Passer un tableau PHP en argument dans une fonction javascript ?
    Par The Molo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/05/2007, 12h31
  4. Erreur d'argument dans une fonction
    Par rouliane dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/12/2006, 11h52
  5. arguments dans ma fonction main
    Par salseropom dans le forum C
    Réponses: 10
    Dernier message: 15/03/2006, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo