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

solve-Funktion,

 

farzad73
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 17.11.07
Wohnort: ---
Version: 7.0
     Beitrag Verfasst am: 28.11.2007, 20:21     Titel: solve-Funktion,
  Antworten mit Zitat      
Hallo zusammen,

Es gibt in Matlab eine Funktion mit Name solve, mit der kann man die Schnittpunkte 2 Gleichungen finden.
Als Beispiel:

Code:

s = solve('-x + 4*y = 0' , '3*x + 4*y = -9');
 


Das Ergebnis sieht so aus :
s.x = -9/4
s.y = -9/16

Bis hier ist alles ok.
Das Problem taucht dann auf, wenn man variable Koeffizienten hat!
Als Beispiel:

Code:

sum0 = [ 0, -9, 8, -9, -24];
sum1 = [-1 , 3, 3, 3, -2];
sum2 = [4, 2, -3, 2, -3];
for i = 1 : 5
    for j = 1 : 5
        s(i,j) = solve('sum1(i)*x + sum2(i)*y = sum0(i) ',' sum1(j)*x + sum2(j)*y = sum0(j)');
    end
end

 


Aber das funktioniert nicht, weil sum1(i),... als Symbol betrachtet werden!

mit eval klappt es auch nicht!

Hat vll. jemand eine Idee?

Danke Viel mals,

Grüße
Farzad
Private Nachricht senden Benutzer-Profile anzeigen


Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 28.11.2007, 20:54     Titel:
  Antworten mit Zitat      
In dem Fall muss Du solve einen String übergeben.Elegant geht es mit sprintf, aber auf die schnelle auch mit num2str:


Code:

solve_string = [num2str(sum1(i)) ' *x + ' num2str(sum2(i)) ' *y = ' num2str(sum0(i))] , [ num2str(sum1(j)) '*x + ' num2str(sum2(j)) '*y = ' num2str(sum0(j))]);

s(i,j) = solve(solve_string)
 

_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
farzad73
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 17.11.07
Wohnort: ---
Version: 7.0
     Beitrag Verfasst am: 28.11.2007, 21:47     Titel:
  Antworten mit Zitat      
Hallo Michaela,

Ich danke dir für deine Antwort,

Deine Lösung sieht in ordnung aus aber sie hat leider ein kleines Problem!

In s(i,j) = solve(solve_string) , solve_string muss in zwei Apostrophe' '

sein! sonst kriegt man Fehlermeldung. Und ich weiß nicht wie man das macht!

mittlerweile habe ich andere Lösung gefunden:
Code:

s = solve('a1*x + b1*y+c1' , 'a2*x + b2*y + c2')
 

Das Ergebnis sieht so aus:
s.x = -(-b1*c2+c1*b2)/(a1*b2-a2*b1)
s.y = 1/(a1*b2-a2*b1)*(-a1*c2+a2*c1)

nun geben wir die Koeffizienten ein ! Bedeutet : Wir lösen die Gleichungen erst in allgemeiner Form und dann machen wir die Koeffizienten bekannt!
z.B.:
a1 = -1, b1 = 4, c1 = 0 , a2 = 3, b2 = 4, c2 = -9

Am Ende , um das Ergebnis richtig kriegen zu können, mussen wir den Befehl eval benutzen! weil s.x , s.y symbolische Parameter sind!

eval(s.x) = 2.2500
eval(s.y) = 0.5625

Ich mache jetzt so weiter, wenn ich Frage habe melde mich ,

Danke nochmals

Grüße

Farzad
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 28.11.2007, 22:44     Titel:
  Antworten mit Zitat      
gut, dass Du eine Lösung gefunden hast. Ist natürlich eleganter, die Gleichung nur einmal zu lösen.

Es gibt auch irgendeine Möglichkeit einen Doppelstring zu maskieren...hab aber grad keine Zeit zum nachschauen..
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.