Verfasst am: 09.05.2014, 18:14
Titel: Gleichung mit 6 Variablen lösen (Intervalle für Lösungsra
Hallo,
ich möchte eine Gleichung in matlab lösen und mir als Ergebnis den möglichen Lösungsraum/Lösungsintervall (es gibt ja viele unterschiedliche Kombinationen diese Gleichung zu lösen) für alle Variablen ausgeben lassen.
Wie würde das z.B. bei folgender Gleichung gehen?
60=(a*b)/(c+d+e+f)
Ich wäre wirklich super dankbar, wenn mir jmd. helfen kann!!!
Christian
Hey,
vielen Dank für deine schnelle Antwort. Ist echt stark!!!
Mit fsolve kann ich jedoch nur eine symbolische Umstellung der Gleichung vornehmen. Ich suche eher nach einer graphischen Darstellung der Lösungsmöglichkeiten.
Ich versuche es nochmal mit einem anderen Bsp. Wenn man sich die Gleichung
60=a+b
anschaut, dann gibt es dafür auch unendlich viele Lösungen. Man kann diese Lösungen aber durch eine Funktion mit bspw. a auf der Y-Achse und b auf der X-Achse graphisch darstellen. Das würde mir als Ergebnis sehr gut helfen.
Für die Gleichung 60=(a*b)/(c+d+e+f) kommen jedoch einige Dimensionen mehr hinzu. Nun die Frage, ob man sich dafür trotzdem eine Funktion plotten lassen kann?
Vielen Dank nochmal für eine kurze Hilfe.
Beste Grüße
Für die Gleichung 60=(a*b)/(c+d+e+f) kommen jedoch einige Dimensionen mehr hinzu. Nun die Frage, ob man sich dafür trotzdem eine Funktion plotten lassen kann?
Meines Wissens nicht. Ich habe jedenfalls noch nie einen 6D-Plot gesehen.
es ist schwer für mich, dir da einen Rat zu geben.
Je nach Anwendung kann es sinnvoll sein, beispielsweise a*b und c+d+e als eine Größe aufzufassen.
Letztlich musst du dir überlegen, was du haben möchtest, und sofern es machbar ist (was ich bei einem 6D-Plot bezweifle), können wir dir bei der Umsetzung helfen.
Ich habe mir nochmal Gedanken gemacht. Für meine Anwendung, wäre auch ein 3D-Plott ausreichend.
1) Wie könnte ich einen 3D-Plott für folgende Gleichung erstellen:
60=a*b*c
2) Wie kann ichaußerdem einschränken, dass a die folgenden Werte nicht
annehmen darf:
a. minus Unendlich bis 5
b. 20 bis 30
Würdet mir wirklich nochmals sehr weiterhelfen.
Vielen Dank!
Hallo,
ich bin unglaublich positiv überrascht für die schnelle Hilfe. Tausend Dank!!! Eine letzte Frage hätte ich aber noch. Was bedeuten die die einzelnen Code-Zeilen im Detail? Ich bin leider ein absoluter Matlab Neueinsteiger.
a = [5:0.1:100];
--> Hier wird defniniert, dass a nur Werte zwischen 5 und 100 annehmen darf, richtig?
--> Was bedeutet die 0.1?
idx = a > 20 & a < 30;
--> Könnte ich hier auch weitere Einschränkungen für b hinzufügen und diese einfach mit & nacheinander auflisten?
[A,B] = meshgrid(a, b);
--> Wird hier a und b zu A und B umbenannt und warum?
C = 60./(A.*B);
--> C könnte auch kleingeschrieben definiert werden, richtig?
--> Warum steht hinter 60 und A ein Punkt?
C(:, idx) = NaN;
--> Was bedeutet ':' und warum wird es an C übergeben?
--> Warum ist es notwendig C als NaN zu definieren?
surf(a,b,C)
--> Wird hier der Plot gedruckt?
shading interp
--> Welche Bedeutung hat diese Zeile?
gerade als Neuling solltest du dir die Mühe machen, die Dokumentation der einzelnen Funktionen zu lesen. Zudem solltest du das Getting Started-Kapitel durcharbeiten, um die generelle Syntax von MATLAB zu verstehen.
--> Was bedeutet ':' und warum wird es an C übergeben?
--> Warum ist es notwendig C als NaN zu definieren?
Das ist logische Indizierung (logical indexing). Die C-Werte, die zu nicht erlaubten A-Werten gehören, werden nachträglich auf NaN (not a number, ungültiger Wert) gesetzt.
erst mal nochmals vielen Dank für die vergangene Hilfe, die mich schon ein großes Stück voran gebracht hat. Ich bräuchte nun aber nochmal eure Hilfe. Neben der ersten Gleichung ' 60=a*b*c ' soll nun auch ein zweite Gleichung ' 80 = a+b+c ' gelten.
1) Wie kann ich in Matlab nun beide Gleichungen an den Plott übergeben?
2) Wie könnte ich anstatt der 60 das Intervall 60 bis 100 in die Gleichung eintragen?
Würde mich nochmal super über eine Hilfe freuen.
Besten Dank schon mal.
Hallo Harald,
vielen vielen Dank für deine Hilfe und entschuldige bitte die Verwirrung mit den Fragen!
Ich kann deine Code bis auf 2 Punkte nachvollziehen:
1) Mit b(imag(b)~=0) = NaN werden ja nur Elemente durch NAN ersetzt, die nahe Null sind. Ein beispielhaftes Element 3i würde demnach nicht ersetzt werden. Da dies weder NaN noch ein numerischer Wert ist würde mich interessieren, wie der Plot mit diesen Elementen umgeht?
2) Wieso skaliert Matlab die Achsen, trotz des Hinzufügens von XLim, YLim, ZLim, immer noch beliebig:
Code:
syms a b c
sol = solve(60==a*b*c,80==a+b+c, b, c);
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
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.