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 von Gleichungen mit Parametern in Wertebereich

 

minerva
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2021, 14:35     Titel: Lösung von Gleichungen mit Parametern in Wertebereich
  Antworten mit Zitat      
Hallo,
ich bin noch Matlab Anfänger und habe gerade Probleme einen Ansatz für folgendes Problem zu finden:

Ich habe zwei Gleichungen
R=d/l*A
C=s*d*A

Dabei sind R und C bekannt. d, l, A und s können nur jeweils Werte in vorgegebenen Bereichen annehmen. Ich würde gerne von Matlab berechnen lassen, welche Werte d, l, A und s in welcher Kombination einnehmen müssten um die Gleichungen mit den bekannten R und C zu erfüllen, bzw. ob dies überhaupt mit den vorgegebenen Wertebereichen möglich ist.

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte oder wenigstens einen Ansatz in die richtige Richtung hat.
Viele Grüße
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: 15.06.2021, 19:33     Titel:
  Antworten mit Zitat      
Hallo,

ich würde es mit syms , assume und solve versuchen,

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
minerva
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2021, 13:48     Titel:
  Antworten mit Zitat      
Vielen Dank für die Tipps.
Ich habe damit jetzt etwas rumprobiert. Ich habe zwei Varianten ausprobiert, bei denen er mir aber keine Lösungen ausgibt, obwohl ich weiß, dass es sie geben muss. Die auskommentierten Sachen sind Varianten, die ich auch ausprobiert habe, die aber auch nicht geklappt haben.
Wenn ich die Bedingungen entfertn habe, wurden mir Lösungen ausgegeben, die mir aber leider nicht weiter helfen.

Kann mir jemand sagen, wo mein Fehler liegt oder ob das so überhaupt klappen kann?


Code:

close all
clear all
clc

syms l d A s;

assume(~in(l,'integer')&l<300 & l>50);
assume(~in(d,'integer')&d<7000e-05 & d>1e-06);
assume(~in(A,'integer')&A<1e-02 & A>1e-06);
assume(~in(s,'integer')&s<2000 & s>1000);

% assume(l<300 | l>50);
% assume(d<7000e-05 |d>1e-06);
% assume(A<1000e-01 |A>1e-06);
% assume(s<2000| s>1000);

C=4.950000000000000e-04;
R=0.002000000000000;

%% Variante 1

% eqns=[R==d/(l*A), C==s*d*A];
% S=solve(eqns,[l d A s])
%
% S.l
% S.d
% S.A
% S.s

%% Variante 2
eqns=[R==d/(l*A), C==s*d*A];
vars=[l d A s];
[soll, sold, solA, sols]=solve(eqns,vars)
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: 16.06.2021, 22:25     Titel:
  Antworten mit Zitat      
Hallo,

was bezweckst du mit ~in(l,'integer')? l soll kein Integer sein dürfen? Warum denn nicht?! Das wirkt auf mich sehr willkürlich.

Wie wäre es damit?

Code:
syms l d A s;

assume(l<300 & l>50);
assume(d<7000e-05 & d>1e-06);
assume(A<1e-02 & A>1e-06);
assume(s<2000 & s>1000);

C=4.950000000000000e-04;
R=0.002000000000000;

%% Variante 1

eqns=[R==d/(l*A), C==s*d*A];
S=solve(eqns,[l d A s])

S.l
S.d
S.A
S.s
 


Hier bekomme ich Lösungen, und wenn ich testhalber auf
Code:
assume(l<0.0300 & l>0.005);
abändere, bekomme ich keine (weil es wohl keine gibt).

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
minerva
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2021, 12:39     Titel:
  Antworten mit Zitat      
Hallo Harald,
vielen Dank, dass du mir bei meinem Problem hilfst.
Ich war ziemlich verzweifelt und habe nur ganze Zahlen bekommen und hatte einfach mal irgendwas ausprobiert um das zu verhindern, deshalb das~in(l,'integer').

Ich habe deinen Code probiert, allerdings bekomme ich da keine Lösung raus und folgende Warnmeldung:

Warning: Unable to find explicit solution. For options, see help.
> In solve (line 317)
In gomat (line 14)

Line 14 ist bei mir:

S=solve(eqns,[l d A s])




Kann es da ein Problem mit meiner Version geben oder muss ich irgendeine Toolbox zusätzlich runterladen?

Viele Grüße
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: 23.06.2021, 12:57     Titel:
  Antworten mit Zitat      
Hallo,

ich verwende R2021a. Wenn du ein älteres Release verwendest (welches?), ist es durchaus möglich, dass dort manches anders funktioniert hat.

Die benötigte Toolbox ist die Symbolic Math Toolbox. Da solltest du aber direkt eine Fehlermeldung bekommen, wenn du diese nicht hast.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
minerva
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2021, 16:37     Titel:
  Antworten mit Zitat      
Ich benutze Version R2019a. Die Symbolic Math Toolbox habe ich installiert. Gibt es noch etwas was ich ausprobieren kann um den Code zum laufen zu bekommen?

Viele Grüße
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: 23.06.2021, 20:02     Titel:
  Antworten mit Zitat      
Hallo,

mit R2019a bekomme ich auch keine Lösungen. Ich sehe nur 2 Möglichkeiten:
a) Wechsel auf ein aktuelleres Release, vorzugsweise R2019a
b) Technischen Support kontaktieren um zu sehen, ob man dort eine Lösung (außer a) hat.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.