Parabel

Werbung
Parabel
Protokoll: ITB
EXCEL PROGRAMM
28 April 2008
Verfasst von: Manuel Mitterrutzner
Parabel
Protokoll: ITB
Fragestellung:
Wir Programmieren ein Programm mit Excel das uns von 2 Funktionen verschiedene Werte berechnet und sie in
ein Diagramm darstellt.
Parabel | 28.04.2008
Skizze:
1
Beschreibung:
Wir müssen von den 2 Funktionen verschiedene Ergebnisse programmieren:
Und es sollte noch die Änderung der Achsen von dem Diagramm verändern können und den Schnittpunkt der
Funktion 1 und der Funktion 2. Außerdem wird das Programm mit einen Diagramm das die beiden Graphen
anzeigt ausgestattet sein.
Zuerst gestalten wir das Programm optisch. Wir errichten 2 Textfelder und schreiben Funktion 1 und funktion2
hinein. Darunter kommt jeweils für jede Funktion die Funktionsgleichung y= ax^2+bx+c hinein wo man a b
und c verändern kann. Am Rande des Programms werden jeweils für jede Funktion 5 Command Button erstellt.
In diesen Button werden später die verschiedenen Werte (siehe Durchführung) erstellt. Danach erstellen wir in
der Mitte ein Diagramm. Die werte errechnet man mit die man in der Tabelle 2 berechnet.
Tabelle 2: dort muss der Startwert und der End wert gegeben werden. Den Schrittweitewert errechnet man mit
der Formel (=Startwert-End wert/50). Die Parabel Punkte errechnet man Mit der Formel y= ax^2+bx+c wo
und setzen die verschiedenen Werte der Tabelle 1 von der Funktion eins ein. Dasselbe machen wir mit der
Funktion 2. Die Werte a b c werden mit F4 fixiert. Den wert x den es bei der Formel braucht ist der standwert
und in der nächsten Zeile Startwert + Schrittweiten wert den wir fixieren. Danach ziehen wir diese 3 Werte
hinunter bis als x wert 10 kommt. Diese 3 Werte Tabelle fügen wir dann in den erstellten PunktXY Diagramm
ein.
Unter dem Diagramm kommen noch 2 Buttons für den Schnittpunkt der F1 mit F2 und für die Änderung der x
und y Achse im Diagramm.
Der nächste Schritt ist die verschiedenen Buttons zu programmieren.
Parabel | 28.04.2008
Durchführung:
2
1 Button
Private Sub CommandButton13_Click()
a = Cells(7, 2).Value
b = Cells(7, 4).Value
c = Cells(7, 6).Value
If a <> 0 Then
x0 = -b / (2 * a)
y0 = a * x0 * x0 + b * x0 + c
If Abs(a) > 1 Then
streckung = " gestaucht!"
ElseIf Abs(a) = 1 Then
streckung = " normal!"
Else
streckung = " gestreckt!"
End If
If a > 0 Then
öffnung = "Die Parabel ist nach oben "
Else
öffnung = "Die Parabel ist nach unten "
End If
x = MsgBox("Scheitel:(" & x0 & "/" & y0 & "). " & öffnung & streckung, vbInformation)
Else
x = MsgBox("ERROR: Keine quadratische Gleichung!!!!", vbCritical)
End If
End Sub
Parabel | 28.04.2008
Zuerst haben wir a b c der Funktion (Cells. Reihe, Spalte. Value) bestimmt.
So haben wir den Scheitel der Parabel berechnet
Um zu bestimmen ob der Graph gestaucht ist schauen wir ob si kleiner ist als 1.
Hier berechneten wir ob die Parabel größer als 1ist (gestreckt ) oder ob es eine Normalparabel = ist.
3
2. Button
Zur Berechnung der Nullstellen muss man das y auf 0 setzen und die Gleichung auf x auflösen. Zuerst
haben wir die Diskriminante berechnet (b² - 4ac) und geschaut wie viele Lösungen es gibt und jeweils
ausgegeben. Außerdem war zu beachten, ob es sich um eine quadratische Gleichung handelt, wenn nein
ob die Gerade parallel zur x-Achse ist oder gar die x-Achse ist.
Parabel | 28.04.2008
Private Sub CommandButton14_Click()
a = Cells(7, 2).Value
b = Cells(7, 4).Value
c = Cells(7, 6).Value
If a <> 0 Then
D=b*b-4*a*c
If D < 0 Then
x = MsgBox("keine Nullstellen!!!!", vbInformation)
ElseIf D = 0 Then
x1 = -b / (2 * a)
x = MsgBox("Nullstelle:(" & x1 & ",0)", vbInformation)
Else
x1 = (-b + Sqr(D)) / (2 * a)
x2 = (-b - Sqr(D)) / (2 * a)
x = MsgBox("Nullstellen:(" & x1 & "/0) und (" & x2 & "/0)", vbInformation)
End If
ElseIf b = 0 And c <> 0 Then
x = MsgBox("Gerade ist parallel zur x-Achse!!!!", vbInformation)
ElseIf b = 0 And c = 0 Then
x = MsgBox("Gerade ist die x-Achse!!!!", vbInformation)
Else
x1 = -c / b
x = MsgBox("Nullstelle: (" & x1 & "/0)", vbInformation)
End If
End Sub
Hier bestimmen wir wieder a b c der Funktion Cells(Reihe, Spalte Value)
Hier berechnen wir die Diskriminante, dass wir sehen könne wie viel Lösungen es gibt
Da haben wir die Informationen mit den vorderen Berechnungen ausgegeben
Hier sahen wir ob es sich um eine Gerade zur Y-Achse handelt wenn nicht dann ist es eine Quadratische
Gleichung.
4
3.button
Private Sub CommandButton15_Click()
x = MsgBox("Schnittpunkt der y-Achse : (0," & Cells(4, 6).Value & ")", vbInformation)
End Sub
Der Schnittpunkt ist c der Funktion
4. Button
Private Sub CommandButton16_Click()
a = Cells(7, 2).Value
b = Cells(7, 4).Value
c = Cells(7, 6).Value
x = InputBox("x-Wert:")
x = CDbl(x)
y=a*x^2+b*x+c
x = MsgBox("Y-Wert: " & y, vbInformation)
End Sub
Parabel | 28.04.2008
Wir sollten x kenne um y zu berechnen
Ausgabe
5
5. Button
Private Sub CommandButton17_Click()
a = Cells(7, 2).Value
b = Cells(7, 4).Value
c = Cells(7, 6).Value
y = InputBox("Y-Wert:")
c = c - CDbl(y)
D=b^2-4*a*c
If D < 0 Then
ElseIf D = 0 Then
x1 = -b / (2 * a)
x = MsgBox("x-Wert: " & x1, vbInformation)
Else
x1 = (-b + Sqr(D)) / (2 * a)
x2 = (-b - Sqr(D)) / (2 * a)
x = MsgBox("x-Werte: " & x1 & "/ " & x2, vbInformation)
Hier muss man die Diskriminante berechnen um zu schauen wie viel Lösungen es gibt
Man muss den Y Wert einsetzen um x heraus zu bekommen
Hier wird x mit der Mitternachtsformel berechnet und ausgegeben
Parabel | 28.04.2008
Dasselbe machen wir mit der Funktion 2 Wo wir nur bei Cells eine andere Position der Werte a b c nehmen. Wir
nehmen die werte der Funktionsgleichung2.
6
Danach programmieren wir den Schnittpunkt der Funktion 1 und 2
Private Sub CommandButton2_Click()
a = Cells(7, 9).Value - Cells(7, 2).Value
b = Cells(7, 11).Value - Cells(7, 4).Value
c = Cells(7, 13).Value - Cells(7, 6).Value
If a <> 0 Then
D=b^2-4*a*c
If D < 0 Then
x = MsgBox("Die Funktionen haben keinen Schnittpunkt!!!!!!", vbInformation)
ElseIf D = 0 Then
x1 = -b / (2 * a)
y1 = Cells(7, 2).Value * x1 * x1 + Cells(7, 4).Value * x1 + Cells(7, 6).Value
x = MsgBox("Schnittpunkt: (" & x1 & "/" & y1 & ")", vbInformation)
Else
x1 = (-b + Sqr(D)) / (2 * a)
x2 = (-b - Sqr(D)) / (2 * a)
y1 = Cells(7, 2).Value * x1 * x1 + Cells(7, 4).Value * x1 + Cells(7, 6).Value
y2 = Cells(7, 2).Value * x2 * x2 + Cells(7, 4).Value * x2 + Cells(7, 6).Value
x = MsgBox("Schnittpunkte: (" & x1 & "/" & y1 & "), (" & x2 & "/" & y2 & ")", vbInformation)
End If
ElseIf b = 0 And c <> 0 Then
x = MsgBox(" ERROR: Der Schnittpunkt kann nicht berechnet werden!", vbInformation)
ElseIf b = 0 And c = 0 Then
x = MsgBox("!!Die Parabeln sind gleich!!", vbInformation)
Else
x1 = -c / b
y1 = Cells(7, 2).Value * x1 * x1 + Cells(7, 4).Value * x1 + Cells(7, 6).Value
x = MsgBox("Schnittpunkt: (" & x1 & "/" & y1 & ")", vbInformation)
End If
End Sub
Parabel | 28.04.2008
Hier müssen wir wieder schauen wie viel Lösungen die Funktion hat und danach ausgeben
In diesem Abschnitt rechnen wir die 2 Funktionen gleichgesetzt und xy berechnet
Zum Schluss noch die Änderungen der Diagrammachsen
Wo wir ein Makro aufzeichnen wie wir das Letztemal gemacht haben. Wir Starten die Aufzeichnung und ändern
die Diagrammachsen. Danach Starte ich Visual Basic uns schau mir das Modul an:
7
Ich kopiere Das Aufgezeichnete in den Button und ändere folgende Sachen:
ActiveSheet.ChartObjects("Diagramm 5").Activate
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScale = xmin
.MaximumScale = xmax
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.Axes(xlValue).MajorGridlines.Select
ActiveChart.Axes(xlCategory).Select
Tabelle3.Cells(2, 3).Value = ymin
Parabel | 28.04.2008
Private Sub CommandButton1_Click()
xmin = InputBox("Geben Sie das Minimum der x-Achse ein")
xmax = InputBox("Geben Sie das Maximum der x-Achse ein")
ymin = InputBox("Geben Sie das Minimum der y-Achse ein")
ymax = InputBox("Geben Sie das Maximum der y-Achse ein")
Tabelle3.Cells(2, 1).Value = xmin
Tabelle3.Cells(2, 2).Value = xmin
8
Tabelle3.Cells(2, 4).Value = ymin
With ActiveChart.Axes(xlCategory)
.MinimumScale = ymin
.MaximumScale = ymax
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
Ich erstelle für xmin xmax ymin ymax jeweils eine Inputbox wo ich dann später die Werte der Achsen ändern
kann
Danach bestimme ich ein Ort wo ich die werte Festhalten kann in diesem Fall Tabelle 3
Danach Füge ich die Aufzeichnung ein und schreibe statt der Werte xmin xmax ymin ymax.
Parabel | 28.04.2008
Ergebniss:
Siehe Mappe 14542
9
Herunterladen