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

Lösung nicht linearer Gleichungssysteme syms

 

samson05
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 14.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2018, 08:00     Titel: Lösung nicht linearer Gleichungssysteme syms
  Antworten mit Zitat      
Hallo zusammen,

ich versuche seit geraumer Zeit das Gleichungssystem zu lösen, welches der unten stehende Code erzeugt, bekomme es jedoch einfach nicht hin.

Das GLS besteht aus 8 Gleichungen mit 8 unbekannten (a M N P Q R S T), für die ich Werte benötige. Das Problem was ich habe ist, dass ich fsolve nicht mit syms zusammen verwenden kann.
Hat da jemand eine Idee wie ich aus der symbolic function eine Funktion mache die ich mit fsolve lösen kann?

Folgende Fehlermeldung erscheint:
Code:

Warning: Unable to find explicit solution. For options, see help.

VarSol =

  struct with fields:

    a: [0×1 sym]
    M: [0×1 sym]
    N: [0×1 sym]
    P: [0×1 sym]
    Q: [0×1 sym]
    R: [0×1 sym]
    S: [0×1 sym]
    T: [0×1 sym]
 


Und wie kann ich in einer Funktion sagen, dass diese von anderen Einträgen abhängig sein soll als von x(1), x(2) ... x(n)? (Beispiel siehe ersten codeschnipsel)

Ich bin noch recht unerfahren in Matlab.

Vielen Dank und beste Grüße



Geht so etwas?
Code:

function F = BBCfun(x)
F= [a+b+c;
2*a+2*b;
c-a+5]
 



Wie ist das GLS zu lösen?
Code:

%Equations for the BBC2005 Yield locus
clc; clear all;

syms a M N P Q R S T;
k = 3;      %Crystallographic structure k=3 for BCC k=4 for FCC


Y_ref = 500   %instantaneous reference yield stress of the material
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Fließbeginn in den unterschiedlichen Richtungen und r-Werte
Y0 = 500;
Y45 = 450;
Y90 = 550;
Y_b = 500;
r0_exp = 0.9;
r45_exp = 1;
r90_exp = 1.1;
Yb = 500;
rb_exp = 1.05;

syms s11 s22 s12 s21
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Terme allgemein
R_allg = (s11+M*s22)/2;
T_allg = sqrt((N*s11-P*s22)^2 / 4 + Q^2 * s12 * s21);
A_allg = sqrt((R*s11-S*s22)^2 / 4 + T^2 * s12 * s21);
Sigma_allg = (a*(R_allg+T_allg)^(2*k)+ a*(R_allg-T_allg)^(2*k) + (1-a)*(2*A_allg)^(2*k))^(0.5*k)

F = Sigma_allg - Y_ref
r_b = diff(F,s22)/diff(F,s11)
%% R-Werte allgemein
phi_Grad = 90
phi = phi_Grad*pi/180
r_phi = -(sin(phi)^2*diff(F,s11) - sin(2*phi)*diff(F,s12) + cos(phi)^2*diff(F,s22))/(diff(F,s11)+diff(F,s22))

%% Gamma 0 Grad
%  
s11 = Y0; s22 = 0; s12 = 0; s21 = 0;
Sigma_0 = eval(Sigma_allg) - Y_ref
r_phi_0 = eval(r_phi) - r0_exp

%% Gamma 45 Grad
%
s11 = 0.5*Y45; s22 =0.5*Y45; s12 =0.5*Y45; s21 =0.5*Y45;
Sigma_45 = eval(Sigma_allg)- Y_ref
r_phi_45 = eval(r_phi) - r45_exp

%% Gamma 90 Grad
%
s11 = 0; s22 = Y90; s12 = 0; s21 = 0;
Sigma_90 = eval(Sigma_allg)- Y_ref
r_phi_90 = eval(r_phi) - r90_exp

%% R-Wert Sigma_b
%
s11 = Yb; s22 = Yb; s12 = 0; s21 = 0;
Sigma_b = eval(Sigma_allg)- Y_ref
r_b_eval = eval(r_b) - rb_exp

%%
F1 = Sigma_0
F2 = Sigma_45
F3 = Sigma_90
F4 = Sigma_b
F5 = r_phi_0
F6 = r_phi_45
F7 = r_phi_90
F8 = r_b_eval
%%
% F1 = matlabFunction(F1)
% F2 = matlabFunction(F2)
% F3 = matlabFunction(F3)
% F4 = matlabFunction(F4)
% F5 = matlabFunction(F5)
% F6 = matlabFunction(F6)
% F7 = matlabFunction(F7)
% F8 = matlabFunction(F8)

sol = [a, M, N, P, Q, R, S, T]


GLS = [F1,F2,F3,F4,F5,F6,F7,F8]

VarSol = solve(GLS==0,sol)

 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.06.2018, 15:05     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag:
Code:
f = matlabFunction(GLS)
g = @(x) f(x(1), x(2), x(3), x(4), (5), x(6), x(7), x(8))

und dann fsolve auf g anwenden

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