1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Matlab Ableitungen

    • Frage
  • baracuda
  • 10. Dezember 2011 um 19:27
  • Unerledigt
  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 10. Dezember 2011 um 19:27
    • #1

    Hallo,

    Im Zuge eines Projets (Gleichgewichtsstudie eines inversen Pendels) muss ich Lagransche Kooridanten berechnen. Die haben die Form:

    Qk = dF/dt ( dF / dqk') - (dF / dqk)

    Im Grunde Leite ich nach drei Variablen ab x, lh und der Winkel phi sowie nach deren ersten Ableitungen. Ich will das in matlab rechnen und habe Folgednes gemacht:

    Code
    clc;
    
    
    % Symbole für die Gleichungen definieren
    syms M g m lh lhp lf phi phip phipp Jz x xp xpp
    
    
    % lh ... Aktuelle Länge des Hubs
    % lhp ... 1 Ableitung von Aktuelle Länge des Hubs
    % lhpp ... 2 Ableitung von Aktuelle Länge des Hubs
    % lf ... Länge des Fixanteils der Höhe
    
    
    % phi ... Aktuelle Winkel PHI
    % phip ... 1 Ableitung von Aktuelle Winkel PHI
    % phipp ... 2 Ableitung von Aktuelle Winkel PHI
    
    
    % x ... Aktuelle Länge x der Auslengkung des Wagen
    % xp ... 1 Ableitung Aktuelle Länge x der Auslengkung des Wagen
    % xpp ... 2 Ableitung Aktuelle Länge x der Auslengkung des Wagen
    
    
    % Jz ... Drehmoment TODO Abhängig machen
    
    
    % Definitionen
    ls = (lh + lf) / 2;
    
    
    % Teilkörper Last
    %----------------
    
    
    % Kinetische Energie der Last
    ftl =  m/2 * ((phip*x)^2 + lhp^2);
    
    
    % Potentielle Energie der Last
    ful = m * g * ((lh + lf) * ( 1 - cos (phi)) - (x * sin (phi)));
    
    
    % Teilkörper T-Stück
    %-------------------
    
    
    % Kinetische Energie der T-Stücks
    ftt =  Jz/2 * phip^2 + m/2*(phip*(lf+lh)+xp+lhp)^2;
    
    
    % Potentielle Energie des T-Stücks
    fut = ls * M * (cos (phi) - 1);
    
    
    % Gesamtenergie
    %--------------
    
    
    tges = ftl + ftt;
    uges = ful + fut;
    
    
    Lges = tges + uges;
    
    
    
    
    diff (Lges, x)
    diff (Lges, xp)
    Alles anzeigen

    Meine Frage ist nun wie bringe ich matlab bei dass x, lh und phi auch nach der Zeit abzuleiten sind. In Mathematica (kenne mich leider nicht zu gut aus mit dem Tool) kann man nach unbekannten Funktionen ableiten.

    http://reference.wolfram.com/mathematica/tu…nFunctions.html

    Das ist es was ich im Grunde auch machen möchte in Matlab.

    Vielen Danke für jedweige Hilfe in Vorhinein.

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 11. Dezember 2011 um 00:21
    • #2

    Prinzipiell ist MATLAB eine Numerik-Geschichte, dass MATLAB ableiten kann hängt mit der Symbolic-Math-Toolbox zusammen (MuPAD)
    Ich würde für solche Aufgaben eindeutig Maple (hat auch eine MATLAB Schnittstelle, zB Modellieren in Maple rechnen in MATLAB) oder Mathematica benutzen.
    (Ich bin mehr Mathematica-Fan geworden, aber Maple hat am Anfang eine intuitiviere Bedienung)

    Im Falle dass du bei MATLAB bleiben möchtest würd ich mal das MuPAD aufmachen und mich da ein wenig durch die Hilfe lesen, ist ja die Grundlage von der Symbolic Math Geschichte.

    Zu Mathematica, ist eigentlich relativ simpel zu benutzen solange man sich an die Syntax hält :winking_face:

    Code
    sin(x) = Sin[x]
    cos(x) = Cos[x]
    diff(x, y) = D[x, y]

    Thomas

    P.S.: Du kannst mal das versuchen in Mathematica einzufügen und rumspielen

    Code
    ls = (lh[t] + lf) / 2;
    ftl =  m/2 * ((D[phi[t],t]*x[t])^2 + D[lh[t],t]^2);
    ful = m * g * ((lh[t] + lf) * ( 1 - Cos[phi[t]]) - (x[t] * Sin[phi[t]]));
    ftt =  Jz/2 * D[phi[t],t]^2 + m/2*(D[phi[t],t]*(lf+lh[t])+D[x[t],t]+D[lh[t],t])^2;
    fut = ls * M * (Cos[phi[t]] - 1);
    tges = ftl + ftt;
    uges = ful + fut;
    Lges = tges + uges

    P.P.S:
    Und da es auf der TU auch so etwas gibt:
    http://www.acin.tuwien.ac.at/fileadmin/cds/…point_klein.wmv
    http://www.acin.tuwien.ac.at/fileadmin/cds/…ng_up_klein.wmv

    Einmal editiert, zuletzt von anwesender (11. Dezember 2011 um 00:24)

  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 11. Dezember 2011 um 16:44
    • #3

    Danke für die flotte Antwort. Die Lösung mit Matlab so wie du sie gepostet hast ist schon mal eine sehr große Hilfe! Das MuPAD werde ich mir auch noch ansehen.
    Lg

    Zitat von anwesender

    Prinzipiell ist MATLAB eine Numerik-Geschichte, dass MATLAB ableiten kann hängt mit der Symbolic-Math-Toolbox zusammen (MuPAD)
    Ich würde für solche Aufgaben eindeutig Maple (hat auch eine MATLAB Schnittstelle, zB Modellieren in Maple rechnen in MATLAB) oder Mathematica benutzen.
    (Ich bin mehr Mathematica-Fan geworden, aber Maple hat am Anfang eine intuitiviere Bedienung)

    Im Falle dass du bei MATLAB bleiben möchtest würd ich mal das MuPAD aufmachen und mich da ein wenig durch die Hilfe lesen, ist ja die Grundlage von der Symbolic Math Geschichte.

    Zu Mathematica, ist eigentlich relativ simpel zu benutzen solange man sich an die Syntax hält :winking_face:

    Code
    sin(x) = Sin[x]
    cos(x) = Cos[x]
    diff(x, y) = D[x, y]

    Thomas

    P.S.: Du kannst mal das versuchen in Mathematica einzufügen und rumspielen

    Code
    ls = (lh[t] + lf) / 2;
    ftl =  m/2 * ((D[phi[t],t]*x[t])^2 + D[lh[t],t]^2);
    ful = m * g * ((lh[t] + lf) * ( 1 - Cos[phi[t]]) - (x[t] * Sin[phi[t]]));
    ftt =  Jz/2 * D[phi[t],t]^2 + m/2*(D[phi[t],t]*(lf+lh[t])+D[x[t],t]+D[lh[t],t])^2;
    fut = ls * M * (Cos[phi[t]] - 1);
    tges = ftl + ftt;
    uges = ful + fut;
    Lges = tges + uges

    P.P.S:
    Und da es auf der TU auch so etwas gibt:
    http://www.acin.tuwien.ac.at/fileadmin/cds/…point_klein.wmv
    http://www.acin.tuwien.ac.at/fileadmin/cds/…ng_up_klein.wmv

    Alles anzeigen

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 12. Dezember 2011 um 15:03
    • #4

    hehe eine Frage hätte ich noch. Mathematica spuckt mir die nötigen Lagranschen koordinaten aus. Da drinnen habe ich dann je nach Term zB. x x' und x''. ich muss eine Zustandsmatrix Erzeugen die folgendermaßen aussieht.

    |x'' |
    |phi'' | = A^-1 * B
    |lh'' |


    Ist es in Mathematic möglich den Term nach einer Speziellen Varialbe ausdrücken zu lassen und am besten auch gleich die entsprechende Koeffizienten Matrix A zu erzeugen?

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 12. Dezember 2011 um 15:24
    • #5
    Zitat von baracuda


    Ist es in Mathematic möglich den Term nach einer Speziellen Varialbe ausdrücken zu lassen und am besten auch gleich die entsprechende Koeffizienten Matrix A zu erzeugen?

    Meinst du ev. Solve[{terme}, {variablen}] ?

    Thomas

  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 16. Dezember 2011 um 23:57
    • #6

    Hi,
    Sorry für die verspätete Antwork. Nein also Lösen möchte ich die homogene Differentialgleichung nicht. Ich will ihn eigentlich nur umformen ohne die Lösung zu bekommen. Alos in meinem fall so:

    x'' = x + x' + l + l' usw.

    Lg

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 17. Dezember 2011 um 00:10
    • #7
    Zitat von baracuda

    Sorry für die verspätete Antwork. Nein also Lösen möchte ich die homogene Differentialgleichung nicht. Ich will ihn eigentlich nur umformen ohne die Lösung zu bekommen.

    DGL lösen ist DSolve[..]

    Thomas

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • matlab
  • ableitung
  • unbekannte funktion

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern