|
|
Lösung eines überbestimmten Gleichungssystems |
|
Scooba |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 09.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.09.2019, 18:10
Titel: Lösung eines überbestimmten Gleichungssystems
|
|
|
|
|
Hallo,
folgendes Problem: Ich habe für eine Konstruktion sämtliche Gleichungen, die sich aus den statischen Gleichgewichtsbedingungen ergeben, aufgestellt. Diese Gleichungen möchte ich gelöst haben, um bestimmte Kräfte zu ermitteln. Das ganze Funktioniert mit dem "solve" Befehl hervorragend, solange ich genau so viele Unbekannte wie Gleichungen habe. Nun ist es aber ja in der Statik manchmal so, dass ich nicht alle Gleichungen brauche um die Kräfte zu berechnen. Oder aber mir sind einige Kräfte bekannt, sodass sich die Anzahl der Unbekannten reduziert. Wenn ich dann weniger Unbekannte ermitteln möchte, aber weiterhin das selbe Gleichungssystem (mit allen Gleichungen) verwende, findet Matlab teilweise kein Ergebnis (abhängig davon, was die Unbekannten sind).
Ich habe mal etwas experimentiert und herausgefunden, dass Matlab eigentlich kein Problem mit überbestimmten Gleichungssystemen hat, solange die Gleichungen konsistent sind. Auch lassen sich die Unbekannten finden, wenn ich nicht das gesamte Gleichungssystem verwende, sondern mir (händisch) die relevanten Gleichungen rauspicke. Dabei habe ich gemerkt, dass für Kräfte teilweise Ergebnisse resultieren, die eine Größenordnung von 10^-18 haben, also quasi 0 sind (was korrekt wäre), hier also numerische Fehler gemacht werden. Nun kann ich mir vorstellen, dass Matlab bei meinem überbestimmten Gleichungssystem die Gleichungen nicht als konsistent ansieht, da (vermutlich aufgrund von cos/sin) numerische Fehler gemacht werden und somit unter der Verwendung von unterschiedlichen Gleichungen minininininimal unterschiedliche Ergebnisse herauskommen.
Hat jemand eine Idee, wie man das Problem lösen kann? Selbstverständlich ohne händisch die relevanten Gleichungen rauszusuchen
Viele Grüße
Scooba
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.09.2019, 18:48
Titel:
|
|
Hallo,
ist das Gleichungssystem linear oder nicht? In jedem Fall würde ich einen numerischen Ansatz versuchen, d.h. im linearen Fall den \-Operator und im nichtlinearen Fall fsolve.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Scooba |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 09.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.09.2019, 21:15
Titel:
|
|
|
|
|
Das Gleichungssystem ist nicht linear. Habe mir grade mal fsolve angeschaut, komme damit aber nicht weiter. Scheinbar muss ich damit ja im Vorhinein eine Funktion schreiben, in der die Gleichungen im Klartext stehen und die gesuchten Variablen mit x(1) ... x(n) festgelegt sind. Nun habe ich aber das Problem, dass ich nicht immer nach den gleichen Variablen suche, da mal die einen, mal die anderen vorgegeben sind.
Mal als Beispiel die Kräfte am Balken, wie im angehängten Bild. Damit ergeben sich die drei Gleichungen zu:
Nun suche ich aber nach immer verschiedenen Variablen. Mal sind alpha, a und F gegeben und ich suche M, B und A. Mal sind B und A gegeben und ich suche nach F und alpha. (Alles nur grobe Beispiele zur Verdeutlichung). Also es ist vorher nicht klar, nach was ich suche. Mit dem solve Befehl habe ich die Variablen bisher einfach als symbolische Variablen definiert und dann die bekannten Größen mittels subs substituiert. Mit fsolve scheint das jetzt aber nichtmehr so einfach zu gehen, oder kann ich die dafür benötigte Funktion dynamisch generieren?
Viele Grüße
Beschreibung: |
|
Download |
Dateiname: |
Balken.jpg |
Dateigröße: |
4.81 KB |
Heruntergeladen: |
246 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.09.2019, 22:23
Titel:
|
|
Hallo,
bei solve musst du ja auch Variablen definieren und vor allem wissen, welche Ergebnisse du erwartest und vor allem wie man sie sinnvoll weiterverarbeitet?
Für fsolve benötigt man ein Function Handle. Wenn man nach anderen Variablen auflösen will, dann halt in der Tat ein anderes Function Handle.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|