Entwickler-Ecke
Sonstiges (Delphi) - pq-Formel
01Detlef - Mi 02.04.03 13:55
Titel: pq-Formel
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.Button1Click(Sender: TObject); var p, q, r, s : Integer; d, e, x1, x2 : Extended; begin p:= strtoint(edit1.text); q:= strtoint(edit2.Text);
d:= (sqr(p)/4)+(-1*q);
if d < 0 THEN showmessage ('Es gibt keine Lösung');
e:= sqrt(d);
if d = 0 THEN x1:= ((p*-1)/2)+ e; r:= round(x1); Label3.Caption:= inttostr(r);
if d > 0 THEN x1:= ((p*-1)/2)+ e; x2:= ((p*-1)/2)- e; r:= round(x1); s:= round(x2); Label3.Caption:= inttostr(r); Label4.Caption:= inttostr(s);
end; |
hallo,
das ist ein Verfahren, um quadratische Gleichungen zu lösen, jedoch zeigt mein Compiler immer einen Fehler an! Er compiliert es, doch wenn ich Zahlen z.B p=3 und q=2 eingegeben habe, erscheint immer Project1.exe raised exeption class ElnvalidOp with message 'Invalid floating point operation'
Was hat das zu bedeuten, habe ich irgendeinen Fehler drin? Außerdem, kann ich irgendwie auch die genauen Werte ausgeben oder muss ich dann auch x1 und x2 als real Varibalen nehmen?
Danke Detlef
UGrohne - Mi 02.04.03 14:15
Habs mir jetzt net genau durchgeschaut, aber wenn das der Fall ist für eine quadratische Gleichung, dann kann es vorkommen, dass die Diskriminante kleiner 0 ist, und dann kannste ja die Wurzel net draus ziehen. Oder der Nenner ist 0, dann geht das auch net.
//Nachtrag:
Dein kompletter Code hat Lücken (selbst geschrieben? :wink:). Ich mach das gleich vielleicht kurz. Auf jeden Fall, muss Du bei mehreren Anweisungen nach dem if-teil diese mit begin und end einschließen, da liegt wohl der Fehler.
Außerdem rechnest du d und gibst danach ne Warnung aus, wenns kleiner 0 ist. Aber trotzdem rechnest Du dann die Wurzel aus d aus, das geht doch nicht, dakommt schon eine Fehlermeldung her
UGrohne - Mi 02.04.03 14:24
Achja, gibt es eine andere Formel als die Mitternachstformel um quadratische Gleichungen zu lösen?
Denn wenn ich Deinen Code mal in eine mathematische Formel umforme, kommt folgendes raus:
x1,x2= (-b/2) +/- sqrt(b^2/4 - c)
Also so eine Formel hab ich dafür noch nie gesehn
01Detlef - Mi 02.04.03 14:49
hi,
die Formel ist aber so richtig, auch wenn du sie noch nie gesehen hast!!
x1,x2= -p/2 +- sqrt (p^2/4 - q) => pq-Formel halt!!!!!
ok, das Programm läuft jetzt, habe das Wurzelziehen nach weiter hinter versetzt!;) Es läuft auf jeden Fall!
Jetzt noch ein Problem:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var p,q,y: Extended; i : integer; begin
FOR i:=1 to 5 DO BEGIN STRINGGRID1.Cells[0,i]:= Inttostr(i); y:= (i*i)+(p*i)+(q);
STRINGGRID1.CELLS[1,i]:= floattostr(y); end;
end; |
Ich möchte, dass p und q beibehalten werden, von der ersten Eingabe und in einer Tabelle die Funktionswerte der Werte x=1 bis x=5 berechnet werden! Kommt auch wieder diese Fehlermeldung!
Danke Detlef
01Detlef - Mi 02.04.03 17:07
alles in Ordnung, habe den Fehler selber behoben!
detlef
tommie-lie - Mi 02.04.03 17:38
Dann wäre es nett und auch zu zeigen, was falsch war ;-)
Linedance - Fr 04.04.03 10:16
Titel: pq-Formel
für quadratische Gleichungen gibt es zwei Lösungsansätze bezüglich der Nullstellen:
1. die allgemeine Form für y=ax²+bx+c
Nullstellen:
x1=(-b+sqrt(b^2-4ac))/2a
x2=(-b-sqrt(b^2-4ac))/2a
D= b^2-4ac
2. den Spezialfall für a=1: y=x²+px+q
mit den Nullstellen
x1=-p/2+sqrt(D)
x2=-p/2-sqrt(D)
D=p^2/4-q
Nullstellenbewertung erfolgt über die Diskriminante D
Gruß M.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!