WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

nichtlineare Gleichungen loesen (Winkel updaten)

 

AJM
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 17:33     Titel: nichtlineare Gleichungen loesen (Winkel updaten)
  Antworten mit Zitat      
Hi,

ich habe ein Programm, dass mir den Winkel alpha mittels Integration berechnet.

Nun möchte ich aus Ausgabegründen auch noch die Winkel beta und gamma haben die folgendermassen berechnet werden können:

\cos(\alpha)l_{1}+\cos(\beta)l_{2}-\cos(\gamma)l_{3}-l_{0}=0

\sin(\alpha)l_{1}+\sin(\beta)l_{2}-\sin(\gamma)l_{3}=0

Was ist eine gute Möglichkeit damit mir matlab auch noch die Winkel gamma und beta in Abhängigkeit von alpha ausrechnet?
Leider kann ich ja die beiden Gleichungssysteme nicht so auflösen, dass dort steht beta = und gamma =
Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 19.07.2012, 19:06     Titel:
  Antworten mit Zitat      
Hallo,

addiere einmal I und II, ein weiteres Mal I und -II. Damit erhältst du zwei unabhängige Gleichungen. Danach wende eine Additionstheorem an: http://www.wolframalpha.com/input/?i=cos%28x%29%2Bsin%28x%29

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 19:24     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Hallo,

addiere einmal I und II, ein weiteres Mal I und -II. Damit erhältst du zwei unabhängige Gleichungen. Danach wende eine Additionstheorem an: http://www.wolframalpha.com/input/?i=cos%28x%29%2Bsin%28x%29

Grüße, Marc


Hi Marc,

ich kann dir noch nicht ganz folgen, wenn ich beide Gleichungen addiere/subtrahiere habe ich immer cos+sin bzw cos-sin was ich dann umschreiben kann in sqrt(2) sin(π/4+x) inwiefern hilft mir das weiter? bzw warum habe ich nach dem addieren/subtrahieren unabhängige Gleichungen?

lg und danke
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 19.07.2012, 20:00     Titel:
  Antworten mit Zitat      
Das ganze hat den Sinn, dass du 2 verschiedene Ausdrücke hast. Irgendwas mit sin(beta) und was mit sin(gamma). Das führt dazu, dass du das System wie ein lineare System behandeln kannst.

Die Ausgangsgleichung hat vier verschiedene Ausdrücke: sin(beta), cos(beta) und sin(gamma), cos(gamma).
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2012, 21:19     Titel:
  Antworten mit Zitat      
Tut mir leid aber komplett dahintergestiegen bin ich noch immer nicht.
Nach der Umformung kommt man auf:


<br />
\sin(\beta+ \frac{\pi}{4}) l_{2}-\sin(\gamma +  \frac{\pi}{4})l_{3}+e = 0 \\ \\
<br />
\sin(-\beta + \frac{\pi}{4}) l_{2}-\sin(-\gamma +  \frac{\pi}{4})l_{3}+f = 0
<br />


wobei e und f den alpha und l0 Ausdruck enthalten, da dieser ja durch Integration gewonnen werden kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.07.2012, 09:56     Titel:
  Antworten mit Zitat      
Puh, das ist wohl nicht sehr elegant zu lösen.

[url] http://www.wolframalpha.com/input/?.....%2C+x%2Cy%29&dataset= [/url]

Ich bekomme das nicht hin mit der URL. Bitte einfach den ganzen String kopieren und in der Navigationsleiste eingeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2012, 11:06     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Puh, das ist wohl nicht sehr elegant zu lösen.

[url] http://www.wolframalpha.com/input/?.....%2C+x%2Cy%29&dataset= [/url]

Ich bekomme das nicht hin mit der URL. Bitte einfach den ganzen String kopieren und in der Navigationsleiste eingeben.


sehe ich auch so, deswegen wäre meine Überlegung auch, das ganze numerisch zu lösen, sprich einmal eine implizite Funktion nur von gamma abhängig diese mit fzero lösen und dann in die 2. Gleichung die explizit in der Form beta = steht einsetzen....

Was halst du davon? Das Problem sind wohl numerische Fehler, die Frage ist nur wie viel Rechenaufwand mich die analytische Lösung kostet?!
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.07.2012, 12:14     Titel:
  Antworten mit Zitat      
Das Problem sind nicht die Rechenfehler. Diese sind immer unter eine Schranke drückbar. Das Problem ist die Tatsache, dass es unendlich viele Lösungen gibt. Die Frage ist also, welche Lösung oder welche Lösungen man nehmen muss. Es muss dafür eine Umgebung definiert werden, die es ermöglicht eine Teilmenge des Lösungsraumes zu identifizieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2012, 12:23     Titel:
  Antworten mit Zitat      
MaFam hat Folgendes geschrieben:
Das Problem sind nicht die Rechenfehler. Diese sind immer unter eine Schranke drückbar. Das Problem ist die Tatsache, dass es unendlich viele Lösungen gibt. Die Frage ist also, welche Lösung oder welche Lösungen man nehmen muss. Es muss dafür eine Umgebung definiert werden, die es ermöglicht eine Teilmenge des Lösungsraumes zu identifizieren.


Hi koenntest du das noch etwas genauer spezifizieren?

Das ist das Modell das ich simulieren möchte. alpha, sprich den Antriebswinkel berechnet mir matlab über das lösen einer Gleichung und daraus kann man über die Gleichungen ja auch beta und gamma berechnen.
Es kann ja nicht unendlich viele Lösungen geben, da es zu jedem alpha nur genau eine Stellung gibt die das System einnehmen kann.

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.07.2012, 13:10     Titel:
  Antworten mit Zitat      
Gut, dann lass uns doch mal die numerische Kanone abfeuern. Hast du konkrete Werte für die l_i?
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2012, 13:20     Titel:
  Antworten mit Zitat      
die werte werden vorher definiert:

aber du kannst einsetzen was du willst solange grundlegende Bedingungen erfüllt sind. Ich schlag mal werte vor:

% Damit Kurbelschwinge sich drehen kann muss gelten:
% l1 +2(l2-l0) = l3
varalpha = 0;
dvaralpha = 0;
g = 9.81;
m1 = 15;
m2 = 21;
m3 = 2;
l1 = 3;
l2 = 7;
l3 = 5;
l0 = 6;
duration = 30;
fps = 60;
Mtorq = 0;
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 20.07.2012, 14:25     Titel:
  Antworten mit Zitat      
Ich habe mal was probiert, allerdings mit Octave. Das funktioniert leider nicht. Vielleicht aber unter Matlab. Du kannst es ja mal versuchen.

Code:

function f=nleq(x)
   varalpha = 0;
   
   l1 = 3;
   l2 = 7;
   l3 = 5;
   l0 = 6;
   
   f(1)=cos(varalpha)*l1+cos(x(1))*l2-cos(x(2))*l3-l0;
   f(2)=sin(varalpha)*l1+sin(x(1))*l2-sin(x(2))*l3;
end


Dann das ganze aufrufen und mit fsolve lösen:

Code:

x0=[1,1];
[varbeta,vargamma]=fsolve(nleq,x0);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 21.07.2012, 09:59     Titel:
  Antworten mit Zitat      
Guten Morgen,

Code:

x0=[1,1];
values=fsolve(@nleq,x0);
 


So klappt es schon mal. Ich poste heute noch eine analytische Lösungsvariante.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2012, 19:43     Titel:
  Antworten mit Zitat      
Hi,

ich habe es mit fsolve schon gelöst.

Code:

x0 = [0.6; pi/3];        
[x,fval] = fsolve(@gammabeta,x0)  
 


Code:

function angels = gammabeta(x)
angels = zeros(2,1);
   varalpha = 0;
   
   l1 = 3;
   l2 = 7;
   l3 = 5;
   l0 = 6;
   
   angels(1)=cos(varalpha)*l1+cos(x(1))*l2-cos(x(2))*l3-l0;
   angels(2)=sin(varalpha)*l1+sin(x(1))*l2-sin(x(2))*l3;
 


Leider hast du recht und die Lösung ist nicht eindeutig. Mit den richtigen Anfangswerten (siehe code oben) kommt man auf die richtige Lösung für das System. Es sollte aber auch möglich sein, das ganze Anfangswertunabhaengig aufzubauen, aber da werde ich mich mal genau nächste Woche einlesen müssen. Vielen Dank dir auf jedenfall!
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 26.07.2012, 17:01     Titel: Re: nichtlineare Gleichungen loesen (Winkel updaten)
  Antworten mit Zitat      
Hallo!

Ein wenig verspätet, aber hier die analytische Lösung zu:

\cos(\alpha)l_{1}+\cos(\beta)l_{2}-\cos(\gamma)l_{3}-l_{0}=0

 \sin(\alpha)l_{1}+ sin(\beta)l_{2} - \sin(\gamma)l_{3}=0

Es gelten für \phi die beiden Bedingungen.
\cos(\phi)=\frac{a_1}{\sqrt{a_1^2+a_2^2}}
\sin(\phi)=\frac{a_2}{\sqrt{a_1^2+a_2^2}} ,

so dass der 2-pi-periodige Winkel \phi eindeutig bestimmt ist.
Weiterhin sei \cos(y-\phi)=A mit A=\frac{l_2^2-l_3^2-a_1^2-a_2^2}{2l_3*\sqrt{a_1^2+a_2^2}}. Dieses y kann man in eine der Ausgangsgleichungen einsetzen.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.