Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Rund um die Programmierung ::  Quadratwurzel mit Heronverfahren  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Proggerin
Unregistrierter




Beitrag Proggerin Unregistrierter 14:21:47 20.04.2017   Titel:   Quadratwurzel mit Heronverfahren            Zitieren

Hallo Leute :)

ich muss Quadratwurzel in C++ ,ohne den
Einsatz der Bibliotheksfunktion, ohne Selektion und ohne Iteration (d.h. ohne Schleifen, ohne
Verzweigungen)in 8 Schritten programmieren. :(
In Aufgabe ist §xn+1 = ( xn + a / xn ) / 2§ als Hinweis gegeben. §n§ darf bei 8 abgebrochen werden.
Meine Frage ist wie schätz man die §xn§ richtig ab?
Weil wenn ich zBsp die Wurzel aus 9,7 durch 2 (wobei der geschätzte Wert zwischen 3 und 4 liegt) dividiere bekomme ich viel größere Zahl als der geschätzte Wertebereich. Damit werden die restlichen Zahlen zu Groß oder zu klein.
Wie kann man dieses Problem Lösen?
Schlangenmensch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.11.2008
Beiträge: 423
Beitrag Schlangenmensch Mitglied 14:56:01 20.04.2017   Titel:              Zitieren

Ich glaube du verrechnest dich.

Du hast eine Iterationsvorschrift gegeben. Nehmen wir mal als Beispiel deine 9:

§x_0=1 \\
x_1=(1+\frac{9}{1})/2 = 5 \\
x_2=(5+\frac{9}{5})/2 = 3,4 \\
x_3=(3,4+\frac{9}{3,4})/2 = 3,02 \\§


Du siehst, das Verfahren scheint zu funktionieren.

Die Aufgabe scheint eher zu lauten, mach aus der iterativen Vorschrift eine Rekursion
Proggerin
Unregistrierter




Beitrag Proggerin Unregistrierter 16:58:32 20.04.2017   Titel:              Zitieren

Danke Schlangenmensch :) . Ich versuche mein Programm umzuschreiben.Wenn was melde ich mich wieder ;)
Noch ne Frage ist bei Rekursion eine if()erlaubt? die Aufgabenstellung ist so komisch gestellt im Praktikumsblatt.Es scheint so als will der Proff nicht mal das haben :D
Schlangenmensch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.11.2008
Beiträge: 423
Beitrag Schlangenmensch Mitglied 19:29:20 20.04.2017   Titel:              Zitieren

Irgendwie wirst du auf eine Abbruch Bedingungen prüfen müssen. Was genau dein Prof will kann ich nicht sagen. Da könnte ich vlt was zu sagen wenn ich die Aufgabenstellung im Wortlaut kennen würde.
Proggerin
Unregistrierter




Beitrag Proggerin Unregistrierter 22:24:53 20.04.2017   Titel:              Zitieren

Die genaue Aufgabenstellung :

Schreiben Sie das Quadratwurzel Programm jetzt so, dass die Wurzelberechnung ohne den
Einsatz der Bibliotheksfunktion, ohne Selektion und ohne Iteration (d.h. ohne Schleifen, ohne
Verzweigungen) erfolgt. Die Quadratwurzel soll in einer Sequenz von acht aufeinander
folgenden Rechenschritten ermittelt werden (siehe auch der Hinweis). Sie dürfen natürlich
iostream für Ein- und Ausgabe verwenden.
Hinweis:
Die Quadratwurzel einer Zahl x lässt sich berechnen, indem sie als Grenzwert einer Folge
gesehen wird: §xn+1 = ( xn + a / xn ) / 2§ mit beliebigem Anfangswert a ( z.B. §a = x0§ ).
C++ Syntax z.B.: dWurzneu = ( dWurzalt + ( a / dWurzalt ) ) / 2.0;
Für n = 0, 1, … konvergiert xn schnell gegen die Quadratwurzel von x.
In Ihrem Programm können Sie bei n = 8 abbrechen und das Ergebnis ausgeben.
Was bemerken Sie, wenn Sie die Quadratwurzel auf diese Art berechnen und weder
Bibliotheksfunktion noch Selektions- oder Iterationsprimitiv einsetzen?
DocShoe
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.04.2008
Beiträge: 2766
Beitrag DocShoe Mitglied 09:14:04 21.04.2017   Titel:              Zitieren

Ja, in der Aufgabenstellung ist if erlaubt, du musst ja gegen n prüfen. Dein Prof erwartet etwas so etwas als Lösung:

C++:
1
2
3
4
5
6
7
8
9
10
double sqrt_recurse( double x, double a, unsigned int n )
{
   if( n == 8 ) return x;
   else         return sqrt_recurse( ..., ..., n +1 );
}
 
double sqrt( double a )
{
   return sqrt_recurse( ..., ..., 1 );
}

_________________
Die fünf häufigsten Anzeichen für Faulheit:
1.


Zuletzt bearbeitet von DocShoe am 09:23:34 21.04.2017, insgesamt 2-mal bearbeitet
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 28211
Beitrag SeppJ Global Moderator 09:41:57 21.04.2017   Titel:              Zitieren

Er will doch auch keine Verzweigung. Das klingt so, als wäre folgendes gesucht:
C++:
double x0 = 1;
double x1 = (x0 + a/x0) / 2;
double x2 = ...;
...
double x7 = (x6 + a/x6) / 2;
cout << x7;

Und was man bemerken soll? Vielleicht, dass man das auch arg viel kürzer und besser schreiben kann und der Prof einen mit dieser Aufgabe unnötig Arbeit macht.

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
DocShoe
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.04.2008
Beiträge: 2766
Beitrag DocShoe Mitglied 10:42:00 21.04.2017   Titel:              Zitieren

:eek:

Will er wirklich eine so stumpfe Lösung haben?

Warum wird erwähnt, dass man bei n = 8 abbrechen darf? Es muss also doch eine Zählvariable geben, wozu sonst der Hinweis?

_________________
Die fünf häufigsten Anzeichen für Faulheit:
1.
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 28211
Beitrag SeppJ Global Moderator 11:34:04 21.04.2017   Titel:              Zitieren

DocShoe schrieb:
:eek:

Will er wirklich eine so stumpfe Lösung haben?
Weiß ich nicht, aber zumindest verstehe ich die Aufgabe so. Wobei ich die Aufgabe sehr unklar formuliert finde. Ich weiß nicht, was der didaktische Sinn dahinter sein sollte, aber ich wüsste genauso wenig, was der didaktische Sinn sein sollte, eine Iteration rekursiv zu schreiben.
Zitat:

Warum wird erwähnt, dass man bei n = 8 abbrechen darf? Es muss also doch eine Zählvariable geben, wozu sonst der Hinweis?
In der Formel in der Aufgabenstellung gibt es ein n.

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
Schlangenmensch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.11.2008
Beiträge: 423
Beitrag Schlangenmensch Mitglied 11:44:19 21.04.2017   Titel:              Zitieren

SeppJ schrieb:
Weiß ich nicht, aber zumindest verstehe ich die Aufgabe so. Wobei ich die Aufgabe sehr unklar formuliert finde. Ich weiß nicht, was der didaktische Sinn dahinter sein sollte, aber ich wüsste genauso wenig, was der didaktische Sinn sein sollte, eine Iteration rekursiv zu schreiben.


Eine Iteration rekursiv zu schreiben, oder umgekehrt, kann schon dem Verständiss von Rekursionen dienen.

Aber wenn wir hier zu dritt (mit TE zu viert) rum raten, was gewünscht sein soll, spricht das nicht für den Aufgabensteller.

Wobei, wenn man die Aufgabe wörtlich nimmt, kommt SeppJs Lösung wohl hin...
C++ Forum :: Rund um die Programmierung ::  Quadratwurzel mit Heronverfahren  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.