Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi polynom fläche berechnen (https://www.delphipraxis.net/35013-polynom-flaeche-berechnen.html)

tobiasw 1. Dez 2004 14:20


polynom fläche berechnen
 
hi,

brauche unbedingt eure Hilfe denn ich komm nicht mehr weiter. Ich soll ein Prog schreiben welches für ein Polynom von Grad kleiner oder Gleich 3 die Fläche unter der Kurve in einem bestimmten Intervall nach der Rechtekregel berechnet.
Mein Prozedur sieht schon mal so aus.
procedure fläaeche (a3,a2,a1,a0,ug,og:double; var ergebnis:double);
Ug und Og sind die untere und obere Grenze

Ich hoffe jemand hat dafür eine Lösung für mich.

Gruß

Mario 1. Dez 2004 14:34

Re: polynom fläche berechnen
 
Delphi Architect und dann diese Frage :oops:

Ich würde die Funktion einfach von Hand integrieren und dann die Formel im konkreten Fall fix einbinden.

Ultimator 1. Dez 2004 14:36

Re: polynom fläche berechnen
 
Da ich jetzt nicht die mathematische Formel zu Polynomflächenberechnung kenne, könntest du sie evtl posten?

axelf98 1. Dez 2004 14:39

Re: polynom fläche berechnen
 
Zitat:

Zitat von Mario
Ich würde die Funktion einfach von Hand integrieren und dann die Formel im konkreten Fall fix einbinden.

Es soll aber die Rechteckregel angewendet werden! Das ist ein iteratives Verfahren, das von Unterteilung in Rechtecke ausgeht. Es gibt auch noch die Trapezregel, die in Trapeze zerlegt. Du solltest aber noch die Genauigkeit als Parameter übergeben (Wie viele Rechtecke sollen berechnet werden)
:)

Mario 1. Dez 2004 14:46

Re: polynom fläche berechnen
 
Da es ja offensichtlich um Hausaufgaben geht: Nein!

Ihr habt es ja noch nicht mal versucht :wink:

ibp 1. Dez 2004 15:12

Re: polynom fläche berechnen
 
Zitat:

Zitat von axelf98
Es soll aber die Rechteckregel angewendet werden! Das ist ein iteratives Verfahren, das von Unterteilung in Rechtecke ausgeht.

du solltest ein "delta" als schrittweite übergeben...

tobiasw 1. Dez 2004 16:38

Re: polynom fläche berechnen
 
also das ganze ist ja ne Geradengleichung durch den Nullpunkt
Die Formel für a1 wird berechnent mit gu*go-gu/3, a2=(gu+go-gu/3)*go-gu/3 und und a3=(gu+2*go-gu/3)*go-gu/3.

mein Prozedure würde so aussehen (die erste zeile denn weiter weiß ich net)
proceddure flaeche (a3,a2,a1,a0,ug,og:double; var ergebnis:double);

Gruß

ibp 1. Dez 2004 18:58

Re: polynom fläche berechnen
 
das ist ja nicht mehr als im ersten beitrag!

tobiasw 2. Dez 2004 14:37

Re: polynom fläche berechnen
 
hier die Lösung zu meinem Problem

Delphi-Quellcode:
interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Flaechenberechnung(a3, a2, a1, a0, ug, og : real; var erg : real; Bool_Flaeche : bool);
const Anzahl_intervalle = 10000000 ;
var x : real; i : integer;
begin
  erg := 0;
  x:= ug;
  for i:= 0 to Anzahl_intervalle-1 do
  begin
    if bool_Flaeche = true then
      erg := erg + (og-ug)/Anzahl_intervalle* (a3*x*x*x + a2*x*x + a1*x + a0)
    else
      erg := erg + (og-ug)/Anzahl_intervalle* abs(a3*x*x*x + a2*x*x + a1*x + a0);
    x:= x + (og-ug)/Anzahl_intervalle;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var ergebnis : real;
begin
flaechenberechnung(strtofloat(edit1.Text), strtofloat(edit2.Text), strtofloat(edit3.Text), strtofloat(edit4.Text), strtofloat(edit5.Text), strtofloat(edit6.Text), Ergebnis, CH_negFlaeche.checked);
Edit7.Text:= FloatToStrF( Ergebnis, ffFixed, 11,4);
end;

end.

Mario 2. Dez 2004 20:00

Re: polynom fläche berechnen
 
Net schlecht :)

Was würde ich anders machen:

Real gegen Double oder bei noch größerer Genauigkeit gegen Extended ersetzen. Ersteres ist Formsache, zweites würde ich machen, weil Du bei 10.000.000 Durchläufen schon ein paar Rundungsfehler aufsummieren könntest.

10.000.000 Durchläufe? Ganz schon viel, oder? Ich würde evtl. die Durchläufe aus dem Begin/Ende bestimmen. Wenn Du jetzt nur einen extrem kleinen Bereich hast und den in 10.000.000 Teile unterteilst, rechnest Du sonst mit praktisch Null.

Du berechnest immer wieder:
(og-ug)/Anzahl_intervalle
Das solltest Du nur einmal machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz