|
Roachnbua |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.02.2014, 08:39
Titel: Gleichung lösen
|
|
Hallo zusammen,
ich muss eine komplizierte Gleichung auf den Winkel Gamma auflösen und das alle fünf Grad Kurbelwinkel (Winkel(i,2)). Bekannt sind Winkel(i,2) und Winkel(i,4) und die ganzen Variablen R,L,K,S,Y. Erstens weiß ich nicht ob ich überhaupt so rechnen kann und zweitens kommt immer diese Fehlermeldung: FSOLVE requires the following inputs to be of data type double: 'X0'
syms R L K S X Y Gamma Winkel Delta
for i = [1:152]
f(i) = 'R*cos(Winkel(i,2))+ L*sin(Winkel(i,4))- K*cos(Gamma)+S*sin(acos(1/S*(X - K*sin(Gamma))))-Y'
Winkel(i,5) = fsolve(f(i),'Gamma')
end
Kann mir da jemand weiterhelfen? Danke
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.02.2014, 20:20
Titel:
|
|
Hallo,
fsolve ist für die numerische Lösung von Gleichungen, kann also nicht mit syms verwendet werden.
Wenn du Gleichungen symbolisch lösen willst, musst du solve verwenden.
Sollten die Gleichungen symbolisch nicht lösbar sein, dann bleibt immer noch der Weg einer numerischen Lösung über fsolve. Dann musst du allerdings auch Werte für S, L, K etc. vorgeben.
Ich würde so oder so einen Blick in die Doku des Befehls empfehlen, da du veraltete Syntax verwendest.
Grüße,
Harald
|
|
|
Roachnbua |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.02.2014, 09:48
Titel:
|
|
|
|
|
Hallo,
die Sache ist, dass ich die Gleichung erst auf Gamma auflösen möchte und dann diese für mehrere Winkel Phi ausrechnen möchte. Prinzipiell funktioniert das symbolische auflösen der Gleichung, nur damit kann ich aber nichts anfangen, wenn ich damit nicht weiterrechnen kann. Ich müsste also erst die Gleichung auf eine Variable lösen und dann die resultierende Funktion mit allen verbleibenden Variablen lösen.
[code]% Hier ist mein ganzer Code:
%Auswertung Winkel
clear
dateipfad = 'Kinematische Berechnung.xlsx';
sheet = 3;
xlRange1 = 'C8:C152';
xlRange2 = 'B8:B152';
xlRange3 = 'B8:B152';
xlRange4 = 'H11';
xlRange5 = 'H4';
xlRange6 = 'H5';
xlRange7 = 'H6';
xlRange8 = 'H7';
xlRange9 = 'H8';
xlRange10 = 'H9';
Winkel(:,1) = xlsread(dateipfad, sheet, xlRange1);
Winkel(:,2) = xlsread(dateipfad, sheet, xlRange2);
KW = xlsread(dateipfad, sheet, xlRange3);
sheet = 1;
Lambda = xlsread(dateipfad, sheet, xlRange4);
R = xlsread(dateipfad, sheet, xlRange4);
L = xlsread(dateipfad, sheet, xlRange5);
K = xlsread(dateipfad, sheet, xlRange6);
S = xlsread(dateipfad, sheet, xlRange7);
X = xlsread(dateipfad, sheet, xlRange8);
Y = xlsread(dateipfad, sheet, xlRange9);
for i = [1:145]
Winkel(i,3) = abs(acos(sqrt(1-Lambda.^2*sin(Winkel(i,2))*sin(Winkel(i,2)))));
end
Winkel(:,4) = Winkel(:,3)*180/pi;
fig = figure(1);
subplot(2,1,1);
plot(KW,Winkel(:,4),'red');
title('Winkel Beta');
xlabel('Kurbelwinkel (°KW)');
ylabel('Winkel Beta (°)');
axis([0 720 -20 20]);
syms R L K S Y Phi Gamma
F = solve(R*cos(Phi)+ L*sin(asin(R*sin(Phi)/L))- K*cos(Gamma)+ S*sin(acos(1/S*(X - K*sin(Gamma))))-Y==0,Gamma)
for j = [1:145]
Winkel(j,6) = fsolve(F,Phi=Winkel(j,2));
end
Habe also erst versucht die Gleichung F symbolisch zu lösen und dann diese (nach Gamma aufgelöst) mit fsolve zu berechnen. Das funktioniert aber nicht. Kann mir da jemand weiter helfen?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.02.2014, 22:13
Titel:
|
|
Hallo,
F ist also ein symbolischer Ausdruck.
Es macht keinen Sinn, einen symbolischen Ausdruck an den numerischen Löser fsolve zu übergeben.
Mir ist auch nicht wirklich klar, was du damit überhaupt erreichen willst.
Insbesondere: was bedeutet
Zitat: |
die resultierende Funktion mit allen verbleibenden Variablen lösen. |
Man kann entweder Variablen in eine Funktion einsetzen oder eine Gleichung nach Variablen auflösen. Was von beiden meinst du?
was bedeutet
Zitat: |
und dann diese [Gleichung] (nach Gamma aufgelöst) mit fsolve zu berechnen. |
Du hast also einen symbolischen Ausdruck. Was soll daran nun "berechnet" werden?
Grüße,
Harald
|
|
|
Roachnbua |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2014, 09:50
Titel:
|
|
|
|
|
Servus,
genau F ist ein symbolischer Ausdruck. Hab ich in der Anleitung von fsolve gefunden und dann probiert.
Ich versuchs nochmal besser zu beschreiben. Also folgende Gleichung ist die Ausgangsgleichung:
Y = solve(R*cos(Phi)+ L*sin(asin(R*sin(Phi)/L))- K*cos(Gamma)+ S*sin(acos(1/S*(X - K*sin(Gamma)))),Gamma)
Ich möchte diese Gleichung nun auf Gamma auflösen. Ob symbolisch oder auch sofort mit eingesetzten Werten, also numerisch, ist egal.
Ich möchte die Gleichung aber nicht nur für einen "Variablensatz" lösen, sondern da es sich um einen Kurbeltrieb handelt alle 5°Kurbelwinkel Phi. Deswegen habe ich versucht eine Schleife bei fsolve einzubauen, um bei jeder Schleife einen anderen Wert für Phi einzusetzen. Alle anderen Variablen bleiben über eine Umdrehung hin konstant.
Also zusammengefasst gibt es denk ich zwei Möglichkeiten:
- Gleichung umstellen und Werte einsetzten in einem Schritt oder
- Gleichung symbolisch lösen und in einem nächsten Schritt die Variablen einsetzen und numerisch lösen.
Die Frage ist jetzt wie ich das am besten realisieren kann. Danke
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.02.2014, 10:11
Titel:
|
|
|
|
|
Hallo,
Zitat: |
genau F ist ein symbolischer Ausdruck. Hab ich in der Anleitung von fsolve gefunden und dann probiert. |
Ich habe nun in die Doku geschaut und nichts dergleichen gefunden. Hätte mich auch gewundert, da sich das im Grundgedanken (wie gesagt) widerspricht.
Falls du mit einer anderen Version arbeitest und sich dort tatsächlich so ein Beispiel findet, kopier es bitte mal hier rein (und bitte die Version angeben).
Zitat: |
Ich möchte diese Gleichung nun auf Gamma auflösen. Ob symbolisch oder auch sofort mit eingesetzten Werten, also numerisch, ist egal.
Ich möchte die Gleichung aber nicht nur für einen "Variablensatz" lösen, sondern da es sich um einen Kurbeltrieb handelt alle 5°Kurbelwinkel Phi. Deswegen habe ich versucht eine Schleife bei fsolve einzubauen, um bei jeder Schleife einen anderen Wert für Phi einzusetzen. Alle anderen Variablen bleiben über eine Umdrehung hin konstant. |
Dann solltest du dies komplett numerisch machen. D.h. insbesondere kein syms.
Grüße,
Harald
|
|
|
Roachnbua |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2014, 10:36
Titel:
|
|
Hallo Harald,
hab das jetzt versucht mit folgender Gleichung:
for j = [1:145]
Winkel(j,6) = fsolve((R*cos(Phi(j,1))+ L*sin(asin(R*sin(Phi(j,1))/L))- K*cos(Gamma)+ S*sin(acos(1/S*(X - K*sin(Gamma))))-Y==0),Gamma);
end
Jetzt hab ich aber eine Frage. Ich möchte ja auf Gamma auflösen. Wie kann ich Gamma definieren, dass der Solver rechnet, denn beim lösen kommt immer die Meldung das Gamma nicht definiert ist. Versteh ich auch. Aber mit einem Wert kann ich Gamma nicht definieren. Ich möchte diesen ja eigentlich gerade berechnen.
Vielen Dank. Schöne Grüße,
Kevin
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.02.2014, 20:43
Titel:
|
|
Hallo,
der erste Input muss ein Function Handle sein, der zweite ein Startwert für die Suche nach einer Lösung, also:
wobei Gamma0 ein sinnvoller Startwert sein sollte. Alle beteiligten Variablen außer Gamma müssen zuvor mit numerischen Werten belegt werden.
Grüße,
Harald
|
|
|
|
|
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 - 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.
|
|