Autor Beitrag
Nippey
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 14.09.06 21:28 
hi leute meine bisheriger versuch sieht so aus:
ausblenden Delphi-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:
var
  Form1: TForm1;
  vObergrenze : ReAl;
  vUntergrenze : rEaL;
  vSchrittweite : integer;
implementation

{$R *.dfm}

procedure TForm1.btn_GOClick(Sender: TObject);
var
vX, vY : real;
begin
vObergrenze := strtofloat (edt_1.text);
vUntergrenze := strtofloat(edt_2.text);
vschrittWeite := strtoint(edt_3.text);
vX := vUntergrenze;
repeat
 begin
 vY := vX + vSchrittweite;
if vX > (vObergrenze - vSchrittweite)
then (if vY = 0 then lbl_0.caption := strtofloat (vY) else lbl_0.Caption := strtofloat ( 'Keine nullstelle'))
else  vX := vX + vSchrittweite;
end
until
vY = 0 ;
end;

end.



ich kapier nicht warum es nicht funktioniert.

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Do 14.09.2006 um 21:44
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Do 14.09.06 21:44 
Schau dir doch mal an, was du tust:

Du erhöhst vx immer um ne schrittweite. Und wenn vx größer als die Obergrenze - eine Schrittweite ist dann guckst du ob vy=0 ist, wobei vy immer vx+Schrittweite ist und erst dann gibst du was aus in deinem Label???

Dann könntest du auch immer schauen ob vx= obergrenze-schrittweite ist. Das ist einfach kein Kriterium für eine Nullstelle.

Desweiterenist das ganze Konzept überhaupt nicht klar: du willst offenbar überprüfen ob zwischen obergrenze und untergrenze eine Nullstelle liegt?? =>

ausblenden Delphi-Quelltext
1:
2:
3:
4:
function zerobetween(oben,unten:real):boolean;
begin
   result:=(oben>0and (unten<0);
end;
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 14.09.06 21:45 
Hallo!

Bitte beschreibe, was Du überhaupt machen willst und was daran nicht funktioniert. Wenn Du möchtest, dass andere Zeit für Dich aufwenden, indem sie Dir antworten, solltest auch Du Zeit aufwenden, um Deine Frage möglichst präzise und klar zu stellen.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nippey Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Fr 15.09.06 07:28 
user profile iconChristian S. hat folgendes geschrieben:
Hallo!

Bitte beschreibe, was Du überhaupt machen willst und was daran nicht funktioniert. Wenn Du möchtest, dass andere Zeit für Dich aufwenden, indem sie Dir antworten, solltest auch Du Zeit aufwenden, um Deine Frage möglichst präzise und klar zu stellen.

Grüße
Christian


jA ich hab den auftrag (von der schule) dass ich die nullstlle der funktin Y=X mit einem delphi programm erechnen soll aber es läuft bei mir immer ins unendliche und dann hängt er sich auf.
Einloggen, um Attachments anzusehen!
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Fr 15.09.06 13:51 
Die Nullstelle einer Funktion Y=X liegt bei x=0 Was kann man denn daran berechnen? Irgendwie dumm aber nun mal allgemein. Nullstellen kann man auf verschiedene Arten berechnen Intervallschachtelung Newtonverfahren etc.

Für eine auf [a,b] stetige Funktion f ex. eine Nullstelle zwischen c und d mit a <= c < d <= b wenn (f(c)<0 und f(d)>0) oder (f(c)>0 und f(d)<0) (OK die konstante Funktion f(x)=0 ist hierin nicht inbegriffen machts aber nur komplizierter)

Algorithmus:

nimm a und b und untennähernd obennähernd

if (meinefunktion(untennähernd)<0) and (meinefunktion(obennähernd)>0) or umgekehrt
then begin
//dazwischen ist Nullstelle grenzen neu setzen.
end;
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 15.09.06 14:17 
machs doch einfach algebraisch, wie mans in der Schule lernt: bei f(x)=y ists natürlich doof, aber die Bedingung für ne Nullstelle ist doch, das f(x)=0 ist, oder. also musst du nur kucken, wann y=0 ist. natürlich wenn y 0 ist *g* aber bei einer anderen Funktion hast du z.B. f(x)=120x+10
aaalso: 120x+10=0 => 120x=-10 => *grübel* hmmm, y=-0.8333333...

Als Code würde ich das so machen:


(Bei einer einfachen Gleichung im Beispiel mit + also z.B. y=120x+10)

1) Position von + finden => einzelne Teile (120x und 10) in Variablen schreiben (dynamisches array?) im Bsp als a=120x und b=10

2) "Alles mit x auf eine Seite" => ein minus vor der variable mit einem x drin => a:=-a => a=-120x.

3) x aus a rauschneiden (a=-120) und dann b durch a teilen => ergebnis.


(Bei einer einfachen Gleichung im Beispiel y=3x)

nur schritt 3) aus obigem beispiel

bei quadratischen gleichungen natürlich schwerer, aber man muss einfach so vorgehen, wie man es auf einem Zettel tun würde.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)