AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Newton-Verfahren und Abweichungen

Ein Thema von xVaskii · begonnen am 19. Sep 2016 · letzter Beitrag vom 19. Sep 2016
Antwort Antwort
xVaskii

Registriert seit: 21. Apr 2016
15 Beiträge
 
Delphi 7 Personal
 
#1

Newton-Verfahren und Abweichungen

  Alt 19. Sep 2016, 18:57
Delphi-Version: 7
Hey Community.

Wollte wissen, wie ich in meinem momentanen Programm es so machen kann, dass mit dem eps Wert die jeweilig eingetragene (im Edit Feld) Zahl von "x" und "xalt" ausgewählt werden. Also sobald die Abweichung den Wert beträgt, soll die Schleife aufhören.

Danke

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, math, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Image2: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Button1: TButton;
    Edit7: TEdit;
    Memo1: TMemo;
    Edit3: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    procedure Button1Click(Sender: TObject);
 
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
  function Newton(a,b,c,d,e,x:real):real;

  begin
    result:=x-((a*(x*x*x*x)+b*(x*x*x)+c*(x*x)+d*x+e) / (4*a*(x*x*x)+3*b*(x*x)+2*c*x+d));
  end;



{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,x,ergebnis,xalt,eps: real;
count : integer;
begin
  count:= 1;
  xalt:= 0;

  a:=strtofloat(edit1.text);
  b:=strtofloat(edit2.text);
  c:=strtofloat(edit3.text);
  d:=strtofloat(edit4.text);
  e:=strtofloat(edit5.text);
  x:=strtofloat(edit6.text);
  eps:=strtofloat(edit7.text);

  repeat

    xalt:= x;
    ergebnis:=Newton(a,b,c,d,e,x);
    x:= ergebnis;
    memo1.lines.add(inttostr(count) +': ' +floattostr(ergebnis));
    count := count+1;

  until count =101;
  if xalt >= eps then
  label8.Caption := floattostr(x);
end;

end.
André Thiele
  Mit Zitat antworten Zitat
Mathematiker
(Gast)

n/a Beiträge
 
#2

AW: Newton-Verfahren und Abweichungen

  Alt 19. Sep 2016, 20:05
Hallo,
Code:
eps:=strtofloat(edit7.text);
  repeat
    xalt:= x;
    ergebnis:=Newton(a,b,c,d,e,x);
    x:= ergebnis;
    memo1.lines.add(inttostr(count) +': ' +floattostr(ergebnis));
    count := count+1;
  until abs(x-xalt)<eps;
Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
xVaskii

Registriert seit: 21. Apr 2016
15 Beiträge
 
Delphi 7 Personal
 
#3

AW: Newton-Verfahren und Abweichungen

  Alt 19. Sep 2016, 20:19
Es werden trotzdem 100 angezeigt. Die letzten 80 stk wiederholen sich.

Ne Idee?
André Thiele
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: Newton-Verfahren und Abweichungen

  Alt 19. Sep 2016, 22:39
Wie groß ist denn dein eps? Wenn das zu groß ist, macht er natürlich alle 100 Iterationen. Du kannst ja mal schauen, was am Ende noch als Differenz bleibt.
Intuitiv geraten wäre alles kleiner als 1e-9 sinnlos.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf