Mathe: Aus Textaufgabe 2 Gleichungen erstellen und ausrechnen

  • Hiho,

    verzweifel gerade an einer Mathe Aufgabe:

    Für eine Klassenfahrt wird ein Bus für 180€ gemietet. Hätten 5 Schüler mehr teilgenommen, dann hätte jeder 50 Cent weniger zahlen müssen.
    Wie viele Schüler haben an der Klassenfahrt teilgenommen?

    Meine Gleichungen:

    1. x * y = 180
    2. ( x +5) * ( y - 0,5 ) = 180

    x sind die Schüler, y ist der Betrag.

    Leider bekomm ich immer Komma bei x raus und halbe Schüler gibt es nicht =/

    Kann jemand sowas gut? Ich finde leider keinen Fehler.

    Gruß Greek

  • Hallo,

    bei dir bleiben die Kosten f(x) ja gleich - obwohl sie laut Aufgabe weniger werden?
    Ich würde sagen..

    x*y = 180

    x(+5) * (y-0,5) = z

    und dann auflösen.. mhm - vllt. Gauß ? Bin aber auch keine Matheleuchte - nur eine Idee! :)

  • Nur das Ergebnis zu nennen wird dir sicherlich nicht viel bringen.
    Daher hier ein Lösungsweg.
    Deine Anfangsgleichungen sind korrekt (zumindestens sehe ich das genauso)

    Lösungsweg

    Erste Gleichung nach y umgestellt:

    Code
    y = 180/x


    Zweite Gleichung nach y umgestellt:

    Code
    y = 1/2 * (365+x)/(x+5)


    Beide Gleichungen gleichsetzen und folgende Umformungen durchführen:

    Code
    (365+x)/(2x+10) = 180/x      | *x , *(2x+10)
    
    
    x^2 + 365x = 360x + 1800     | -360x , -1800
    
    
    x^2 + 5x - 1800 = 0


    Quadratische Gleichung wie immer auflösen und man erhält als Ergebnis 40 und -45.
    Welches von beiden das logische Ergebnis ist sollte klar sein.

  • Mal bisschen OT:
    Wenn du dir bei der ganzen Umstellerei unsicher bist ob du es richtig gemacht hast kannst du auch rein mit AutoIt die Gleichungen gleichsetzen und lösen lassen und somit dein Ergebnis testen:

    Spoiler anzeigen
    [autoit]

    Global Const $FLT_EPSILON = _GET_FLT_EPSILON() ; Rechengenauigkeit

    [/autoit] [autoit][/autoit] [autoit]

    ; Definition der Funktionen
    Global $sF1 = "180/x"
    Global $sF2 = "(365+x)/(2*x+10)"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Definition des Suchbereiches
    Global $iStart = 1 ; x mindestens 1 da mindestens 1 Schüler mitfährt
    Global $iEnd = 1000 ; wir gehen mal davon aus dass nicht mehr als 1000 Schüler in einen Bus passen...
    Global $iStep = 1.1

    [/autoit] [autoit][/autoit] [autoit]

    #region Suche Bereich auf Schnittpunkte beider Funktionen ab und ermittle die Koordinaten der Schnittpunkte
    ; Größer/Kleiner Vergleichskriterium
    Global $bSw = _Fx($sF1, $iStart) > _Fx($sF2, $iStart)

    [/autoit] [autoit][/autoit] [autoit]

    For $x = $iStart To $iEnd Step $iStep ; Gehe den Bereich grob ab
    If $bSw <> (_Fx($sF1, $x) > _Fx($sF2, $x)) Then ; Wenn Wechsel der Größer/Kleiner Beziehung dann muss Schnittpunkt dazwischen liegen
    $bSw = Not $bSw
    $dX_Schnitt = Schnittsuche($sF1, $sF2, $x - $iStep, $x) ; Starte die feine Schnittpunktsuche im Intervall
    $dY_Schnitt = (_Fx($sF1, $dX_Schnitt) + _Fx($sF2, $dX_Schnitt)) / 2 ;Y-Wert als Mittelwert beider Funktionswerte bestimmen
    MsgBox(0, "Schnittpunkt der beiden Funktionen gefunden", "x = " & $dX_Schnitt & @CRLF & "y = " & $dY_Schnitt)
    EndIf
    Next
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    ; Berechnet eine Funktion als String formatiert
    Func _Fx(Const $sF, Const $dW)
    Return Number(Execute(StringReplace($sF, "x", "(" & $dW & ")")))
    EndFunc ;==>_Fx

    [/autoit] [autoit][/autoit] [autoit]

    ; Bestimmt die Schnittpunkte 2er Funktionen in einem Intervall iterativ mit dem Regula Falsi Algorithmus
    ; Hinweis: Sollte noch ungültige Ergebnisse liefern wenn einer der Grenzen = dem Schnittpunkt
    Func Schnittsuche(Const $sF1, Const $sF2, $dA, $dB, $iMaxIt = 100)
    ;by AspirinJunkie
    Local $xA = $dA, $xB = $dB
    Local $Ya, $Yb, $x, $Yx
    Local $xOld = $dB

    [/autoit] [autoit][/autoit] [autoit]

    For $n = 1 To $iMaxIt
    $Ya = _Fx($sF1, $xA) - _Fx($sF2, $xA) ;Differenz der Funktionen da Regula Falsi nach Nullstellen sucht
    $Yb = _Fx($sF1, $xB) - _Fx($sF2, $xB)
    $x = $xA - ($Ya * ($xB - $xA)) / ($Yb - $Ya)
    $Yx = _Fx($sF1, $x) - _Fx($sF2, $x)

    [/autoit] [autoit][/autoit] [autoit]

    If Abs($x - $xOld) < (4 * $FLT_EPSILON) Or Abs($Yx) < (5 * $FLT_EPSILON) Then ; Wenn Differenz der Durchgänge unter einer gewissen Genauigkeit liegt abbrechen
    Return $x
    Else ;Festlegung der neuen grenzen für den neuen Durchlauf
    $xOld = $x
    If $Ya > $Yx Then
    $xA = $x
    Else
    $xB = $x
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next
    Return SetError(1, $iMaxIt, $x)
    EndFunc ;==>Schnittsuche

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION#=================================================================================
    ; Name...........: _GET_FLT_EPSILON
    ; Description ...: Berechnet den binären Rundungsfehler und damit die Rechengenauigkeit
    ; Syntax.........: _GET_FLT_EPSILON
    ; Return values .: Epsilon
    ; Author ........: AspirinJunkie
    ;============================================================================================
    Func _GET_FLT_EPSILON()
    Local $x = 1
    Do
    $x /= 2
    Until 1 + $x <= 1
    Return $x
    EndFunc ;==>_GET_FLT_EPSILON

    [/autoit]