Quadratwurzelfunktion mit Hilfe einer Reihenentwicklung berechnen
-
Überleg mal selber wie du von k auf i und j kommst.
ungefähr:
i = 2 * k;
j = i + 1; // oder - 1,
genauer mag ich das jetzt nicht überlegen.Du musst mal deine Erkenntisse einsetzen.
bettdecke schrieb:
konnte ich x^k durch wiederholtes multiplizieren von x mit einer Variable mit dem Anfangswert 1 realisieren.
Etwas anderes habi ich doch bei nenner und zaehler auch nicht gemacht.
-
Bin jetzt dahinter gekommen
Mein Code sieht jetzt so ausfor(i = 2; i <= k+k; i=i+2) { nenner*=i; expo*=1*x; printf("Expo:%lf\n",expo); printf("Nenner:%d\n", nenner); } for(j = 1;j<=k+(k-2);j=j+2){ zaehler*=j; printf("Zaehler:%d\n", zaehler); }
Aufgrund der zwei Schleifen kann ich die Werte der einzelnen Durchläufe nicht dividieren.
Wenn ich deine For-Schleife nutze, kann ich die Were dividieren jedoch habe ich die gleiche Anzahl an Nennern und Zähler, da Zählbedingung (i<=k+k) nur für i und j gilt.
Habe es auch so versuchtfor(i = 2,j = 1; i <=k+k,j<=k+(k-2); i=i+2,j=j+2)
Jedoch ohne Erfolg.
-
Bei der for-Schleife sind die Elemente
for (Initialisierung; Test; Fortsetzung) Anweisung
Ich glaube kaum, dass du den Test richtig begreifst, wenn der einen Kommaoperator hast.
Bei dir steht dai <=k+k,j<=k+(k-2)
Welche Bedingung gilt da jetzt?Mach mal eine Liste welche i und j du für welche k benötigst.
k | i | j ---+----+---- 1 | 2 | 1 2 | 4 | 1 3 | 6 | 3 4 | 8 | 5
Jetzt musst du mal schauen, wie du aus k i und j berechnen kannst.
evtl. brauchst du für k=1 auch eine Sonderbehandlung.
Dann hast du nur eine Schleife über k und kannst den Rest ganz einfach berechnen.
-
Ja das Kommata war falsch. Ich hätte beide mit einem && Operator verbinden sollen, jedoch ohne den gewünschten Effekt.
Habe die Tabelle jetzt aufgestellt.
Und abgesehen von der Ausnahme bei k=1 ist j immer i-3.
Wie ich jetzt aber daraus auf eine Abbruchbedingung schließe, ist mir nicht klar.
-
bettdecke schrieb:
Wie ich jetzt aber daraus auf eine Abbruchbedingung schließe, ist mir nicht klar.
((k <= Ihre_Matrikel_Nummer%100) || (k <= 10))
Du brauchst nur eine Schleife über k. i und j kannst du ja jetzt berechnen.
(Ich hoffe doch, dass du aus k auch j berechnen kannst)
-
Den Ansatz verstehe ich leider nicht.
Ich habe es bisher so geregeltif (k < 10) k=10;
Langsam gebe ich es einfach auf...
Dachte ich hätte es jetzt mehr oder weniger aber leider doch nicht.....
-
In der Grafik aus deinem ersten Post ist k eine Laufvariable und nicht das Ende.
Es ist sogar die Laufvariable und geht bis 10 oder Ihre_Matrikel_Nummer%100.
-
Ich gebe jetzt auf.
Es macht einfach kein Sinn.LeiderDanke dir trotzdem für deine Hilfe!
-
-
Super!
Danke dir vielmals!
Falls, du mal im Köln/Bonner Raum bist schulde ich dir nen Bier
-
Einen Grund für dein Scheitern sehe ich im Mangel an strukturierter Vorgehensweise.
Du verzettelst dich bei irgendwelchen Laufvariablen anstatt die wirklichen Problemstellungen zu erkennen und z.B. mittels Separierung in Funktionen zu kapseln.
Das ist aber ein typisches Anfängerproblem und mit Erfahrung und etwas Abstraktionsvermögen lösbar.
Eine Kapselung für dein Problem wäre z.B.summe = 1; for( k=1; k<=maxwert(matrikelnummer); ++k ) summe += vorzeichen(k)*faktor(k)*potenz(x,k);
Hierbei kannst du dich dann innerhalb der Funktionen austoben.
-
bettdecke schrieb:
Super!
Danke dir vielmals!
Falls, du mal im Köln/Bonner Raum bist schulde ich dir nen BierDu musst das Programm trotzdem verstehen und erklären können.
Wenn du das nicht kannst, hilft es dir auch nichts.
-
Das ist aber leider nicht die Lösung der Aufgabe
-
Ahütlar schrieb:
Das ist aber leider nicht die Lösung der Aufgabe
Klar fehlt da noch was.
Der Großteil des V von EVA ist es aber.
-
FH D lässt grüßen!