allgemeine quadr. Funktionen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

NForcer

Betreff: allgemeine quadr. Funktionen

BeitragSo, Dez 05, 2004 2:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin Leutz,
ich hab mal aus langeweile wieder ein bisschen rumprogrammiert, ich hab nun nicht diiee große Erfahrung mit dem Programmieren ;), aber ich finde, mir ist mein Projekt, bis zum jetztigen Zeitpunkt relativ gut gelungen, würde jedoch mal Tips und Tricks von den Erfahrenen Profis einholen, wie man das hätte besser machen können etc.

Also, zu meinem Projekt:
Ich wollte mir ein Programm schreiben, das aus der allgemeinen quadratischen Funktion die Scheitelpunktsform rausformt und den Scheitelpunkt einer Funktion f(x) angibt und anschließend zeichnet mir das Programm den Graphen der Funktion ;). *soweit habe ich es bisher*

Ich werde da noch weiter dran arbeiten und möglichst bedienerfreundlich gestalten, aber ich weiss nicht, was ich da jetzt noch so alles machen könnte,sodass es besser aussieht...
(als nächstes werde ich wohl mal die Schnittpunkte mit der X und Y-Achse farbig markieren usw. , also schreibt mal, was ihr noch so alles haben wollen würdet)

erstmal der Code:
Code: [AUSKLAPPEN]

; allgemeine quadratische Gleichung:        f(x) = ax² + px + q
; soll im 1. Schritt zur Scheitelpunktsform f(x) = a*(x-Xs)² + Ys umgeformt werden
; und Anschließend die Koordinaten des Scheitelpunktes S(Xs/Ys) ausgeben

Graphics 800,600,32,3
SetBuffer BackBuffer()

Print "Die allgemeine Quadratische Gleichung: ax² + px + q"
Print "Hier können sie nun die Scheitelpunktsform,den Scheitelpunkt, und die Nullstelle anzeigen lassen"
Global A# = Input("Geben sie den Streckfaktor 'a' an: ")
Global P# = Input("Geben sie 'p' an: ")
Global Q# = Input("Geben sie 'q' an: ")

;weitere Globals
Global P_ausgeklammert#
Global Q_ausgeklammert#
Global Quadr_erg#
Global Gesamt_abz#
Global Xs#
Global Ys#

Allg_Quadr_Funkt() ;Hier wird einfach nochmal zur Kontrolle die allgemeine Quadratische Funktion angezeigt.
Ausklammern()      ;Im nächsten schritt muss der Streckfaktor (a) ausgeklammert werden um anschließend
Scheitelpunksform() ;die Scheitelpunksform a(x-d)²+e Formel auszurechnen, mithilfe der quadratischen Ergänzung... (Mathe 9.Klasse)
Scheitelpunkt()    ;1. Endergebnis


Repeat
;Cls
Zeichnen()
;mx = MouseX()
;my = MouseY()
;Text mx,my, mx+","+my
Flip
Until KeyHit(1)


Function Allg_Quadr_Funkt()

If P# > 0 And Q# > 0
   Print "Ihre eingebene Gleichung lautet: "+A#+"x²"+" + "+P#+"x"+" + " + Q#
ElseIf P# > 0 And Q# < 0
   Print "Ihre eingebene Gleichung lautet: "+A#+"x²"+" + "+P#+"x"+" - " + Q#*(-1)
ElseIf P# < 0 And Q > 0
   Print "Ihre eingebene Gleichung lautet: "+A#+"x²"+" - "+P#*(-1)+"x"+" + " + Q#
ElseIf P# < 0 And Q < 0
   Print "Ihre eingebene Gleichung lautet: "+A#+"x²"+" - "+P#*(-1)+"x"+" - " + Q#*(-1)
EndIf

End Function


Function Ausklammern()

;If A = 1 Then
If A = 0 Then Print "Sie haben eine lineare Gleichung eingegeben, kein bock da was auszurechnen!"

;If A > 1 Or A < 0
P_ausgeklammert# = P# / A#
Q_ausgeklammert# = Q# / A#

If P_ausgeklammert# > 0 And Q_ausgeklammert# > 0
   Print "Die ausgeklammerte Gleichung lautet: "+A#+"[x²"+" + "+P_ausgeklammert+"x "+" + "+Q_ausgeklammert+"]"
ElseIf P_ausgeklammert# > 0 And Q_ausgeklammert# < 0
   Print "Die ausgeklammerte Gleichung lautet: "+A#+"[x²"+" + "+P_ausgeklammert+"x "+" - "+Q_ausgeklammert*(-1)+"]"
ElseIf P_ausgeklammert# < 0 And Q_ausgeklammert# > 0
   Print "Die ausgeklammerte Gleichung lautet: "+A#+"[x²"+" - "+P_ausgeklammert*(-1)+"x "+" + "+Q_ausgeklammert+"]"
ElseIf P_ausgeklammert# > 0 And Q_ausgeklammert# > 0
   Print "Die ausgeklammerte Gleichung lautet: "+A#+"[x²"+" - "+P_ausgeklammert*(-1)+"x "+" - "+Q_ausgeklammert*(-1)+"]"

EndIf
 
End Function

Function Scheitelpunksform()

Quadr_erg# = P_ausgeklammert# / 2
Quadr_abz# = (Quadr_erg# * Quadr_erg#) * (-1)
Gesamt_abz# = A# * (Quadr_abz# + Q_ausgeklammert#)

If Quadr_erg# > 0 And Gesamt_abz# > 0
   Print "Scheitelpunktsform: "+A#+"(x"+" + "+Quadr_erg#+")²"+" + "+Gesamt_abz#
ElseIf Quadr_erg# > 0 And Gesamt_abz# < 0
   Print "Scheitelpunktsform: "+A#+"(x"+" + "+Quadr_erg#+")²"+" - "+Gesamt_abz#*(-1)
ElseIf Quadr_erg# < 0 And Gesamt_abz# > 0
   Print "Scheitelpunktsform: "+A#+"(x"+" - "+Quadr_erg#*(-1)+")²"+" + "+Gesamt_abz#
ElseIf Quadr_erg# < 0 And Gesamt_abz# < 0
   Print "Scheitelpunktsform: "+A#+"(x"+" - "+Quadr_erg#*(-1)+")²"+" - "+Gesamt_abz#*(-1)
EndIf
End Function

Function Scheitelpunkt()

Xs# = Quadr_erg#*(-1)
Ys# = Gesamt_abz#

Print "Der Scheitelpunkt liegt auf: P("+Xs+"/"+Ys+")"
End Function

Function Zeichnen()

For i1 = 1 To 3
   Line 200,i1+359,600,i1+359 ;Erstellen der X-Achse
Next

For i2 = 1 To 3
   Line i2+399,100,i2+399,550 ;Erstellen der Y-Achse
Next

For i3 = 0 To 40
    Line i3*10+200,357, i3*10+200,364  ;Skalierung auf der X-Achse!
Next

For i4 = 0 To 45
   Line 397,i4*10+100  , 404,i4*10+100 ; Skalierung auf der Y-Achse
Next


For ix = -5 To 4
   Line (ix*10)+(400+Xs*10),(A*ix^2)*-10+360+Ys*10 ,  (ix+1)*10+400+Xs*10,(A*(ix+1)^2)*-10+360+Ys*10 ;Zeichnen der Funktion f(x)=ax²+px+q
Next

End Function




Wie man sehen kann, sieht der Graph nicht besonders toll aus...
vllt. weiss jemand von euch, wie man ihn etwas besser abwandeln kann, so das er etwas mehr nach einer Parabel aussieht.

als ich angefangen habe darüber nachzudenken, wie ich das mache, hab ich erstmal gar nicht über die Pixel nachgedacht - bis mir aufgefallen ist, das der Graph ziemlich beschissen aussieht, wenn man ihn nicht mit dem Faktor xi^2*10 skaliert (wie der Graph eben angelegt ist, dadurch entstehen aber leider sone geraden Linien von Punkt zu Punkt :(.

Joar, das wars erstmal, würde mich über Antworten freuen.

mfG NForcer

edit: hab noch vergessen das (+Ys*10) an den Graphen zu legen ;) nun sollte es besser gehn.

Aber dabei fiel mir jetzt noch ein, findet ihr die Skalierung so in Ordnung?
sollte ich noch eine "Normalparabel" in einer anderen Farbe zum vergleich auf den Koordinatenursprung schreiben lassen?

stfighter01

BeitragSo, Dez 05, 2004 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würd die achsen nur 1 dick machen und in einer anderen farbe.
ausserdem die schrift löschen bevor du den graphen zeichnest.

zudem kann ich aber keinen grossen nutzen in dem tool sehen Twisted Evil



mfg stfighter
Denken hilft!

Seoman

BeitragSo, Dez 05, 2004 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Für Mathehausaufgaben "Hab ich auch alles richtig geamcht" XD
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

Triton

BeitragSo, Dez 05, 2004 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube das würde viel einfacher (zumindest schneller..) durch das Formen der Ableitungen und der bildung des Extremwertes gehen Smile

Dann könnte man das auch auf beliebige Funktionen anwenden, nicht nur Quadratische.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Seoman

BeitragSo, Dez 05, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde vllt auch nicht Print benutzen, das ist nicht schön Wink Nimm Text...
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink
 

Darren

BeitragMo, Dez 06, 2004 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
und für mehr werte die koords berechnen um eien sauberen graphen zu erhalten va in der nähe des scheitels kenn mich noch nicht so mit funktionen aus bin erst in der 9.klasse wir ham auch grade quadratische funktionen dran
MFG Darren

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group