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

"Symbolisches Rechnen" in MatLab

 

lovobo
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 26.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2015, 23:10     Titel: "Symbolisches Rechnen" in MatLab
  Antworten mit Zitat      
Hallo,

zum einen entschuldige ich mich für die absolut schwammige Überschrift, ich habe echt über 2 Stunden gesessen um irgendwas passendes zu finden, wenigstens in etwa passend. Wenn euch da etwas besseres zu einfällt bitte sagt es mir, ansonsten können befugte das natürlich sehr gerne ändern, ich weis nichts anderes dazu.

Dann zu meiner Frage die ich mit einem Beispiel beginne. Da ich dazu eben nicht weis wie ich das codetechnisch realisieren soll, muss ich das leider in Textform/Pseudocode machen.

Ich gebe MatLab folgendes:
R=Reifen
M=Metall (in kg)

PKW=4*R+1700*M
LKW=12*R+20000*M
MRD=2*R+300*M

Bestellung=100*PKW+10*LKW+200*MRD

Im Grunde will ich da nun nichts anderes das er mir jetzt sagt wie viele Räder und Metall bei Bestellung stehen.

Das ist auch schon das ganze "Problem", ich wollte das erst mit Excel machen, stand da aber vor dem gleichen Problem.
Ich bin auch totaler MatLab Anfänger und denke auch das das was ich machen will gar nichts für ein Programm für MatLab ist, von daher wäre ich auch offen für andere Programme, da das hier schon mit Kanonen auf Spatzen schießen ist.

MfG
lovobo

Edit:

ich bin ja so dämlich... direkt nachdem ich den Thread erstellt hatte kam mir die Idee syms zu verwenden und damit habe ich meine Frage selbst beantwortet.

Trotzdem!!! Das ist ein super Forum das mir schon so unendlich viele male weiter geholfen hat Very Happy Danke dafür an das ganze Forum.
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 27.07.2015, 09:12     Titel:
  Antworten mit Zitat      
Für die anderen Anfänger die das lesen. Die sehr weit verbreitete Toolbox "Symbolic Math Toolbox" ermöglicht das definieren von symbolischen Variable "syms".

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
lovobo
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 26.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2015, 15:18     Titel:
  Antworten mit Zitat      
ok, eine kleine Frage habe ich dann doch, nachdem ich da nun eine recht verzweigte Rechnung aufstellte, die fast komplett auf eine symbolische Variable zurück zu führen ist, frage ich mich ob es möglich istherauszufinden wie das ergebnis bei einem zwischenwert ist.

um das beispiel von oben aufzugreifen:
G=Gummi
K=Kunststoff
M=Metall (in kg)

Reifen=5*G+3*M
R=Reifen

PKW=4*R+1700*M+50*K
LKW=12*R+20000*M+150*K
MRD=2*R+300*M+15*K

Bestellung=100*PKW+10*LKW+200*MRD

Nun wäre das Ergebnis 4600 Gummi, 4327602 Metal und 9500 Kunststoff. Wie kann ich aber zB feststellen wie viele Reifen da drinne sind ?

Und das noch eine weitere Frage, würde ich nun für für Gummi oder Metall irgendwelche "krummen" werte eintragen, so bekomme ich Brüche heraus, wie bekomme ich diese Brüche zum einen als Dezimalzahl mot Komma angezeigt UND wie bekomme ich das hin das nur der Teil in einer Extra Variable abgespeichert wird, da mir im Workspace als Wert halt immer "1x1 sym" angezeigt wird.

Vielen dank Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.07.2015, 20:00     Titel:
  Antworten mit Zitat      
Hallo,

bitte auf den Status eines Beitrags achten.

Zitat:
Wie kann ich aber zB feststellen wie viele Reifen da drinne sind ?

Code:
Reifen=5*G+3*M


Zitat:
wie bekomme ich diese Brüche zum einen als Dezimalzahl mot Komma angezeigt UND wie bekomme ich das hin das nur der Teil in einer Extra Variable abgespeichert wird, da mir im Workspace als Wert halt immer "1x1 sym" angezeigt wird.

eval . Diese Frage gab es schon mehrfach im Forum.

Bitte für die Zukunft: bitte poste den verwendeten Code statt zu beschreiben, was du machst. Code ist eindeutiger und oft schneller verständlich.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 26.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2015, 22:18     Titel:
  Antworten mit Zitat      
Code:

clc;clear all;close all;

syms uu cobblestone

rubber =        4 * uu / 21;
copper =        3 * uu / 10;
gold =          5 * uu / 4;
iron =          5 * uu / 4;
ref_iron = iron;
oak_planks =    1 * uu / 32;
coal =          3 * uu / 20;
coal_dust = coal;
glas =          4 * uu / 32;
dia =           9 * uu;
redstone =      4 * uu / 24;
tin =           3 * uu / 10;


coppercable=(3*copper+6*rubber)/6;
circuit=2*redstone+ref_iron+6*coppercable;
re_bat=2*redstone+4*tin+coppercable;
furnace=8*cobblestone;
iron_furnace=5*iron+furnace;
generator=re_bat+3*ref_iron+iron_furnace;
solar=3*coal_dust+3*glas+generator+2*circuit
lv_trans=4*oak_planks+3*copper+2*coppercable;
lv=lv_trans+8*solar
machineblock=8*ref_iron;
goldcable=3*gold/12;
twogoldcable=2*rubber+goldcable;
mv_trans=machineblock+2*twogoldcable;
mv=mv_trans+8*lv
hvcable=3*ref_iron/12;
fourhvcable=3*rubber+hvcable;
e_crystal=8*redstone+dia;
hv_trans=mv_trans+circuit+2*fourhvcable+e_crystal;
hv=hv_trans+8*mv

 


ich denke nicht das das wirklich eine verbesserung ist den ganzen code zu posten, zumal mein beispiel wirklich wirklich identisch ist, wenn dann drücke ich mich selbst nur etwas blöd aus.

wie zB das mit den Reifen, ich wollte wissen wie viele Reifen da nun drinne sind, das ich vorher selbst den Reifen definiere weis ich ja auch, aber kann ich aus dem ergebnis selbst nun herausextrahieren wie viele das sind ? Also ohne eine rückrechnung amchen zu müssen mein ich damit.

bei eval kommt exakt der gleiche ausdruck raus der vorher schon da stand. als beispiel, da steht
Code:

8*cobblestone + 15143/1680
 


da möchte ich einfach nur das er mir den zweiten teil dann nicht als bruch schreibt und das auch unabhängig vom ersten teil. nur suchte ich auch bereits in diesem forum danach und auch eval war dabei und das brachte nicht das gewünschte ergebnis. Es würde ja schon helfen wenn ich den ausdruck seperieren könnte, nur weis ich auch hier nicht wie Sad

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
lovobo
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 26.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2015, 14:30     Titel:
  Antworten mit Zitat      
keiner da eine idee wie das gehen könnte ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Es würde ja schon helfen wenn ich den ausdruck seperieren könnte

sym2poly

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 26.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2018, 11:41     Titel:
  Antworten mit Zitat      
hui, fast drei jahre her und noch immer das gleiche problem

zum einen weiß ich noch immer nicht wie aus dem ergebnis einzelne komponenten herausziehen kann(also dessen anzahl weiß). Ich möchte also nicht nur die ausgangsstoffe erfassen, sondern dann noch alle zwischenschritte. Wenn das überhaupt geht.

zum anderen funktioniert sym2poly nicht

Code:
Error using sym/sym2poly (line 31)
Input has more than one symbolic variable.

das bekomme ich dabei heraus, wenn ich es mit der funktion probiere
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.05.2018, 22:10     Titel:
  Antworten mit Zitat      
Hallo,

das Problem scheint dir ja wirklich unter den Nägeln zu brennen, wenn du drei Jahre für eine Reaktion brauchst. Sei's drum.

Eben versucht:
>> syms cobblestone
>> y = 8*cobblestone + 15143/1680
>> z = sym2poly(y)

Funktioniert einwandfrei. Wenn das nicht funktioniert, verwendest du sym2poly wohl anders. Dann wäre gut zu wissen wie.

Die Beschreibung des ersten Problems verstehe ich nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

um die Brüche zu vermeiden, kann auch noch vpa helfen.

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.