Autor Beitrag
Haiopai
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 06.09.08 17:28 
Hallo erstmal,

Ich stehe vor einem Problem: In unserem Informatik-Kurs arbeiten wir immoment an einem Programm das mit Polynomen umgehen soll. Dazu gab uns unser Lehrer eine Schablone, die wir vervollständigen sollten. Nun hänge ich jedoch schon seit Tagen an einer ganz bestimmten funktion, die anhand des x-wertes, der über den Parameter übergeben wird das Polynom "ausrechnen" soll. Ich habe leider keine Idee wie diese Funktion sussehen sollte. Könnte mir da vielleicht jemand von euch helfen? Besten Dank im Vorraus

ausblenden volle Höhe 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:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
unit UPolynome;

interface
uses SysUtils,Dialogs;
const maxgrad=10;

type
TPolynom=class
             private
                grad:integer;  // Grad des Polynoms grad <=maxgrad
                a:array[0..maxgrad] of real;    // Feld der Polynomkoeffizienten
              public
                 constructor create;  overload;
                 constructor create(n:integer);overload;
                 procedure setKoeffizient(index:integer;wert:real);
                 procedure setGrad(n:integer);
                 function get_funkwert(x:real):real;
                 function getKoeffizient(index:Integer):real;
                 function getgrad:integer;
                 function toString:string;
                 function diff:TPolynom;
             end;

implementation

constructor TPolynom.create;
// erzeugt ein Polynom des Grads 0 alle Koeffizienten gleich Null (leeres Polynom)
var i:Integer;
begin
     grad:=0;
     a[i]:=0;
end;

constructor TPolynom.create(n:integer);
// Erzeugt ein POlynom n-ten Grad und setzt zunächst alle Koeffizienten gleich 0
// Wenn n >maxgrad wird  ein leeres Polynnom 0-ten Grads erzeugt.
var i:Integer;
begin
     if n<=maxgrad then grad:=n
                   else grad:=0;
     a[i]:=0;
end;


procedure TPolynom.setGrad(n:integer);
// Setter-Methode für den Polynomgrad
begin
     if n <= maxgrad then grad:=n
                     else grad:=0;
end;


function TPolynom.getKoeffizient(index:Integer):real;
// liefert den Wert des Koeffizient a[Index} zurück
begin
     if index > grad then result:=0
                     else result:=a[index];
end;

function TPolynom.getgrad:integer;
// Getterfunktion für den Polynomgrad
begin
result:=grad;
end;
  
procedure TPolynom.setKoeffizient(index:integer;wert:real);
// Setter-Methode für die einzelnen Koefftizienten des Koeffizientenfelds a
// falls Index<=grad
begin
     if index <= grad then a[index]:=wert
                      else writeln ('Fehler: Angegebene Koeffizienten groesser als maxgrad!');
end;


function TPolynom.get_funkwert(x:real):real;
// Berechnet den Funktionswert des Polynoms an der Stelle x
var s,p:real;
    i,j:integer;
BEGIN
     result:=
END;
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Sa 06.09.08 20:04 
Hi du,

geh das array a einfach von vorne bis hinten durch und addiere die Werte der einzelnen Teile des Polynoms.

Also:

a[0]*x^0 + a[1]*x^2 +a[2]*x^3 etc.

(steht an Stelle a[0] der koeffizient vom x mit dem höchsten Exponentzen musst du das ganze natürlich umdrehen.)
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Sa 06.09.08 22:53 
Effizienter siehe hier.
Haiopai Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 08.09.08 13:02 
Titel: Problem gelöst
Also erstmal danke für eure Hilfe.
@Jann1k: deine Idee war auch die, die wir im Unterricht dann hatten

@nagel: Auch ein guter Hinweis, aber etwas zu komplex