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

Kostenberechnung

 

alexh
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.10.08
Wohnort: Recklinghausen
Version: ---
     Beitrag Verfasst am: 30.10.2008, 15:13     Titel: Kostenberechnung
  Antworten mit Zitat      
Hallo liebe Community,
Da dies mein erster Beitrag in diesem Forum ist, erstmal "Hallo" Wink

Ich arbeite an der Universität Twente in NL mit Matlab 2007/2008.

Wir haben nun eine recht einfache Aufgabe bekommen. Ich war mir der Lösung auch sicher, nur aus irgendeinem Grund ist es mir nicht möglich ein Array durch eine IF-Abfrage zu schieben.

Die Aufgabe lautet: (zusammengefasst)
Vergleichen zweier Mobiltelefon-Verträge.

Anbieter 1: (Hi)
12,95 € Grundgebür - enthalten sind 45 Freiminuten
Minutenpreis für jede weitere Minute - 0,12€

Anbieter 2: (T-Mobile)
19,95 € Grundgebür - enthalten sind 20 Freiminuten
Minutenpreis für jede weitere Minute - 0,03€

Erstellen sie für jeden Anbieter eine Funktion und plotten sie beide Funktionen in eine Grafik.
Bennen sie die beiden Funktionen wie folgt:

function y=hi(minuten)

und

function y=tmobile(minuten)

Mein Lösungsansatz:

function y = hi(minuten)
if (minuten > 45)
y = 12.95 + (minuten * 0.12)
else
y = 12.95
end
end

function y = tmobile(minuten)
if (minuten > 20)
y = 19.95 + (minuten * 0.03)
else
y = 19.95
end
end
--------------------------------------------

>> x= 1:1:100;

>> hi(x)
y =
12.9500
ans =
12.9500

>> tmobile(x)
y =
19.9500
ans =
19.9500
--------------------------------------------
Es werden mir also nur die Basiswerte ausgeben, die Grundgebühr, warum aber nicht der wahre wert.
So sollte die geplottete Grafik aussehen: ( Skizze Wink )
|............................// 15,00€
|.........................//
|......................//
|...................//
|-------------- 12,95€
|
|
|
|________________________________

So sieht die geplottete Grafik aus: ( Skizze Wink )
|
|
|
|
|-------------------------------------------- 12,95€
|
|
|
|________________________________

Kann mir hier jemand helfen...???
Ich denke mal mein Ansatz ist richtig nur irgendwie wird das Array nicht richtig verarbeitet.

Im Voraus schonmal Danke.
Alex
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.10.2008, 16:13     Titel:
  Antworten mit Zitat      
Probiers mal so in jeder Funktion:

Code:

function y = hi(minuten)
y = 12.95 + (minuten>45).*(minuten * 0.12)
end
 


Das Problem war if x > 45 aber x ist ein vektor. dh x<45 = 0 0 0 1 1 1 ...
Damit kannst du natürlich keine if anfrage machen. Dh du musst in einer Funktion auch in Vektoren denken, ist bei Matlab am Anfang immer etwas schwierig. Ansonsten könntest du auch eine For schleife machen aber dann verlierst du Geschwindigkeit. (In diesem Fall eher nebensächlich)

Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
alexh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.10.08
Wohnort: Recklinghausen
Version: ---
     Beitrag Verfasst am: 01.11.2008, 00:49     Titel:
  Antworten mit Zitat      
Also danke erstmal für die Antwort, so kannte ich das garnicht. Jetzt muss ich mein MatLab-Verständnis erstmal neu ordnen.

Deine Function bringt mich zwar weiter kann aber eigentlich nicht richtig sein.
Denn das geplottete Ergebnis ergibt kein Sinn.
Ich werde mich jetzt mal dahinterklemmen und mich nochmal melden.

Bis später und danke Wink




So sieht deine Lösung geplottet aus:

http://ahoehfeld.kilu.de/Material/Bild/gehtnicht2.bmp

So sollte sie allerdings geplottet aussehen:

http://ahoehfeld.kilu.de/Material/Bild/richtigso.bmp

Edit by Bijick: Formatierung angepasst.
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 03.11.2008, 12:25     Titel:
  Antworten mit Zitat      
Ja stimmt,

man müsste ja die Minuten, die man schon verbraucht hat noch abziehen, also:

Code:

function y = hi(minuten)
y = 12.95 + (minuten>45).*((minuten-45) .* 0.12)
end
 


Dann is es richtig,

Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
alexh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.10.08
Wohnort: Recklinghausen
Version: ---
     Beitrag Verfasst am: 03.11.2008, 23:37     Titel:
  Antworten mit Zitat      
Japs Danke so gehts...

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