2017-07-24 5 views
0
morceaux

Je suis en train de faire une fonction composite constitué de 3 fonctions exponentielles:R: fonctions et traçage

rm(list=ls()) 
library(mosaic) 
library(ggplot2) 

# 3 functions 
NVent=makeFun(161*exp(-x/51028)~x) # from x [0;259200[ 
Vent3_4=makeFun(1262*exp(-x/48398)~x) # from x [0;345600[ 
SVent=makeFun(118*exp(-x/217427)~x) # from x [0;1036800] 

#composite function 
QTOT <- function(x) { 
    if (x<259200) return(NVent(x)+Vent3_4(x)+SVent(x)), 
    if (259200<x<345600) return(Vent3_4(x) + SVent(x)), 
    if (345600<x<1036800) return(SVent(x)) 
} 

mais je reçois une erreur:

Error: unexpected '<' in: 
" if (x<3) return(NVent(x)+Vent3_4(x)+SVent(x)) 
    if (3<x<" 
> if (4<x<12) return(SVent(x)) 
Error: unexpected '<' in " if (4<x<" 
> } 
Error: unexpected '}' in "}" 
> 

En ce qui comprends que je ne pas écrivez les intervalles correctement, mais je n'ai pas été capable de le corriger ni de trouver des exemples qui peuvent m'aider, alors j'apprécierais vraiment votre contribution!

+0

'si (259200

Répondre

0

Votre condition doit être:

259200<x && x<345600 
+0

Merci, cela a fonctionné :) – Gro

+0

Pouvez-vous accepter ma réponse pls? ;) – Ale

+0

J'ai fait, - mais obtenir un message qu'un poste avec moins de 15 réputation, est compté mais pas affiché publiquement, donc je suppose que c'est pourquoi vous ne pouvez pas le voir :) – Gro

0

Donc, pour les futurs utilisateurs que je voulais juste poster ce que j'ai finalement trouvé être la meilleure façon d'écrire cette fonction définie par:

NVent=makeFun(161*exp(-x/51028)~x) 
Vent3_4=makeFun(1262*exp(-x/48398)~x) 
SVent=makeFun(118*exp(-x/217427)~x) 

f1=makeFun(NVent(x)+Vent3_4(x)+SVent(x)~x) 
T1 <- 3*24*3600 
f2=makeFun(Vent3_4(x)+SVent(x)~x) 
T2 <- 4*24*3600 
f3=makeFun(SVent(x)~x) 
T3 <-12*24*3600 

#Piecewise function 
QTOT <- function(x) 
    (x > 0 & x <= T1)*f1(x) + (x > T1 & x < T2)*f2(x) + (x > T2 & x <T3)*f3(x) 

# Plot of piecewise function 
curve(QTOT, xlim = c(0,T3)) 

Cela m'a permis pour tracer la fonction par morceaux en utilisant la courbe ou le matplot, alors que dans le code précédent j'avais le problème que seule la première partie de la fonction par morceaux était tracée.