Réciproque de fonction

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
chris34
Messages: 8
Enregistré le: 19 Nov 2019, 07:22

Re: réciproque de fonction

par chris34 » 20 Nov 2019, 08:31

vladi a écrit:ça se trouve c'est ça qu'il veut (je parie une mêche de cheveux de 30 cm de long et mes deux incisives inférieures)

Image

Merci à viadi, mathelot et pascal 16 pour votre travail qui va m'aider à trouver la solution. Mais la période de 63 que vous indiquez me pose problème.
Donc je vous explique tout le problème ce sera plus simple (et plus compliqué sans doute!!!).

J'ai une sinusoide de 50 hertz soit une période de 20 millisecondes donnée par le courant domestique de "220V" qui sont en réalité 240V.
Sur une demi période soit 10 ms je veux avoir une augmentation de puissance linéaire donc cela fait intervenir aussi l'intensité du courant qui est une sinosoide on va dire synchrone avec la tension (pour un cos phi idéal de 1).
La question est combien de microsecondes en + pour augmenter la puissance (ou plutôt l'énergie) par paliers de 1/128ème.
L'équation que je vous ai donnée est celle qui résulte approximativement (graphiquement, les courbes se superposent) de mesures effectuées de la façon suivante:
Une résistance est alimentée pendant des valeurs de temps augmentant par 128ème de 10ms sur chaque 1/2 période. (Alimentation par angle de phase).
On mesure l'énergie utilisée en watts heure qui va de 0 à 2100.
En augmentant par paliers de 1/128ème de 10ms on a des valeurs d'énergie qui remplissent le tableau.
Je souhaite faire l'inverse : combien de microsecondes (ou de 128ème de 10ms cela me va aussi) pour une augmentation linéaire de l'énergie.
Pour éviter dans mon programme de faire appel à un tableau de 129 valeurs (de 0 à 128) je cherche l'équation qui le fait.
J'espère être clair et le problème sort du cadre mathématique pur.



vladi
Membre Relatif
Messages: 179
Enregistré le: 09 Sep 2019, 11:31

Re: réciproque de fonction

par vladi » 20 Nov 2019, 15:49

chris34 a écrit: Mais la période de 63 que vous indiquez me pose problème.


la fonction de ma figure est de période 256

je ne vois vraiment pas comment vous arrivez à une période de 63 en regardant ma figure

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Re: réciproque de fonction

par fatal_error » 20 Nov 2019, 17:01

@chris34
En regardant de plus près ta formule

f(x)=SIN(((x/6,4)-10)/PI()/2)+1

la première valeur de ((x/6,4)-10)/PI()/2 est -1.5915494309189535 or -pi/2 = -1.5707963267948966 (idem ta première valeur est galère à inverser parce que pas dans l'interval où f est monotone ([1;127]))

Peut-être considérer une approche de construction de f différente:

On prend une sinusoïde classique, avec le min en -pi/2 et le max en pi/2, on discrètise l'interval en
-pi/2 + k pi/128 où k prend les valeurs 0 à 128

on shifte la courbe de 1 vers le haut pour que en -pi/2, f(-pi/2)==0

jusque là, f(k) = sin(-pi/2 + k*pi/128)+1

Maintenant on sait que l'interval de "taille" pi correspond à 10ms et donc que un k donné correspond à 10/128 (ms)

tu as alors sa réciproque pour k dans [0; 128] par

y = sin(-pi/2 + k*pi/128)+1 <=>
y-1 = sin(-pi/2 + k*pi/128) <=>
asin(y-1) = -pi/2 + k*pi/128 <=>
asin(y-1) + pi/2 = kpi/128 <=>
k = ( asin(y-1) + pi/2 ) * 128 / pi

idem



on teste par curiosité les valeurs...
Code: Tout sélectionner
octave:2> x=[0:128];f=@(x)sin(-pi/2 + x*pi/128)+1;g=@(y)( asin(y-1) + pi/2 ) * 128 / pi;
octave:4> format none
octave:5> g(f(x))
ans =

 0 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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128


good: la fonction g envoie bien f(x) sur x (idem la réciproque...)

maintenant il te reste plus qu'à scaler tes abscisses.

Quand t'as une certaine valeur, mettons f(5) == 0.00752047
tu sais que ca correspond à k==5 pas de temps, idem 5*10/128(ms) == 0.390625(ms)
(et bien sûr, on vérifie que k==128, on a bien 10ms ...)

On note que la fonction que tu avais posé est proche de celle que je propose mais fait des valeurs intervalles galère à considérer

edit: en vert celle que je propose, en rouge celle que tu proposes
Image
la vie est une fête :)

vladi
Membre Relatif
Messages: 179
Enregistré le: 09 Sep 2019, 11:31

Re: réciproque de fonction

par vladi » 20 Nov 2019, 17:05

bah oui c'est celle là
j'ai juste fait exprès de ne pas dire qu'elle tombe juste car c'est interdit par la charte
Image

vladi
Membre Relatif
Messages: 179
Enregistré le: 09 Sep 2019, 11:31

Re: réciproque de fonction

par vladi » 20 Nov 2019, 17:10

je rappelle quand même que j'ai parié trois de mes incisives (j'allais quand même pas donner une mêche de cheveux et j'aurais négocié pour l'échanger avec une incisive si j'avais perdu)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Re: réciproque de fonction

par fatal_error » 20 Nov 2019, 17:16

@vladi
c'est qui f sur ton graphe. La fonction de chris ou la réciproque.
As tu vérifié que ton couple de fonctions (celle de chris et la bijection que tu proposes) retournent bien l'identité...

et STP si tu te rends compte que t'as écrit des boulettes, fais (éventuellement) un poste correctif (ou pas, le silence n'est pas une honte) mais pas 50000 pour flooder cette discussion (tu es déjà à 10+posts...)
la vie est une fête :)

vladi
Membre Relatif
Messages: 179
Enregistré le: 09 Sep 2019, 11:31

Re: réciproque de fonction

par vladi » 20 Nov 2019, 17:23

j'ai supposé qu'il s'était trompé dans son écriture vu que ma fonction donne les valeurs demandées dans son tableau

justement c'est pas du flood j'ai été scrupuleux avec la charte en ne lui disant pas que ma fonction donne les valeurs de son tableau

maintenant si bien faire est mal faire c'est comme être président de la république et aller dans une classe de maternelle et dire qu'une famille normale est une famille recomposée dont les deux parents sont pd (mot d'argot qui signifie homo)

mathelot

Re: réciproque de fonction

par mathelot » 20 Nov 2019, 18:52

bonsoir,
en étudiant la fonction f - pour ce faire,je résous les équations (x-64)/(6.4*2*pi)=-pi/2 etc..-
je trouve la fonction f décroissante sur [0;0.834] et f est strictement croissante sur [0.834;127]

(x-64)/(6.4*2*pi)=+pi/2 équivaut à x~127.165

il y a donc un léger biais.

chris34
Messages: 8
Enregistré le: 19 Nov 2019, 07:22

Re: réciproque de fonction

par chris34 » 21 Nov 2019, 09:17

Un grand merci à tous ceux qui ont travaillé sur le sujet et particulièrement à mathelot, pascal16 et vladi qui a mis en jeu ses incisives et les a toujours :mrgreen: ....
Avec ça je m'en sors.
Bonne journée

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Re: réciproque de fonction

par fatal_error » 21 Nov 2019, 09:43

du coup tu conserves ta fonction où tu rajoutes deux if dégueu pour sa réciproque?
Si tu la conserves, quel est (de fait) l'avantage par rapport à f(k) = sin(-pi/2 + k*pi/128)+1 ?
la vie est une fête :)

chris34
Messages: 8
Enregistré le: 19 Nov 2019, 07:22

Re: réciproque de fonction

par chris34 » 21 Nov 2019, 21:11

fatal_error a écrit:@chris34
En regardant de plus près ta formule

f(x)=SIN(((x/6,4)-10)/PI()/2)+1

la première valeur de ((x/6,4)-10)/PI()/2 est -1.5915494309189535 or -pi/2 = -1.5707963267948966 (idem ta première valeur est galère à inverser parce que pas dans l'interval où f est monotone ([1;127]))

Peut-être considérer une approche de construction de f différente:

On prend une sinusoïde classique, avec le min en -pi/2 et le max en pi/2, on discrètise l'interval en
-pi/2 + k pi/128 où k prend les valeurs 0 à 128

on shifte la courbe de 1 vers le haut pour que en -pi/2, f(-pi/2)==0

jusque là, f(k) = sin(-pi/2 + k*pi/128)+1

Maintenant on sait que l'interval de "taille" pi correspond à 10ms et donc que un k donné correspond à 10/128 (ms)

tu as alors sa réciproque pour k dans [0; 128] par

y = sin(-pi/2 + k*pi/128)+1 <=>
y-1 = sin(-pi/2 + k*pi/128) <=>
asin(y-1) = -pi/2 + k*pi/128 <=>
asin(y-1) + pi/2 = kpi/128 <=>
k = ( asin(y-1) + pi/2 ) * 128 / pi

idem



on teste par curiosité les valeurs...
Code: Tout sélectionner
octave:2> x=[0:128];f=@(x)sin(-pi/2 + x*pi/128)+1;g=@(y)( asin(y-1) + pi/2 ) * 128 / pi;
octave:4> format none
octave:5> g(f(x))
ans =

 0 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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128


good: la fonction g envoie bien f(x) sur x (idem la réciproque...)

maintenant il te reste plus qu'à scaler tes abscisses.

Quand t'as une certaine valeur, mettons f(5) == 0.00752047
tu sais que ca correspond à k==5 pas de temps, idem 5*10/128(ms) == 0.390625(ms)
(et bien sûr, on vérifie que k==128, on a bien 10ms ...)

On note que la fonction que tu avais posé est proche de celle que je propose mais fait des valeurs intervalles galère à considérer

edit: en vert celle que je propose, en rouge celle que tu proposes
Image


J'ai un ptit souci avec y = sin(-pi/2 + k*pi/128)+1 , j'ai des valeurs de 0 à 64 donc je fais y = (sin(-pi/2 + k*pi/128)+1)*2
Sinon c'est parfait. Je vais voir ce que préfère le processeur car il faut être très rapide sur cette opération.

chris34
Messages: 8
Enregistré le: 19 Nov 2019, 07:22

Re: réciproque de fonction

par chris34 » 22 Nov 2019, 11:46

y=-(SIN((k/128*PI)-PI/2)-1)*5 donne aussi les bons résultats et la même courbe je pense.
Peut être peut-on simplifier mais je ne sais pas le faire
Qu'en pensez-vous?

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

Re: réciproque de fonction

par fatal_error » 22 Nov 2019, 12:26

ya pas 50 possibilités:
soit ton nouveau y donne les même valeurs
soit non.
Tu as juste à faire ton tableur et regarder si c'est le cas ou pas.

dans tous les cas, tu peux bidouiller autant que tu veux l'expression, tant que tu as du sin, ca prendra grosso autant de temps sur ton processeur...

ce que tu peux éventuellement faire, c'est définir __l'erreur__ que tu admets entre le temps théorique et le temps que tu calcules, ce qui permettrait de définir une approximation de g (typiquement en prenant une approx de asin (par ex https://dsp.stackexchange.com/questions ... -algorithm , mais ya peut être des algo plus spécifiques)).

mais ptet plus généralement, de trouver
g_approx, tel que |g_approx(y) - g(y) |<eps, eps l'erreur que tu as définie.

Le tableau des valeurs avec interpol linéaire de Pascal en est un exemple
la vie est une fête :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 44 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite