Résoudre un calcul avec Matlab
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Résoudre un calcul avec Matlab



  1. #1
    invite8c935645

    Résoudre un calcul avec Matlab


    ------

    Salut !

    Je n'ai hélas pas une énorme expérience avec Matlab (et de manière générale, avec la programmation, pourtant, j'aimerais) et j'aimerais d'ailleurs comprendre comment faire résoudre par Matlab (j'ai déjà essayé pas mal de trucs, mais il n'en sort rien du tout à part des erreurs à n'en plus finir :'( ) le calcul suivant (et pour moi, c'est important de savoir faire ça, sinon je calerais pour tout le reste aussi :'( ) :

    Soit la matrice :
    M* = [a b]
    aaaaa[c d]

    et la matrice :
    N(t) = [ cos(t) son(t)]
    aaaaaa[-sin(t) cos(t)]


    je dois calculer :
    t*= arg min ||M* - N(t)||²
    aaaaaaaat

    où bien sûr : ||M* - N(t)||² = (a-cos(t))²+(b-sin(t))²+ ...


    Ensuite, (mais comme je cale déjà avant, c'est dûr d'arriver à faire la 2e étape) je dois savoir faire une translation ).


    En fait, là, je crois que je dois d'abord déterminer càd avant de déterminer t et dans ce cas-ci même, je dirais que je peux choisir numériquement ces deux derniers (par ex, je pourrais prendre (5,8)), non ? Mais je n'en suis pas sûre.

    Comme vous le voyez, je suis nullepart et je crois pas que nullepart soit une très bonne base pour commencer

    Je m'étais dit que tant que j'avais pas fini ça, j'irai pas me coucher, mais là, je préfère demander votre aide car sinon je serais pas prête de dormir de si tôt

    Si quelqu'un pouvait m'aider, ce serait génial, je serai très reconnaissante

    Merci à toute aide apportée

    -----

  2. #2
    inviteb9f49292

    Re : Résoudre un calcul avec Matlab

    MATLAB c'est du numérique (principalement) donc je suppose que tu ne travailles pas en symbolique.
    La matrice conjuguée c'est "conj", et la norme c'est abs, ton min je ne comprends par sur quoi tu le prends mais en écriture MATLAB ta formule à l'intérieur du min s'écrit:
    Code:
    abs(conj(M) - N(t)) .* abs(conj(M) - N(t))

  3. #3
    invite8c935645

    Re : Résoudre un calcul avec Matlab

    Merci beaucoup !!! (Et désolée pour le retard, le mail était étrangement parti dans "courrier indésirable", alors que d'habitude,je n'ai pas de problème pour recevoir les mails de Futura ...).

    En tout cas, je vais essayer ta proposition (y a des trucs que je notais bien et d'autres pas ... ).

    Néanmoins, ce qui m'ennuie, c'est que je suis toujours obligée de "dire" à Matlab que a,b,c et d sont égals à 1 (ou bien à un autre réel) mais normalement, moi je voudrais juste que Matlab accepte que a,b,c et d R et pas un réel en particulier. Vous sauriez comment faire pour que Matlab accepte ?

    Que ça fonctionne ou pas, j'aurais appris des trucs, merci !

  4. #4
    inviteb9f49292

    Re : Résoudre un calcul avec Matlab

    Néanmoins, ce qui m'ennuie, c'est que je suis toujours obligée de "dire" à Matlab que a,b,c et d sont égals à 1 (ou bien à un autre réel) mais normalement, moi je voudrais juste que Matlab accepte que a,b,c
    Si je comprends bien ce que tu ne comprends pas bien, c'est ce que j'ai essayé de t'expliquer dans ma précédente réponse: MATLAB fait du calcul numérique (sur des valeurs), il ne fait pas du calcul symbolique (utiliser le symbole x pour n'importe quelle valeur réelle et "simplifier la formule" en fonction de x).
    Pour faire du calcul symbolique avec MATLAB il te faut la toolbox qui va bien. Si tu ne l'a pas et que tu ne veux pas dépenser 5000 ou 10000$ pour l'acheter (espèce de rapia!), tu peux:
    - utiliser le clône gratos de MATLAB qui s'appelle OCTAVE et installer sa toolbox symbolique (OCTAVE est compatible à 99.9% avec MATLAB, mais je ne sais pas si ça se transpose aussi bien pour le symbolique)
    - utiliser un logiciel qui fait du symbolique de base, MATHEMATICA est probablement le plus répandu, mais je pense un peu cher, sinon tu as MAXIMA de gratuit, et probablement d'autres...

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

    Re : Résoudre un calcul avec Matlab

    Citation Envoyé par lou_ibmix_xi Voir le message
    Si je comprends bien ce que tu ne comprends pas bien, c'est ce que j'ai essayé de t'expliquer dans ma précédente réponse: MATLAB fait du calcul numérique (sur des valeurs), il ne fait pas du calcul symbolique (utiliser le symbole x pour n'importe quelle valeur réelle et "simplifier la formule" en fonction de x).
    Pour faire du calcul symbolique avec MATLAB il te faut la toolbox qui va bien. Si tu ne l'a pas et que tu ne veux pas dépenser 5000 ou 10000$ pour l'acheter (espèce de rapia!), tu peux:
    - utiliser le clône gratos de MATLAB qui s'appelle OCTAVE et installer sa toolbox symbolique (OCTAVE est compatible à 99.9% avec MATLAB, mais je ne sais pas si ça se transpose aussi bien pour le symbolique)
    - utiliser un logiciel qui fait du symbolique de base, MATHEMATICA est probablement le plus répandu, mais je pense un peu cher, sinon tu as MAXIMA de gratuit, et probablement d'autres...
    Encore merci !! Je vais suivre tes conseils et télécharger OCTAVE (Matlab m'avait déjà coûté plus de 100€ ... Alors c'est vraiment cool que tu me proposes OCTAVE qui est gratuit ).

    Le prof nous demande au cours d'utiliser MATLAB, du coup, je me disais que Matlab devait savoir faire du calcul symbolique ... J'ai la "Student Version" de Matlab (je sais pas si ça compte ^^').

    Mais si j'écris ce que tu as écrit avant (càd : abs(conj(M) - N(t)) .* abs(conj(M) - N(t)) ) dans l' "Editor" de Matlab et que j'essaie de definir (toujours dans une fenêtre de "Editor") les matrices, tu crois que c'est possible que Matlab "veuille" bien alors faire du calcul symbolique ?
    Je veux dire si je ne reste pas uniquement dans "command window" mais que j'écris tout dans "Editor" ?
    Et seulement après, je demanderai alors à "command window" de calculer theta* ?

  7. #6
    invite8c935645

    Re : Résoudre un calcul avec Matlab

    Pour essayer d'avancer avec Matlab, j'ai essayé ceci (j'ai essayé de télécharger OCTAVE, mais c'est difficile sous Windows, je réessaierai demain car j'ai des prob avec) :

    dans Editor, j'ai écrit :

    Code:
    % Definition of the matrix M* où a,b,c & d are real numbers%
    for a = -10000:+0,01:10000 and b = -10000:+0,01:10000 and c = -10000:+0,01:10000 and d = -10000:+0,01:10000
        M* = [a b ;c d]
    
    % Definition of the matrix N in function of t (t in degrees, so a "d" is
    % added to the sin & cos %
        for t = 0:+1:360
        N[t] = fonc [t]
        [N[t]]= = [ cosd(t) sind(t) ;-sind(t) cosd(t)]
          % Calculate  t*= arg min ||M* - N(t)||² % 
        t* = abs(conj(M) - N(t)) .* abs(conj(M) - N(t))
        end
    end
    Et Matlab me répond poliment ceci :'( en gros : "Unexpected MATLAB expression. "

    Je sais bien par exemple que pour le minimum (que je n'ai pas écrit car je ne sais pas comment et comme j'ai déjà plein d'erreurs sans mettre le min, je n'ai plus trop osé me mouiller ...), je devrais spécifier que parmi tous les t, un certain t donne le minimum de abs(conj(M) - N(t)) et c'est donc la valeur de abs(conj(M) - N(t)) que l'on trouve pour ce certain t.


    Pour expliquer un peu plus ma situation, on nous a donné des données : un datainput.m + un code. Le tout nous donne un exemple d'image. Et apparemment, on voudrait via le petit code que j'essaie de faire, de montrer qu'on peut faire des rotations et des translations de cette image. Enfin, c'est ce que j'ai compris.
    Et je me demande pourquoi le prof nous conseillait de d'abord déterminer car je vois pas ce que c'est ?
    Ah et j'oubliais, ce que j'essaie de faire, c'est d'utiliser une "méthode des Landmarks".

    Vous pourriez encore m'aider pour mes erreurs ? Je pourrais finir par avoir un bon déclic et mieux comprendre à la suite d'autres de vos conseils
    Car pour l'instant, j'en peux plus de caler là-dessus ... C'est décourageant de ne voir aucun progrès dans ce que j'essaie de faire. Matlab n'est pas très encourageant ...
    Dernière modification par JPL ; 20/11/2016 à 13h58. Motif: Ajout de la balise Code (#) pour garder l'indentation

  8. #7
    invite8c935645

    Re : Résoudre un calcul avec Matlab

    Juste pour dire que j'ai essayé la chose suivante pour le minimum (mais hélas ça ne règle pas du tout les problèmes que je rencontre dans le message précédent :'( ):


    Code:
    % Definition of the matrix M* où a,b,c & d are real numbers%
    
    for a = -10000:+0,01:10000 and b = -10000:+0,01:10000 and c = -10000:+0,01:10000 and d = -10000:+0,01:10000
        M* = [a b ;c d]
    
    % Definition of the matrix N in function of t (t in degrees, so a "d" is
    % added to the sin & cos %
    
        for t = 0:+1:360
        N[t] = fonc [t]
        [N[t]]= = [ cosd(t) sind(t) ;-sind(t) cosd(t)]
    
          % Calculate  t*= arg min ||M* - N(t)||² and since we need only the
          % minimum value and not its index, we call the min function twice.%
    
        t* = min(min((abs(conj(M) - N(t)) .* abs(conj(M) - N(t)))
        end
    end
    Dernière modification par JPL ; 20/11/2016 à 13h59. Motif: Ajout de la balise Code (#)

Discussions similaires

  1. Résoudre une équation dans un intervalle avec MATLAB 2013
    Par invitec71236ee dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 16/08/2013, 16h33
  2. Résoudre une équation différentiel avec Matlab
    Par invited1c96ae7 dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 23/04/2010, 15h31
  3. Résoudre ce calcul avec les identités remarquable (niveau 2nd)
    Par invite68a65083 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 25/11/2009, 17h03
  4. Resoudre une équation avec Matlab
    Par invite24e18659 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 28/04/2008, 14h57
  5. Résoudre une équation avec Matlab
    Par invite24e18659 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/04/2008, 09h56