![]() |
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ß |
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. |
Re: polynom fläche berechnen
Da ich jetzt nicht die mathematische Formel zu Polynomflächenberechnung kenne, könntest du sie evtl posten?
|
Re: polynom fläche berechnen
Zitat:
:) |
Re: polynom fläche berechnen
Da es ja offensichtlich um Hausaufgaben geht: Nein!
Ihr habt es ja noch nicht mal versucht :wink: |
Re: polynom fläche berechnen
Zitat:
|
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ß |
Re: polynom fläche berechnen
das ist ja nicht mehr als im ersten beitrag!
|
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. |
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 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz