Bonjour
Pour mon usage personne, j'aurais besoin d'une fonction qui vérifie exactement :
1 -> 15
2 -> 12
3 -> 10
4 -> 9
5 -> 8
6 -> 7
7 -> 6
8 -> 5
9 -> 4
10 -> 3
11 -> 2
12 -> 1
Je sais que je peux simplement faire f(1)=15, f(2)=12 et pour tout x supérieur ou égal à 3, f(x)=13-x
mais je cherche une formule explicite, c'est pour ça que je pose mon problème ici
merci beaucoup !
Bonjour,
Doit-on comprendre que tu recherche une fonction qui passe par l'ensemble de tous ces points, à savoir (1,15), (2,12), (3,10), etc ... ?
Merci beaucoup lake mais après réfléxion je pense qu'on peut réduire de beaucoup le degré en utilisant la fonction floor()
D'ailleurs, corrigez-moi si je me trompe, mais on peut effectuer ce travail avec un système de n équations à n inconnues non?
Bonjour,
tant qu'à utiliser floor(), autant utilisant abs() en modélisant la fonction par deux demi-droites :
pour x < a la droite passant par P1 et P2
et pour x > a la droite passant par P3 à P15
avec a judicieux entre 2 et 3
(blank sur "détente")
C' était juste une plaisanterie zormuche et j' ai commis une erreur:
En pratique guère utilisable...
j'ai pensé aussi à la valeur absolue pour deux portions de droite, mais je ne savais pas comment en réaliser une "sur mesure"
Tu peux en réaliser une sur mesure et "exacte" par l'interpolation de Lagrange, mais ça va prendre du temps.
Après, tout dépend de l'objectif à atteindre. Peut être qu'une certaine approximation suffit, ou encore une droite et une courbe sur 2 domaines cumulées.
Pour information, l'illustration que je t'ai donnée ci-dessus est la courbe de la fonction donnée par Lake sur le domaine [1,12] et obtenu par l'interpolation de Lagrange.
Là encore, tout dépend de ce que tu recherches : souhaites-tu tracer par ordinateur une courbe passant par tous les points donnés, ou souhaites-tu trouver analytiquement l'expression de la fonction qui passerait par tous ces points ?
comment obtenir la fonction linéaire par morceaux ?
tu l'as dit :
J'ai envoyé mon message sans avoir vu le dernier de mathafou .
Chercher l'intersection des 2 droites est moins besogneux...
Sylvieg Après un peu de réflexion, j'ai fait comme tu as suggéré, de manière intuitive
J'ai fait en sorte que cx+d soit la moyenne des deux équations de droites, et que b|x-a| soit ce qu'on ajoute ou soustrait à la moyenne pour obtenir l'une ou l'autre (me fais-je bien comprendre?)
Donc cx+d est 15,5 - 2x
et b|x-a| est |x-2.5|
Merci pour tout, ça m'a permis de réaliser deux autres fonctions assez similaires dont j'avais besoin
salut
f(1) = 15 et f(2) = 12
f(x) = ax^2 + bx + c
a + b + c = 15
4a + 2b + c = 12
3a + b = -3 <=> b = -3(a + 1)
=> c = 15 + 3(a + 1) - a = 18 + 2a
donc f(x) = ax^2 - 3(a + 1)x + 2a + 18
il faut donc maintenant combiner f(x) = ax^2 - 3(a + 1)x + 2a + 18 pour x < 3 (avec a un paramètre ...) et f(x) = 3 - x pour x > 3
...
mais on retombe alors sur une fonction définie avec un "si", (si x < 3, trinome, si x > 3 etc)
et cette sorte de définition par morceaux est bien plus simplement décrite par le message initial, sans fonction du second degré du tout.
transformer le "si" en une forme explicite se fait avec des fonctions spéciales comme la valeur absolue abs() ou le signe sgn(), voire la fonction partie entière floor()
et l'usage d'une telle fonction ne justifie plus le besoin d'un trinome puisque seule des fonctions du premier degré (linéaires) suffisent.
à noter que l'on a eu ici du bol que le point de concours des deux morceaux de droites soit effectivement entre 2 et 3
le jeu de données f(1)=15, f(2)=13, et pour x ≥ 3, f(x) = 13-x
nécessite avec la fonction abs() trois morceaux de droite et pas deux
pour obtenir f(x) = 0.5|x-2| + |x-3| - 1.5x + 15
en effet si on n'utilise que deux morceaux de droites, la fonction abs() étant continue c'est impossible :
il faudrait une discontinuité quelque part entre 2 et 3
et donc l'usage d'une fonction discontinue par essence : la fonction sgn() par exemple
ce qui rendrait la chose en fait un peu plus compliquée
si x < 2.5 f(x) = 17-2x = f1(x)
si x > 2.5 f(x) = 13-x = f2(x)
si x = 2.5 f(x) = n'importe quoi
pouvant se traduire aussi avec la fonction sgn() :
f(x) = (f2+f1)/2 + sgn(x-2.5)(f2-f1)/2
mathafou : je n'avais pas lu les msg masqués ... et ta réponse ...
je n'ai même pas fait attention à ce que les points étaient alignés (enfin en deux nuages : les deux premiers et les autres)
j'aurai proposer la même idée ...
pour avoir un exemple différent pour lequel les deux droites se coupent au delà de x = 3 (voir figures)
et donc pour lequel la méthode "simple" ne marche pas : il y faut trois segments, ou une discontinuité.
d'ailleurs avec la fonction max, cela a échoue aussi avec ce (contre)exemple !
vu que c'est exactement pareil que l'usage de abs() dans les messages précédents
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :