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

C Discussion :

élévation à la puissance pour des nombres décimaux


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Par défaut élévation à la puissance pour des nombres décimaux
    Bonjour à tous!

    Voilà, je réalise un modèle sur C dans lequel j'ai écrit une fonction f1 où la variable d'état R est élevée à la puissance c lorsque t est supérieur à te:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double f1;
    if(*t<=te) f1=0* *t;
    if(*t>te) f1=powl(- R ,c)+1;
    .

    Le problème, c'est que R et c sont des décimaux et que pow() n'accepte que des nombres entiers. J'ai essayé les fonctions « powl » et « powf » mais ça ne marche pas non plus (même pas « powl » ). Avez-vous une idée de fonction afin de pouvoir réaliser le calcul suivant: -Rc +1 avec R et c étant des décimaux ?

    Merci pour votre aide :-)

    PS: Voici le script en entier si vous en avez besoin et une image du modèle que je devrais obtenir, il est réalisé sous le logiciel R (lignes noires discontinues) et le modèle que j'obtiens avec le logiciel C (lignes continues et colorées) afin d'illustrer le problème :

    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
     
     
     
    /* file lorenz.c */
    #include <R.h>
    #include <Rinternals.h>
    #include <Rdefines.h>
    #include <R_ext/Rdynload.h>
    #include <Rmath.h>
    #include <stdio.h>
    #include <math.h>
     
    static double parms[10];
    #define K parms[0]
    #define kapa parms[1]
    #define t0 parms[2]
    #define alpha parms[3]
    #define sigma parms[4]
    #define ts parms[5]
    #define te parms[6]
    #define gamma parms[7]
    #define beta parms[8]
    #define c parms[9]
     
     
    /* initializer  */
    void initmod(void (* odeparms)(int *, double *))
    {
        int N = 10;
        odeparms(&N, parms);
    }
     
    #define S y[0]
    #define I y[1]
    #define R y[2]
    #define dSdt ydot[0]
    #define dIdt ydot[1]
    #define dRdt ydot[2]
     
     
    /* Derivatives and 1 output variable */
    void derivs (int *neq, double *t, double *y, double *ydot,
                 double *yout, int *ip)
    {
        if (ip[0] < 1) error("nout should be at least 1") ;
     
    double gammabis ;
    if(*t<=te) gammabis=0* *t;
    if(*t>te) gammabis=gamma; 
     
    double betabis ;
    if(*t<=te) betabis=0* *t;
    if(*t>te) betabis=beta; 
     
    double f1;
    if(*t<=te) f1=0* *t;
    if(*t>te) f1=powl(- R ,c)+1;
     
     
    double tau ;
    if(*t<=ts) tau =  alpha * exp(-kapa * (*t-t0));
    if(*t>ts) tau=0* *t;
     
    double delta ;
    if(*t<=ts) delta=0* *t;
    if(*t>ts) delta=sigma *(1- exp(-kapa * (*t-ts)));
     
     
     
     
        dSdt = -betabis*S*I *f1 + tau * S * (1 - S / K )- delta*S ; 
        dIdt = betabis * S * I *f1 - (gammabis + delta )*I;
        dRdt= delta*S +(gammabis + delta)*I;
     
    yout[0] = S + I + R ;
     
    }
     
    /* END file mymod.c */
    Images attachées Images attachées  

Discussions similaires

  1. Probleme de tri croissant pour des nombres
    Par sebastien_oasis dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/08/2007, 10h14
  2. [Velocity] Probleme de norme FR/ENG pour des nombres
    Par Katachana dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 23/05/2007, 10h33
  3. Somme sur des nombre décimaux
    Par chrislauxerrois dans le forum Access
    Réponses: 1
    Dernier message: 01/08/2006, 16h46
  4. Tri d'une JTable pour des nombres
    Par chasse dans le forum Composants
    Réponses: 2
    Dernier message: 20/04/2006, 15h25
  5. Select sur des nombre décimaux de format 0.*
    Par CanardJM dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/08/2005, 16h04

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