Problème avec des équations non-linéaires compliquées
Répondre à la discussion
Affichage des résultats 1 à 25 sur 25

Problème avec des équations non-linéaires compliquées



  1. #1
    adrienlucca

    Problème avec des équations non-linéaires compliquées


    ------

    Bonjour,

    J'ai trouvé dans un vieux bouquin un diagramme de chromaticité que je ne connaissais pas : le diagramme géodésique de MacAdam.
    Je voudrais comparer les différences de couleurs que me donne ce diagramme avec celles issues des "classiques" CIE L*a*b* et L*u*v*

    Malheureusement, le livre ne donne que les formules permettant de passer des coordonnées x, y du diagramme CIE 1931 aux coordonnées ζ, μ du diagramme géodésique, mais pas l'inverse : (ζ, μ) > (x, y)

    Je peux donc pour le moment "plotter" des coordonnées CIE L*a*b* ou L*u*v* dans le MacAdam ζ μ, mais pas faire l'inverse!
    J'ai essayé de résoudre le système d'équations pour obtenir les solutions pour x et y mais je n'y parviens pas, quelqu'un de plus expérimenté pourrait-il m'aider ?

    Voici la formule de xy vers ζμ :

    ζ = 3751*a*a-10*a^4-520*b*b+13295*b^3+32327*a*b-25491*a*a*b-41672*a*b*b+10*a^3*b-5227*a^(1/2)+2952*a^(1/4)

    avec :

    a = 10*x/(2.4*x+34*y+1) et b = 10*y/(2.4*x+34*y+1)

    et :

    μ = 404*b' - 185*b'*b'+52*b'^3+69*a'*(1-b'*b')-3*a'*a'*b'+30*a'*b'^3

    avec :

    a' = 10*x/(4.2*y-x+1) et b' = 10*y/(4.2*y-x+1)


    Je voudrais donc une solution de calcul qui me donne les coordonnées xy à partir des coordonnées ζμ

    est-ce possible?

    Merci

    -----
    // Merci ! ++ adrienlucca.wordpress.com

  2. #2
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,
    Je suppose que si vous n'y êtes pas arrivé c'est que ce n'est pas possible. J'avoue, je n'ai pas regardé le système en détail.
    Par contre, il y des moyens qui permettent d'établir avec une bonne précision une formule à partir de données.
    Par exemple on dessine un abaque (réseau de courbes) liant les 3 variables. On digitalise quelques points et on donne tout ça à la machine qui se débrouille très bien.
    Je peux le faire, ou vous aider à le faire, de toute façon ce sera intéressant.

  3. #3
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,

    si vous pouviez m'aider pas à pas dans la procédure j'apprendrai quelque chose, ce serait super!

    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  4. #4
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,
    Voila comment j'envisage la chose.
    Je dis qu'il existe une fonction f(x,y,Z,µ) (j'ai pas de dzéta sur mon clavier), non exacte mais très proche et dont on peut calculer la validité.
    On connait les formules pour calculer Z et µ à partir de x et y.
    Je suppose qu'on connait le domaine d'application de x et y.

    Pour des valeurs de x et y (6 par exemple) c'est à dire le domaine d'application divisé par 5, on calcule les valeurs de Z et µ.
    On obtient donc 36 groupes (x,y,Z,µ) de valeurs qui satisfont la fonction f.
    Pour la suite, je garde l'hypothèse de 36 groupes.
    Il y a une condition à respecter, c'est que cette fonction f est partout continue et monotone.
    Si ce n'est pas le cas, on devra faire autant de fonctions f continue et monotone dans l'intervalle de définition.

    La fonction f sera de la forme V = K . x^A * y^B * z^C
    Les variables V, x, y, z sont nos 4 variables, c'est à dire que la relation entre ces 4 variable pourront être mises sous 4 formes différentes.

    J'ai un outil qui fait ça tout seul, voila la méthode mathématique.
    Pour chacun des 36 groupes on écrit que la somme des carrés des écarts entre la valeur calculée et la valeur connue est minimum. C'est quelque-chose qui ressemble à cela
    S = Somme((V-Vi)²)
    S sera minimum pour la valeur qui annule sa dérivée.
    On a 4 inconnues (K, A, B, C) on aura 4 équations, et on s'arrange pour qu'elles soient linéaire à l'aide de changement de variable approprié.
    Il n'y a plus qu'à résoudre ce système et on a donc les 4 paramètres de la fonction.
    Ca, c'est le cas général avec plus de 3 variables.

    En fait dans le problème présent, on n'a que 3 variables, puisque on cherche à établir x=f(Z, µ), d'une part et y=f(Z,µ) d'autre part.
    Le principe est strictement le même, mais on arrive à créer des fonctions plus "fines", donc plus précises.
    Je ne pense pas qu'il soit utile de tout recalculer, puisque j'ai un outil qui le fait.
    Donc dans un premier temps, il faudrait calculer les 36 groupes (6x6) ou 30 : (6x5) c'est sans grande importance, je pense qu'excel pourra faire cela très bien.
    On vérifiera que les fonctions sont continues et monotones.
    On pourra alors, en ne prenant que 3 valeurs sur 4, établir les formules voulues et calculer la précision du résultat.

    Pouvez-vous me donnez les domaines de définition, et le pas de calcul que vous décidez , je pourrai ainsi faire les listes moi-même, et vu la complexité des formules, je crois que ce sera pas un luxe de le faire chacun de son côté.

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

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,


    x varie entre 0,0001 et 0,75 (à peu près)
    y varie entre 0,0001 et 0,85 (idem)

    il est possible de déduire dzeta et mu à partir de ça

    pour le pas, je ne sais pas quoi dire car l'idée du diagramme géodésique de chromaticité est précisément d'être plus "uniforme" que le xy,

    le mieux serait peut-être d'utiliser le solver d'excel pour choisir une "grille" rectiligne dans le dzeta-mu

    Les outils dont vous parlez sont-ils inclus dans excel ou viennent ils d'un package extra?

    Merci et bien à vous
    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  7. #6
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,
    Si je vous propose ma méthode c'est qu'elle n'est pas dans Excel (à ma connaissance) que ce n'est pas une grille rectiligne etc.
    Ce sont MES outils que j'ai mis au point en fonction des besoins, mais allez faire un tour là http://www.maths-forum.com/methode-m...rre-133947.php
    et vous verrez le niveau de mon incompétence.
    Je vais vous donner le résultat tout à l'heure, là je sors.

  8. #7
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,

    votre incompétence est imcomparablement inférieur à la mienne

    Bien à vous et merci

    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  9. #8
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonsoir,
    Voila un premier résultat, c'est pas vraiment très bon, mais comme je n'ai aucune idée de ce que ça représente, je ne peux pas vraiment savoir.
    1er résultat.
    Le meilleur 6 A=3.75 B=-0.226 C=5.10 (emq=1699.33)
    formule : Z = exp(A * X) * Y ^ B * exp(C) (exp(...) = puissance de e

    En supprimant les valeurs proches de 0
    Le meilleur 8 A=0.0854 B=-0.102 C=6.79 (emq=73.39)
    formule : Z = X ^ A * Y ^ B * exp(C) (exp(...) = puissance de e

    Le meilleur 8 A=0.0265 B=0.370 C=6.43 (emq=54.86)
    formule : Mu = X ^ A * Y ^ B * exp(C) (exp(...) = puissance de e
    Le premier résultat correspond au calcul de dzéta en prenant un pas régulier de 0.0001 à 0.75 (resp. 0.85)
    Puis j'ai supprimé les couples pour lesquels x ou y est très proche de 0 et j'ai calculé Z et Mu.
    En fait j'ai pris l'hypothèse de diviser l'intervalle pour x et pour y en parties égales, c'est pas forcément une bonne idée.
    peut-être 0.0001, 0.001, 0.01, 0.1, 0.10 0.75 par exemple serait meilleur. C'est à vous de me dire.

    Cordialement.

  10. #9
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour

    merci pour ces premiers resultats. C'est vrai que ca ne marche pas encore tres bien, mais c'est tres encourageant!
    Je vais vous envoyer une liste de coordonnees xy qui forment une grille rectiligne dans le zeta mu et qui represente a peu pres la limite de validite des equations que j'ai envoyees ci dessus.

    il y a environ 800 coordonnees, peut-etre que ca suffira, je suis curieux des resultats que vous allez obtenir!

    Merci beaucoup!
    adrien
    // Merci ! ++ adrienlucca.wordpress.com

  11. #10
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,

    ci-joint un TXT qui contient des paires de coordonnées xy > dzeta mu
    (il suffit de changer l'extension en CSV pour l'ouvrir ds excel)

    les coordonnées couvrent l'entièreté du champ dont j'ai besoin, donc si c'est valide pour elles
    ça devrait être génial!

    macadam.txt

    Bonne journée
    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  12. #11
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,

    Très intéressant comme problème.
    En fait ce que j'aurais du comprendre plus vite, c'est que le domaine de définition n'était pas un minimum et un maximum pour X et Y, mais que c'était un peu plus compliqué.
    Donc, étant donné vos valeurs, en plus de ces limites min et max, j'ai calculé les rapports et les produits min et max qui lient X et Y.
    On peut peut-être affiner encore un peu, mais là je pense que c'est pas trop mal, qu'en pensez-vous ?


    Code:
    Le calcul de dzéta
    Le meilleur  6  A=0.655 B=-0.0968 C=6.46  (emq=30.08)
    formule :  Z = exp(A * X) * Y ^ B * exp(C)   (exp(...) = puissance de e
    
    
    Le calcul de Mu
    Le meilleur  6  A=0.416 B=0.261 C=6.14  (emq=6.77)
    formule :  Z = exp(A * X) * Y ^ B * exp(C)   (exp(...) = puissance de e

  13. #12
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Je me suis planté, j'ai calculé Dzeta et Mu en fonction de X et Y, alors que c'est le contraire qu'on cherche, pardon, je recommence.

  14. #13
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Ca ce sont les formules pout évaluer X et y en fonction de dzéta et µ.
    Code:
     Liste X = f(Dzeta,Mu)
    Le meilleur  1  A=0.00154 B=0.00112 C=-1.47  (emq=0.05)
    formule :  Z = A * X + B * Y + C
    
      Liste Y = f(Dzeta,Mu)
    Le meilleur  4  A=-0.00190 B=0.00151 C=0.0938  (emq=0.10)
    formule :  Z = exp(A * X + B * Y + C)   (exp(...) = puissance de e
    donc, pour calculer X :
    X = 0.00154 * Dzeta + 0.00112 * µ - 1.47
    et pour Y
    Y = exp(-0.00190 * Dseta + 0.00151 * µ + 0.0938)

    Voila

  15. #14
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonsoir,

    merci pour ces réponses

    On est encore bien loin du compte, regardez ci-dessous :

    ça c'est les valeurs que j'ai envoyées

    DzetaMu.png

    et ça les valeurs recalculées à partir de vos formules

    beta DzetaMu.png


    Les valeurs DzetaMu que j'ai envoyées représentent des écarts perceptuellement uniformes
    de différences de couleurs dans un diagramme de chromaticité.

    Si j'utilise votre nouvelle formule, il y a deux zones qui vont poser problème :

    la zone du bas hyper-compressée, qui s'expand sur la droite
    la zone à gauche où les distances se "dilatent"


    Il n'y a vraiment pas moyen d'inverser les formules, ou d'ajouter des contraintes?
    Peut-être qu'il serait possible d'utiliser différentes formules en fonction de l'endroit où
    l'on se trouve sur le diagramme?


    Ce qui est assez amusant, c'est que le résultat de vos formules est très proche d'une solution
    de ce problème qui date de 1976 : l'espace CIELAB, voir ci-dessous

    CIELAB.png

    ci dessous ce sont les valeurs que j'ai transmises dans le CIELAB (1976)


    Je me demandais s'il n'y avait pas moyen de faire mieux sous MATLAB, en créant des matrices de conversion?
    Mais je ne sais pas le faire....


    Bien à vous
    // Merci ! ++ adrienlucca.wordpress.com

  16. #15
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bon, comme je n'ai aucune idée du problème dont il s'agit, je vais faire 2 graphiques. En effet, il y a 2 formules Les formules qui calculent dzeta et mu en fonction de x et y.
    Donc, on peut isoler les 2 formules, et pour chacune dessiner un graphique à 3 dimensions.
    Ceci me permettra de voir si les fonctions sont continument monotones, ce qui est indispensable et ce que je n'ai pas vérifié.
    La forme de votre graphique ne veut pas dire grand-chose, puisque les accroissements de dzeta et mu sont constants, donc vous avez forcément un quadrillage régulier.
    Dans cotre message, vous employez le terme "écart", les valeurs correspondraient-elle à des "corrections".
    Concernant Matlab, qu'importe le logiciel utilisé, c'est l'algorithme qui est important.

    Il est vrai que on a fait l'hypothèse qu'on pouvait calculer x et y à partir de dzeta et mu, indépendamment.
    Est-ce que par hasard, ce ne serait pas plutôt x=f(y, Z, µ) et y= g(x, Z, µ)
    Je vais regarder cela.

  17. #16
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonsoir,

    quand j'ai dit "écart", je me référais aux points que j'ai choisi pour faire ma grille dans le dzeta mu.
    C'est parce que ces points sont à des distances égales dans un diagramme colorimétrique qui est
    sensé représenter très bien les différences de couleurs perçues par un observateur humain que j'ai
    parlé d' "écarts" - dans le sens où dans ce diagramme, des distances égales entre des coordonnées
    de couleurs différentes sont sensées correspondre à des différences de sensation égales.

    Si j'ai employé le mot "correction", c'est sans doute en me référant au dzeta-mu comme à une
    "correction" du diagramme de chromaticité xy, qui date de 1931
    (Cf.relativement bien expliqué ici : http://en.wikipedia.org/wiki/CIE_1931_color_space )


    C'est un vieux problème de colorimétrie : dans le diagramme xy de 1931, on peut facilement calculer
    la coordonnée d'une couleur réelle en mesurant son spectre de reflectance et en faisant un peu d'algèbre
    linéaire. A l'aide de 3 fonctions colorimétriques multipliées par le spectre de reflectance d'un matériau et
    par l'illuminant que l'on aura choisi, on obtient des quantités de trois "couleurs primaires" imaginaires,
    les vecteurs X Y et Z qui nous donnent une information sur la couleur du matériau mesuré.
    Toute la luminance de la couleur est "portée" par la primaire Y, par conséquent, X et Z suffisent à caractériser
    la "chromaticité" d'une couleur.

    D'où l'idée de créer un diagramme de chromaticité, qui réduit les coordonnées chromatiques d'une couleur
    à deux : x et y, qui se calculent comme suit :

    744849490ceac23308039a41761b8e13.png
    5b0e763c657d9db8a8e05c7852127475.png


    S'il y a des limites dans ce diagramme (et que je vous ai par conséquent envoyé une liste de données relativement limitée)
    c'est parce que le nombre de couleurs possibles est limité : les limites sont les couleurs les plus saturées (les plus "pures")
    qui existent, à savoir les "couleurs spectrales" et les "pourpres" qui sont des mélanges additifs de violet et rouge spectral.


    Le diagramme Dzeta-Mu est la tentative à ma connaissance la plus aboutie pour représenter l'ensemble des chromaticités
    des couleurs visibles ("le gamut humain") dans un espace à 2 dimensions. Sa complexité reflète la forte non-linéarité du système
    visuel humain : d'infimes variations de Bleu-Violets sont perceptibles tandis que de relativement grandes variations dans les verts
    sont imperceptibles, et ainsi de suite pour les autres couleurs.


    Si je m'intéresse à ce Dzeta-Mu, c'est qu'il me semble beaucoup plus fiable que les solutions qui furent choisies par la CIE
    (la comission Internationale de l'Eclairage). Dans les années 80 le Dzeta-Mu fut reconnu pour sa justesse, mais abandonné en
    raison de sa complexité. Or aujourd'hui on possède des machines de calcul très puissantes, qui nous permettraient peut-être
    - c'est l'espoir que j'avais en venant déposer les formules ici - de l'utiliser.


    Voilà, j'espère que vous comprenez mieux maintenant le problème dont il s'agit.

    Merci encore,
    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  18. #17
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,
    Là je crois que j'ai compris le but de l'opération.
    J'ai fait un autre test de délimitation de domaine, mais ça ne change rien.
    Donc si j'ai bien compris, la formule Dzeta-Mu est considérée comme bonne, le but étant de pouvoir l'utiliser dans tous les sens.
    Voila une solution possible.
    1- on calcule une valeur approchée de x et de y, en fonction de Dzeta et Mu
    2- par une méthode d'itération, on calcule la valeur définitive de x et de y.
    Autrement dit, on n'aura pas deux formule x= ... et y= ... mais deux une fonctions x=DzetaMu_X(Dseta, Mu) et y=DzetaMu_X(Dseta, Mu).
    Etant donné que le fonction n'est pas toujours monotone, c'est pas encore sûr que ça marche, mais j'ai de quoi le tester avec votre millier de valeurs.
    Je vous tiens au courant.

  19. #18
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Merci,

    s'il faut plus de valeurs, je peux doubler la densité de la grille ou même encore augmenter davantage le maillage.

    Bien à vous
    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  20. #19
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Vous avez écrit : "Donc si j'ai bien compris, la formule Dzeta-Mu est considérée comme bonne, le but étant de pouvoir l'utiliser dans tous les sens."

    Exactement!
    A
    // Merci ! ++ adrienlucca.wordpress.com

  21. #20
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Etant donné ce que représentent ces fonctions, il est tout à fait normal de ne pas pouvoir trouver une formule avec l'hypothèse de monotonie.
    Voila où j'en suis de mes réflexions. la grille que vous avez faite peut représenter un maillage de base, avec lequel on peut calculer très facilement (ie rapidement) une valeur approchée, très valable pour le x, moins bonne pour y.
    Cette valeur approchée sera calculée par interpolation bilinéaire. Le principe est simple, on a un quadrilatère (en l'occurrence un rectangle) dont les 4 sommets ont une valeur connue et parfaitement précise. On interpole la valeur à attribuer au point dont on connait la position à l'intérieur du quadrilatère.
    A partir de ce point, presque bon, on trouve sa valeur définitive par itération. On s'arrête à la précision demandée 10^-4 ou 10^-5.
    Je suis sûr que vous aurez le résultat demain, mais il faudra fixer le moyen de l'utiliser, ce n'est qu'un détail.
    Cordialement
    A demain.

  22. #21
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonsoir,
    Je suis bien content, je me suis bien amusé, c'est au point.
    Là, avec l'interpolation bilinéaire, j'ai un précision de 10^-3 sur le contrôle de Dzeta et Mu, avec une seule itération, j'arrive à 10^-5.
    Reste à fixer la tolérance, et savoir comment l'utiliser.
    Pour l'instant, c'est un programme en C/C++. Donc je peux très bien faire un binaire avec toute sorte de choix d'utilisation, si vous voulez le traiter avec votre langage préféré, ce sera pas difficile à transposer.
    A demain.

  23. #22
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    je dois creer une petite base de donnees pour decider de la tolerance, mais deja merci beaucoup!!
    J'attends avec impatience les resultats, en fait j'avais pense a la meme solution (interpolation) cet apres midi.
    Je reviens vers vous ce week-end ou lundi!
    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  24. #23
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Bonsoir,

    d'après mes tests une précision de 10^3 est exactement suffisante! Donc je crois qu'on peut en rester là, 10^-5 ne changera pas grande chose!

    Par contre, pensez-vous que ce soit une bonne idée que je vous transfère un "maillage" plus serré pour être certain que l'interpolation ne "fout pas en l'air"
    les valeurs intermédiaires??

    C'est génial que vous ayez fait ça, merci beaucoup. Plus je cherche et plus je pense que ces formules sont bien plus intéressantes que les formules
    et espaces de couleur habituellement utilisés...

    Pour le soft, est-ce possible de vous demander un .exe en ligne de commande dans lequel je peux mettre en "input" un .csv avec une liste de valeurs xy? Ce serait génial.

    Adrien
    // Merci ! ++ adrienlucca.wordpress.com

  25. #24
    Dlzlogic

    Re : Problème avec des équations non-linéaires compliquées

    Bonjour,
    Je pense que le maillage actuel suffit largement.
    Je vais même me payer le luxe de faire une simulation pour connaitre les probabilités d'obtenir une certaine précision.Pour le .exe, je peux même faire un joli petit truc avec fenêtre de choix de fichier, visualisation du résultat et tout ce qu'il faut pour faire joli.

  26. #25
    adrienlucca

    Re : Problème avec des équations non-linéaires compliquées

    Génial!

    La seule contrainte est que ça puisse aller dans les deux sens, de xy à dm et vice-versa.

    Merci encore!

    A
    // Merci ! ++ adrienlucca.wordpress.com

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/03/2012, 15h46
  2. 2 équations différentielles non linéaires avec y'²
    Par invite861c5357 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 06/01/2012, 10h41
  3. Résolution numérique des équations non linéaires
    Par invite298957c6 dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 20/05/2011, 14h58
  4. Problème - équations avec des dérivées
    Par invite709cbda2 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 22/05/2009, 18h06
  5. [1ère S] équations compliquées
    Par inviteb778dcc1 dans le forum Mathématiques du collège et du lycée
    Réponses: 17
    Dernier message: 03/09/2008, 18h50