c-anfänger Geschrieben 15. November 2011 Geschrieben 15. November 2011 Hallo, ich soll den arctan(x) aus der Summenformel http://upload.wikimedia.org/wikipedia/de/math/6/1/e/61e238e7df84f08fe0d01f8f5503d206.pngberechnen für -1<=x>=1 Dabei soll ich weder math.h verwenden noch pow. Ich hab mir gedacht das ich die Potenzen mittels einer Rekursion berechnen kann, nur sind in dieser Formel zwei Potenzen, muss ich dann dafür zwei Schleifen aufmachen? und das 2k+1 geht das dann so? int potenz (int x, int k) { int i; int e=x; for (i=2; i<=2k+1; i+=1) { e=e*x; } return e; } Für die Summe habe ich mal im Web geschaut und mir folgendes zusammengebastelt: long summe(long a[], long n){ long s=0, i; for(i=0; k<n; ++i) s+=a; return s; } Wobei ich Schwierigkeiten habe ist wie gesagt allgemein ob da so geht und wie ich die Potenzen in die Summe einbauen kann? wie mein Name schon sagt hab ich noch nicht sehr viel Erfahrung mit C (1.Semester) und es wäre lieb wenn ihr mir das wie einem Baby erklären könntet :confused: Ich hoffe ihr könnt mir helfen:) Zitieren
flashpixx Geschrieben 15. November 2011 Geschrieben 15. November 2011 Von einer Rekursion für eine einfache Potenzfunktion rate ich ab, denn alleine der Overhead für Rücksprung auf dem Stack rechtfertigt das nicht. Zusätzlich kann man eine Potenz durch eine simple Bedingung eliminieren. Durch etwas geschickte Umformung kann man die Summenfunktion, inkl. des Faktors und der Potenz zerlegen, so dass man die gesamte Funktion für ein n und ein n+1 schnell berechnen kann Benutze generell bitte die Codetags Zitieren
c-anfänger Geschrieben 15. November 2011 Autor Geschrieben 15. November 2011 Danke für deine Antwort Aber das sagt mir jetzt noch nicht viel. Du meinst also ich solle erst die Sumenformel vereinfachen und dann auf eine Rekursion zurückgreifen? Wie kann ich eine Summe vereinfachen, könntes du mir einen Tip/Ansatz geben? Wie sieht das allgemein mit der Summeprogrammierung aus die ich mir da zusammengesucht habe? Zitieren
c-anfänger Geschrieben 15. November 2011 Autor Geschrieben 15. November 2011 Also ich könnte natürlich die Summe in drei Einzelne zerlegen und dann jeweils eine eigene Funktion verwenden und die am Ende zusammenziehen? Und für jede dieser Funktion vorher eine zugehörige Rukursion? Zitieren
flashpixx Geschrieben 15. November 2011 Geschrieben 15. November 2011 Ich hatte von einer Rekursion komplett abgeraten. Man kann die genannte Summe mathematisch (!) so vereinfachen, dass man daraus eine Folge machen kann und zu einem n mit relativ wenig Rechenaufwand das n+1 Element errechnen kann. Das ganze algorithmisch umzusetzen ist der nachfolgende Schritt und man kann dies komplett mit Schleifen realisieren, wobei man eben diese sehr einfach gestalten kann, wenn man zuerst mathematisch vereinfacht hat Zitieren
c-anfänger Geschrieben 16. November 2011 Autor Geschrieben 16. November 2011 Ja das Ding ist nur, das wir "offiziell" Reihen und Folgen in Mathe noch nicht behandelt haben. D.h. wenn ich das anwende werde ich nicht volle Punkte bekommen. Es muss also auch einen anderen,einfacheren Weg geben... Zitieren
flashpixx Geschrieben 16. November 2011 Geschrieben 16. November 2011 Es muss also auch einen anderen,einfacheren Weg geben... Die Vereinfachung ist optional um den Rechenaufwand zu verringern. Ansonsten nimmt man eine Schleife und iteriert, entweder so lange bis Konvergenz eintritt oder der Zahlenbereich nicht mehr genau auflöst oder eben bis zu einem festen n. Letztendlich ist das aber mathematisch betrachtet eine Reihe. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.