Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Nullstellenberechnung

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 <
000
03.04.2004, 18:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zu schreiben ist folgende funktion die versucht eine nullstelle einer übergebenen funktion f in der nähe der stelle x zu berechenen


C++:
double nullstelle(double x,double(*f)(double)){....}



weiss nicht ob das so ein tolles rätsel ist aber eventuell kann man da ja noch ein folgerätsel draus machen....habs selber auch noch nicht geproggt...


C++:
double f(double x){return x*x-9;}//oder was auch immer
double nullstelle(double x,double(*f)(double)){...}

int main(){
printf("Vermutete Nullstelle: %.3f\n",nullstelle(1,f));
printf("x in f eingesetzt ergibt:%.3f\n",f(nullstelle(1,f)));
}


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

Dieser Post wurde am 03.04.2004 um 18:39 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.04.2004, 03:47 Uhr
kronos
Quotenfisch
(Operator)


ich weiß nicht ob das immer funktioniert:

C++:
double nullstelle(double x,double(*f)(double))
{
    double NS=0.0, NSnew;
    do
    {
        NS=NSnew;        
        NSnew=NS-f(NS)/((f(NS+0.2)-f(NS))/0.2);
    } while((0.0001<NSnew-NS)||(NSnew-NS<(-0.0001)));
    return NSnew;
}


--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.04.2004, 08:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hab ich auch so ausser das man aus while((0.0001<NSnew-NS)||(NSnew-NS<(-0.0001)));

while(fabs(NSnew-NS)>0.0001); machen kann

und NSnew=NS-f(NS)/((f(NS+0.2)-f(NS))/0.2);
schreibt sich mit leichter so NSnew=NS-f(NS)*0.2/(f(NS+0.2)-f(NS));
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.04.2004 um 08:43 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.04.2004, 10:22 Uhr
erpelqueen
Entlein


hä? von was für einer funktion denn?
ich meine quadratische Funktion x²... oder ne normale?
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.04.2004, 12:14 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@erpelquenn
von jeder beliebigen
du definiert vorher einfach eine und übegibst die dann der funktion nullstelle...
es ist also ein parameter der funktion wiederum selber eine funktion...
das nennt man dann eine funktion höherer ordnung
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.04.2004, 22:35 Uhr
kronos
Quotenfisch
(Operator)


ich würde sagen, newton hat gewonnen
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.04.2004, 22:05 Uhr
Belisar



Also wenn man auch die Ableitung der Funktion kennt, würde ich folgende Version schreiben. Müsste doch gehen oder?


Code:
double nullstelle(double x,double(*f)(double),double(*fabl)(double))
{
    double NS=0.0, NSnew;
    do
    {
        NS=NSnew;        
        NSnew=NS-f(NS)/fabl(NS);
    } while((0.0001<NSnew-NS)||(NSnew-NS<(-0.0001)));
    return NSnew;
}



Braucht nicht zu klappen, sobald der Startwert nicht in der Nähe der Lösung liegt. Wenn man zum Beispiel auf ne Fast waagerechte Tangente stösst, landet man ziemlich weit weg...

Is eure Version wirklich das Newtonverfahren? Ich kenne es mit der Ableitung, jedenfalls das einache.

Dieser Post wurde am 20.04.2004 um 22:06 Uhr von Belisar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.04.2004, 22:08 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Is eure Version wirklich das Newtonverfahren? Ich kenne es mit der Ableitung, jedenfalls das einache.



na das hier (f(NS+0.2)-f(NS))/0.2 ist doch nichts anderes als die appriximierte steigung der funktion f an der stelle NS... damit ist es doch mehr oder weniger die ableitung.. klar ist nicht expliziet ermittelt aber numerisch kommt mehr oder weniger das gleiche raus
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.04.2004, 22:12 Uhr
Belisar



Achso, hab ich gar nicht dran gedacht bzw jetzt erkannt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Rätselecke ]  


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: