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