Inscription / Connexion Nouveau Sujet
Niveau énigmes
Partager :

Fonction pour 2 variables

Posté par
Nicolas314
04-03-21 à 22:48

Bonjour,

J'ai deux variables, x et y telles que :

x est compris entre -1 et 1 (inclus)
y est compris entre -1 et 1 (inclus)

x + y  est compris entre 0 et 1 (inclus)

quand x = 0 et y = 0 alors x+y = 0.5 ("état neutre")

Comment mettre tout cela dans une fonction ? Merci !

Posté par
matheuxmatou
re : Fonction pour 2 variables 04-03-21 à 22:58

bonsoir

1 : renseigne ton profil (niveau ?)
2 : que fait cet énoncé dans cette partie du forum ?
3 : je ne comprends pas ce que tu cherches ! une fonction de qui ? de quoi ? qui fait quoi ?
4 : quand x=0 et y=0, cela m'étonnerait fort que x+y = 0,5

Posté par
Nicolas314
re : Fonction pour 2 variables 04-03-21 à 23:17

Merci, j'ai mis mon profil à jour. J'ai suivi une filière Littéraire après une seconde catastrophique en maths donc rien de merveilleux même si je tente de garder contact avec cette matière. Je suis prof de Philo (eh oui on finit comme ça quand on bulle en maths... ), d'où peut-être mon intérêt pour des problèmes en tous genres notamment informatiques.

En l'occurrence, je m'intéresse à un système d'animation 3D dans le cadre d'une simulation. Mon animation est déterminée par une valeur comprise entre 0 et 1.

0 et 1 représentent les deux états "extrêmes" de l'animation ; le "milieu" est à 0.5 (toutes les animations doivent être codées de cette manière)

J'ai deux valeurs "d'entrée", x et y qui correspondent à des axes de contrôle (x = tangage, y = lacet). Ces valeurs sont toujours comprises entre -1 et 1 (ex -1 en tangage veut dire "vers le bas", +1 en tangage "vers le haut" etc...)

Donc je veux déterminer l'état de l'animation en fonction de ces deux valeurs. Vu mon niveau je pense qu'il me manque "quelques" outils pour y arriver (comme en témoignent les incohérences évidentes que tu as fort justement soulevées ! ).

Merci beaucoup, j'ai beau retourner le problème dans tous les sens je ne m'en sors pas. Récemment j'ai réussi à utiliser des matrices ce qui est déjà pour moi une révolution

Posté par
matheuxmatou
re : Fonction pour 2 variables 04-03-21 à 23:23

d'accord... donc on est plutôt dans le style "reprise d'étude" concernant les maths dans ton profil  

disons que tu cherches une fonction de deux variables : f(x;y)

définie sur [-1;1][-1;1]

prenant ses valeurs dans [0;1]

et qui vérifierait f(0;0) = 0,5

c'est ça ?

Posté par
Nicolas314
re : Fonction pour 2 variables 04-03-21 à 23:26

Oui ça me semble juste. C'est justement sur les fonctions que j'ai "calé" en Seconde, ce qui explique sans doute mes difficultés !

Posté par
matheuxmatou
re : Fonction pour 2 variables 04-03-21 à 23:32

a priori il y en a un maudit paquet des fonctions qui vérifient cela !

après ça dépend si il y a d'autres contraintes...

mais par exemple

f(x;y) = \sqrt{\dfrac{(x+1)^2+(y+1)^2}{8}}

pourrait convenir

Posté par
Nicolas314
re : Fonction pour 2 variables 04-03-21 à 23:54

Merci beaucoup alors ça marche vraiment très bien, mais j'ai en effet oublié une contrainte.

Si j'ai par exemple x = 1 et y = 0 alors x +y = 1.

Ta fonction me donne un intervalle compris entre 0.354 et 0.791. Je souhaiterais un intervalle entre 0 et 1.  

Posté par
LittleFox
re : Fonction pour 2 variables 05-03-21 à 00:28


A priori on essaie de définir une surface dont la projection verticale est le carré [-1;1]x[-1;1], dont la hauteur est comprise dans [0;1] et le centre est à une hauteur de 0,5.

Il y en a effectivement autant qu'on veut.

En voici une autre:

f(x; y) = \frac{\frac{x-(-1)}{1-(-1)} + \frac{y-(-1)}{1-(-1)}}{2} = \frac{x+y+2}{4}

Voici une représentation de la fonction de matheuxmatou en vert et de la mienne en rouge :

Fonction pour 2 variables

Posté par
LittleFox
re : Fonction pour 2 variables 05-03-21 à 00:34


A priori on essaie de définir une surface dont la projection verticale est le carré [-1;1]x[-1;1], dont la hauteur est comprise dans [0;1] et le centre est à une hauteur de 0,5.

Il y en a effectivement autant qu'on veut.

En voici une autre:

f(x; y) = \frac{\frac{x-(-1)}{1-(-1)} + \frac{y-(-1)}{1-(-1)}}{2} = \frac{x+y+2}{4}

Voici une représentation de la fonction de matheuxmatou en vert et de la mienne en rouge :

Posté par
Nicolas314
re : Fonction pour 2 variables 05-03-21 à 00:41

Alors même résultat, même si l'amplitude est un peu meilleure.

Le problème c'est que si j'entre x = 1 ; y = 0 dans le système j'obtiens, avec ta fonction par exemple 0.75

Je voudrais obtenir 1 (ou une valeur très proche de 1 de type 0.9999) si j'entre x = 1 ; y = 0.

Posté par
LittleFox
re : Fonction pour 2 variables 05-03-21 à 00:46


Désolé pour le multipost, une erreur de connexion

Les fonctions de matheuxmatou et la mienne prennent leur minimum quand (x;y) = (0;0) et leur maximum quand (x;y) = (1;1).

f(x;y) = \frac{1 + max(x;y)}{2} répond à la condition f(1;0) = 1

Posté par
Nicolas314
re : Fonction pour 2 variables 05-03-21 à 00:54

Merci beaucoup et bravo !! C'est exactement ce que je cherchais !

Je n'avais jamais vu la notion d'extremum, du coup c'est l'outil qu'il me manquait pour résoudre ce problème.

Merci encore, c'est une question qui a scotché tout le monde sur un forum anglo-saxon

Posté par
Nicolas314
re : Fonction pour 2 variables 05-03-21 à 01:30

... sauf que...

si je rentre x = -1 ; y = 0 j'obtiens 0.5 ... idéalement il faudrait que dans ce cas j'obtienne 0.

Posté par
LittleFox
re : Fonction pour 2 variables 05-03-21 à 09:00


Tu pourrais nous définir tous les points que tu connais de ta fonction?

Voici une autre fonction pour tenir compte de ce nouveau point :

f(x; y) = \frac{1+min(1; max(-1; x+y))}{2}

C'est le plan f(x; y) = \frac{1+x+y}{2} mais limité en hauteur entre 0 et 1. On appelle cette méthode en informatique clamp(x, a, b) = max(a, min(b, x))

Posté par
matheuxmatou
re : Fonction pour 2 variables 05-03-21 à 10:58

Nicolas314 @ 04-03-2021 à 23:54


Ta fonction me donne un intervalle compris entre 0.354 et 0.791. Je souhaiterais un intervalle entre 0 et 1.  


non !

f(-1;-1) = 0
f(1;1)=1

donc elle varie bien entre 0 et 1 compris

Posté par
Nicolas314
re : Fonction pour 2 variables 05-03-21 à 13:11

Citation :
Voici une autre fonction pour tenir compte de ce nouveau point :


Alors là chapeau !

Cette fois-ci c'est impeccable !

Oui j'aurais pu préciser que je code en C++. En C++ il y a une librairie "math" qui inclut tout un tas d'outils, du coup j'ai pu entre presque "telle quelle" la formule de LittleFox (j'ai juste remplacé les ; par des , car nos amis anglo-saxons utilisent le point "." pour les décimales, et donc utilisent joyeusement la virgule comme "séparateur")

double  x, y;
x = input_axe_x;
y = input_axe_y;

anim = (1 + min(1,max(-1,x+y)))/2;


Merci encore !

Posté par
LittleFox
re : Fonction pour 2 variables 05-03-21 à 13:31


Si tu codes en C++ alors la fonction clamp dont je parlais plus haut est disponible dans la libraire algorithm:


#include <algorithm>

using namespace std;

double anim(double x, double y)
{
    return clamp((1.+x+y)/2, 0. , 1.)
}



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !