Fonction definie par morceaux avec R
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Fonction definie par morceaux avec R



  1. #1
    invitecd18378c

    Fonction definie par morceaux avec R


    ------

    Bonjour

    Probleme dans la contruction de ma fonction f ( qui est fonction definie par morceaux)

    definie par :




    R code

    g = function(x){
    if (0 < x < 1)
    {0.5*x^2}
    if (1<x<-2)
    {-x^2+3*x-3/2 }
    if (2<x<3)
    { 0.5*x^2-3*x+9/2 }
    else
    {0}
    }

    x=seq(0,3,0.1)

    plot(x,g(x))

    Merci d'avance pour vos remarques

    -----

  2. #2
    invite0bbe92c0

    Re : Fonction definie par morceaux avec R

    Bonjour

    - Sauf erreur, les cas traitent du strictement inférieur/supérieur alors que ta définition parle de inférieur/supérieur ou égal.
    - Dans le cas entre 1 et 2, tu as mis "-2".
    - Je ne connais pas la priorité des opérandes en R , mais es tu sur qu'elle est telle que tu peux te passer de parenthèses ?

  3. #3
    invite9dc7b526

    Re : Fonction definie par morceaux avec R

    Citation Envoyé par frjulien Voir le message
    if (1<x<-2)
    ça c'est pas bon (on several counts)

    1) la construction a<b<c est interdite : il faut écrire (a<b)&&(b<c)

    2) x<-2 ne teste pas si x est inférieur à -2 mais affecte 2 à x

    3) il n'y a rien entre 1 et -2

  4. #4
    invitecd18378c

    Re : Fonction definie par morceaux avec R

    Thank you for your comments
    I tried this code but the same problem

    g <- function(x)
    {
    if (0 < x)&&(x< 1)
    {
    0.5*x^2
    }
    if (1<x)&&(x<2)
    {
    -x^2+3*x-3/2
    }
    if (2<x)&& (x<3)
    {
    0.5*x^2-3*x+9/2
    }
    else
    {0}

    }

  5. A voir en vidéo sur Futura
  6. #5
    invitecd18378c

    Re : Fonction definie par morceaux avec R

    Merci pour vos remarques
    J'ai essaye meme avec else if au lieu de if ca n'est pas bon je ne comprend le probleme

    g <- function(x)
    {
    if (0 < x)&&(x< 1)
    {
    0.5*x^2
    }
    if (1<x)&&(x<2)
    {
    -x^2+3*x-3/2
    }
    if (2<x)&& (x<3)
    {
    0.5*x^2-3*x+9/2
    }
    else
    {0}

    }

  7. #6
    invite9dc7b526

    Re : Fonction definie par morceaux avec R

    bonjour,

    ça ne marche pas parce que ton else ne concerne que le dernier if. Si la condition n'est pas vérifiée la fonction renvoie zéro quoi qu'elle ait calculé avant. Soit tu rajoutes des else aux bons endroits, soit tu bricoles une expression à base de trunc, max et min qui renvoie la bonne valeur sans faire explicitement de tests.

  8. #7
    invite0bbe92c0

    Re : Fonction definie par morceaux avec R

    Citation Envoyé par frjulien Voir le message
    Merci pour vos remarques
    J'ai essaye meme avec else if au lieu de if ca n'est pas bon je ne comprend le probleme
    IL faudrait quand même se documenter un peu sur la syntaxe de base ....

  9. #8
    jacknicklaus

    Re : Fonction definie par morceaux avec R

    Code:
    g <- function(x)
    {
      if (x <0)
      {0}
      else
      {
        if (x<= 1)
        {0.5*x^2}
        else
        {
          if (x<=2)
          {-x^2+3*x-3/2}
          else
          {
            if (x<=3)
            { 0.5*x^2-3*x+9/2}
            else
            {0}
          }
        }
      }
    }
    Dernière modification par JPL ; 18/05/2017 à 01h19. Motif: Ajout de la balise Code (#) pour garder l'indentation
    There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.

  10. #9
    invite9dc7b526

    Re : Fonction definie par morceaux avec R

    on peut aussi utiliser cette astuce: sous R un logique vaut 0 ou 1. Par exemple TRUE+3 renvoie 4.

    on peut donc écrire la fonction comme-ci :

    fu<-function(x) (x^2/2) * (0<x)*(x<=1) + (3*x-x^2-3/2) * (1<x)*(x<=2) + (x^2/2-x*3+9/2) * (2<x)*(x<=3)

    mais ça n'est pas toujours une bonne idée d'utiliser des astuces de ce type. D'ailleurs il me semble que la norme garantit juste que FALSE est 0 et TRUE n'importe quelle autre valeur.

Discussions similaires

  1. Continuité d'une fonction définie par morceaux
    Par invite537196df dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 03/01/2015, 15h01
  2. une fonction affine par morceaux
    Par invitefde381ee dans le forum Mathématiques du collège et du lycée
    Réponses: 12
    Dernier message: 20/02/2012, 11h37
  3. fonction continues par morceaux
    Par invite371ae0af dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 19/01/2011, 22h25
  4. fonction définie par morceaux - C infini
    Par invite759a22b1 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 23/02/2010, 15h27
  5. Passage fonction définie en paramétrique à fonction implicite ?
    Par invite9e01212f dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 27/03/2007, 23h38