Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Es ist nicht null!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
20.02.2004, 09:52 Uhr
~Planlos.Due-Cd-
Gast


Hallo,
ich will nullstellen audrechnen und bekomme aber keine nullstellen heraus...
die nachkomma stellen werden nie null bei mir... habe ich vllt den falschen datentypen benutzt?

C++:
#include "stdafx.h"
#include<stdio.h>

int main()
{
float i, a, b, c, d, erg, x1, x2, x3, x;

    printf("a eingeben: ");
        scanf("%f", &a);
    printf("b eingeben: ");
        scanf("%f", &b);
    printf("c eingeben: ");
        scanf("%f", &c);
    printf("d eingeben: ");
        scanf("%f", d);

for(i=-0.001; i<=1; i=i+0.000001)  
    {
    x=(i*i*i);    x3=x*a;
    x=(i*i);    x2=x*b;
        x1=i*c;
          erg=x3+x2+x1+d;
    printf("%f  %0.50f\n",i, erg);
    }
    
    return 0;
}




wenn mir einer nen tip geben kann wäre ich dankbar...
ciao planlos.duo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.02.2004, 10:18 Uhr
virtual
Sexiest Bit alive
(Operator)


Fließkoma zahlen arbeiten sehr ungenau. Die ungenausten sind float, etwas genauer ist double, das genaueste ist long double. Wenn das noch nicht reicht, mußt du eine dieser Unzähligen Libraries nehmen, die beligig genaue Fließkomma zahlen handeln können-
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2004, 10:31 Uhr
Lola



Ist die math.h da vielleicht sinnvoll?
--
The more you study - The more you know
The more you know - The more you forget
The more you forget - The less you know

Why study!?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.02.2004, 11:24 Uhr
Pablo
Supertux
(Operator)



Zitat:
Lola postete
Ist die math.h da vielleicht sinnvoll?

Nein, weil es keine Funktionen aufgerufen werden, die in math.h enthalten sind.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.02.2004, 11:57 Uhr
ao

(Operator)


Der Algorithmus ist falsch, denn er geht davon aus, dass man die Ergebnisse exakt errechnen kann. Das kann man nicht, weil bei Verwendung von float oder double immer Rundungsfehler entstehen (können).

Besser wäre, nach den Stellen zu suchen, wo die Funktionswerte das Vorzeichen wechseln (dazwischen muss eine Nullstelle liegen) und dann in diesem Gebiet die Suche zu verfeinern.

Die Genauigkeit beträgt bei gängigen Compilern 6 Stellen bei float und 15 Stellen bei double. Wenn dein Ergebnis diese Genauigkeit erreicht hat, kannst du abbrechen, besser wirds nicht mehr.

Und noch was: deine Berechnung der Funktionswerte ist etwas umständlich und gewöhnungsbedürftig. Warum schreibst du es nicht einfach geradeaus herunter:

C++:
for (x = 0; x <= 1; x += 0.0001)
{
    y = a * x * x * x + b * x * x + c * x + d;
}


oder, ein bisschen optimiert:

C++:
    y = d + x * (c + x * (b + x * a));



ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.02.2004, 12:00 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Besser wäre, nach den Stellen zu suchen, wo die Funktionswerte das Vorzeichen wechseln (dazwischen muss eine Nullstelle liegen) und dann in diesem Gebiet die Suche zu verfeinern.


Ohne jetzt Klugscheissen zu wollen...
Besser wäre es vielleicht zu sagen das dazwischen mindestens eine Nullstelle zwischen liegen muss...


Bearbeitung:

ach so nochwas..auch z.b. x^2 hat ne nullstelle ohne das ein vorzeichenwechsel stattfindet...sollte man beim implementieren auch berücksichtigen


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 20.02.2004 um 12:04 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.02.2004, 16:30 Uhr
Hans
Library Walker
(Operator)



Zitat:
Windalf postete
Ohne jetzt Klugscheissen zu wollen...
Besser wäre es vielleicht zu sagen das dazwischen mindestens eine Nullstelle zwischen liegen muss...

Bearbeitung:
ach so nochwas..auch z.b. x^2 hat ne nullstelle ohne das ein vorzeichenwechsel stattfindet...sollte man beim implementieren auch berücksichtigen


womit wir bei den komplexen Zahlen wären...
Das ist zwar richtig, aber dadurch wird das Programm noch komplizierter, als es eh schon ist. Zumindest wenn man die komplexe Rechnung mit einbaut.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.02.2004, 18:04 Uhr
Lola



Wieso komplexe Zahlen?

Windalf hat schon recht. Aber wenn es darum geht nur zu ermitteln, wo die Nullstellen liegen und nicht wieviele Nullstellen es bei der Funktion gibt, dann ist das Wurscht. Man muss ja nicht übertreiben.
--
The more you study - The more you know
The more you know - The more you forget
The more you forget - The less you know

Why study!?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.02.2004, 18:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Warum nicht einfach ne "stinknormal" die Nullstellen ausrechnen?

also mit dem "f(x) = 0"-Ansatz????
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
20.02.2004, 22:45 Uhr
ao

(Operator)



Zitat:
FloSoft postete
Warum nicht einfach ne "stinknormal" die Nullstellen ausrechnen?

Meinst du etwa auf Papier? Wie uncool! ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: