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

nicht lineare funktion lösen

 

kojoteKarl
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 09.05.2016, 22:01     Titel: nicht lineare funktion lösen
  Antworten mit Zitat      
Hallo,
mein Problem ist wie folgt. Ich möchte eine nicht lineare Gleichung mit solve lösen

einfach ausgedrückt für y=x^2 ist die Lösung bei y=4 x=-2 und 2 in dieser Form
Code:

syms x
y=4
s=x^2-y
erg=solve(s,x)
 


so weit so gut. Das funktioniert auch, wenn ich das ganze aber ausweite auf meine Formel, wo ich weiß das für Y=9.6 die Lösung a=50 ist, spukt mir Matlab nur eine Lösung in Form einer komplexen Zahl aus.

Code:

syms a
W=100
Y=9.6
s=(29.6*(a/W)^(0.5)-185.5*(a/W)^(1.5)+655.7*(a/W)^(2.5)-1017*(a/W)^(3.5)+638.9*(a/W)^(4.5))-Y;
erg=solve(s,a)
 

Ich hab es auch schon mit fsolve versucht, aber da muss ich ja zusätzlich einen Startwert angeben und das kann nicht die Lösung für das Problem sein.
Also wie bekomme ich die richtige Lösung so das a=50 ist?

Vielen Dank schon einmal im Voraus
MfG
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.05.2016, 23:14     Titel:
  Antworten mit Zitat      
Hallo,

Code:


Zitat:
Ich hab es auch schon mit fsolve versucht, aber da muss ich ja zusätzlich einen Startwert angeben und das kann nicht die Lösung für das Problem sein.

Wenn die Gleichung zu komplex ist, um gelöst werden zu können, ist es sogar die einzige Lösung.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kojoteKarl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 23.05.15
Wohnort: Freiberg
Version: R2013
     Beitrag Verfasst am: 10.05.2016, 09:17     Titel:
  Antworten mit Zitat      
Vielen Dank für die Antwort.

Ich hab es jetzt für einen einmaligen Fall anderst gelöst. Ich lasse mir den Y wert erst berechnen und plotte ihn dann in abhängigkeit von a. Lese dann den a Wert für den dazugehörigen Y Wert ab.

Der gesamte code lautet dann.
Code:

B=50;
W=100;
Fmin=10000;
Fmax=40000;
avor=50;
C=2.54*10^(-11);
m=2.3;
K0=400;
KIc=4000;
dF=Fmax-Fmin;
Y=(B*W^(1/2)*K0)/dF
a=[avor:0.1:W];
Y1=(29.6*(a/W).^(0.5)-185.5*(a/W).^(1.5)+655.7*(a/W).^(2.5)-1017*(a/W).^(3.5)+638.9*(a/W).^(4.5));
plot(a,Y1)
grid on
%%
Y=(B*W^(1/2)*KIc)/Fmax
ac=84.9;
fprintf('kritische Risslaenge = %d\n',ac);
clear a
syms a
Y=(29.6*(a/W).^(0.5)-185.5*(a/W).^(1.5)+655.7*(a/W).^(2.5)-1017*(a/W).^(3.5)+638.9*(a/W).^(4.5));
KI=dF/(B*W^(1/2))*Y;
Nc=int(1/(C*KI^m) , a,avor,ac);
fprintf('restliche Schwingspielzahl = %d\n',Nc);
Nc=int(1/(C*KI^m) , a,avor,ac);
 


Jetzt vielleicht eine andere Möglichkeit. Gibt es einen Befehl in Matlab, der die Kurve des plotts abfährt und mir beim erreichen eines bestimmten Y Wertes, den dazugehörigen a Wert ausgibt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.05.2016, 09:36     Titel:
  Antworten mit Zitat      
Hallo,

die "Kurve" besteht ja nur aus bestimmten Datenpunkten. Du kannst beispielsweise interpolieren, um näherungsweise zu sehen, wann ein bestimmter Wert erreicht wird.
Code:
interp1(Y1, a, Ytarget)


Das ist allerdings im Vergleich zu fsolve relativ ungenau. Du könntest aber beispielsweise den so erhaltenen Wert als Startwert für fsolve nutzen.

Grüße,
Harald
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 - 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.