![]() |
---|
Hallo Community, Ich suche für Excel eine Formel die diese Zahlenfolge (Länge ist abhängig von beschreibt: , wobei konstant Diese Excelformel funktioniert nicht: "=POTENZREIHE". Auch andere Potenzreihen Formeln liefern kein vernünftiges Ergebnis, da hier der Koeffizient konstant ist und nicht herausgeschleust werden kann. Hätte jemand eine Lösung? Vielen Dank. Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen." |
Hierzu passend bei OnlineMathe: Exponentialfunktion (Mathematischer Grundbegriff) Potenzregeln (Mathematischer Grundbegriff) |
![]() |
![]() |
Schreib dir doch eine passende VBA-Funktion mit den zwei Parametern und . Also ungefähr sowas: Function PartialSumZeta(m, n) psum = 0 For i = 1 To n psum = psum + i ^ (-1 / m) Next PartialSumZeta = psum End Function |
![]() |
Ein paar Vorschläge Array-Formel ={SUMME(A1:A10^k)} A1:A10=1,2,...10, k=Name festlegen oder Term der ={SUMME({1.2.3.4.5.6.7.8.9.10}^k)} Eingeben ohne {} und mit STRG+UMSCHALT+EINGABETASTE |
![]() |
Danke für den Hinweis. Genau das wollte ich nicht (Schleifendurchläufe), da es sowieso eine ziemlich komplizierte Datei ist (Kalkulation) mit vielen Nutzern und Lösungsmöglichkeiten und Zeilen Code dahinter. Daher soll alles in eine Zelle rein. Aber ich glaube das wird sehr schwierig, da Exp in Summen nicht heraus gelöst werden können. |
![]() |
Habe ich dich richtig verstanden: Du willst eine SUMMENFREIE Darstellung des Terms , d.h., die Laufzeit soll bzgl. nicht sein sondern nur ??? Was du in der Hinsicht allenfalls erreichen kannst ist eine Reihendarstellung der Funktion mit Hilfe der Euler-Maclaurin-Formel (siehe de.wikipedia.org/wiki/Euler-Maclaurin-Formel , gleich das erste Beispiel unter "Anwendungen"). Dort gilt dann tatsächlich: Je größer , umso schneller (d.h. weniger benötigte Reihenglieder) erreicht man damit die erforderliche Genauigkeit. |
![]() |
Hallo HAL9000, Danke für den Vorschlag. Die Eulerfunktionsdarstellung ist doch etwas zu komplex und für mich so nicht erschließbar. Abgesehen von der Nicht-Implementierbarkeit in Excel als Funktion. Ich tendiere aber nun doch zu der Lösung als VBA. Hier habe ich ein Zelle zur Eingabe für und eine Ergebniszelle. Jetzt müsste die Berechnung nur noch starten wenn ich in nach Eingabe von "n" nur noch die Enter-Taste drücke, . ohne extra Button oder Tastenkombi zum Start des VBA-Schnipsels. Das kommt direkt in das Excel-Blatt rein: Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B2")) Is Nothing Then Sub If Target.Count Then Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Then Target.Offset(0, -1).ClearContents Else: Target.Offset(0, . "jetzt kommt die Berechnung" Function PartialSumZeta(m, psum For To psum = psum Next PartialSumZeta = psum . End If End Sub |
![]() |
Hallo maxsymca und Danke für den Vorschlag. ich habe es mal probiert, leider hat es nicht geklappt :-) Benötige ich dazu noch weitere Werte-Zellen oder kann ich das in eine einzige Zelle packen? Array-Formel =SUMME(A1:A10^k)} k=Name festlegen oder Term der =SUMME({1.2.3.4.5.6.7.8.9.10}^k)} Eingeben ohne und mit STRG+ALT+EINGABETASTE |
![]() |
das sind array formeln, kennst du diese technik? der formel eintrag wird mit der tastenkombination STRG+UMSCHALT+EINGABETASTE abgeschlossen also =SUMME({1.2.3.4.5.6.7.8.9.10}^k) STRG+UMSCHALT+EINGABETASTE ergebnis {=SUMME({1.2.3.4.5.6.7.8.9.10}^k)} in dem fall ist der vektor {1…10} eine konstante, ist das für dich ok, oder muss der vektor variabel sein. ggf. müsste man den irgendwo hinpacken und die benötigte länge abgreifen… Deine vba technik verstehe ich net. du kannst doch eine function direkt als formel einsetzen? Und wenn es schnell gehen soll die Variablen Option explcit festlegen(Dim). edit:KORREKTUR tastenkombination! |
![]() |
Noch eine Anmerkung zu der Näherung: Für große ist im hier betrachteten Fall schon eine sehr gute Näherung. Bleibt natürlich das Problem der Riemannschen -Funktionswertberechnung - aber vielleicht genügt dir ja bereits die Genauigkeit ohne diesen Summanden . Oder wenn du mit einer geringen Anzahl von - bzw. -Werten arbeitest, kannst du die benötigten -Werte ja auch vorberechnet in einer Tabelle ablegen. |
![]() |
Hallo maxsymca, mit dem Array kenne ich mich nicht aus. Der Vektor muss variabel sein. Wie geht das, könntest du eine Bsp. Datei anhängen? |
![]() |
Hallo HAL9000, danke für den Vorschlag. Leider kommt aus der Formel kein für mich verwertbarer Wert heraus. Dann bleibt nur VBA. |
![]() |
> Leider kommt aus der Formel kein für mich verwertbarer Wert heraus. Du meinst damit "nicht genau genug" ? Denn ein verwertbarer Ausdruck kommt auf jeden Fall heraus. Mit bekommt man eine m.E. bereits bemerkenswert gute Näherungsformel , die umso besser ist je größer bzw. sind. |
![]() |
Ajee, im letzten Post hab ich mich verschrieben/verkopiert der Array-Formel-Abschluß muss mit STRG+UMSCHALT+EINGABETASTE erfolgen ein paar Vorschläge 3=PartialSumZeta(B1;B2) 4=SUMME(ZEILE(A1:INDEX(A:A;B2))^(-1/B1))} 5=SUMME(ZEILE(BEREICH.VERSCHIEBEN(A1;0;0;B2;1))^(-1/B1))} xl-Dateien (incl Makro) können nicht angehängt werden... Option Explicit Function PartialSumZeta(m As Single, As Integer) Dim psum As Single, As Integer psum For To psum = psum Next PartialSumZeta = psum End Function Single Double für höhere Genauigkeit Integer Long für BTW: Makro Sub Makro1() ' ArrayFormel für in Zellen über selection Selection.FormulaArray = "=SUM(ROW(R1C1:INDEX(C1,R-1]C))^(-1/R[-2]C))" ' Eine Spalte weiter: ArrayFormel für in Zellen darüber Selection.Offset(0, 1).FormulaArray = "=SUM(ROW(OFFSET(R1C1,0,0,R-1]C,1))^(-1/R[-2]C))" End Sub |
![]() |
HAL9000, vielen lieben Dank für die Gleichung. Die funktioniert wirklich sehr gut. Es gibt zwar nur Näherungswerte, aber die Abweichungen sind bis nur innerhalb und ab bei fast . Respekt ! Nach welcher Gleichungssystematik ist die Formel abgeleitet? |
![]() |
Hallo maxsymca, leider funktioniert die Tastenkombination nicht. Nach drücken derer kommt immer die geschweifte Klammer und #Name? wird angezeigt. Woran könnte es liegen? Ist die PartialSumZeta das Ergebnis eines VBA? Danke und Gruß |
![]() |
Also gaaanz laaangsam Du schreibst oder kopierst die Formel in eine Zelle (danach in die Bearbeitungsleiste - C1 und C2 müssen natürlich den Input bereitstellen oder anpassen) C1=2 C2=100 =SUMME(ZEILE(A1:INDEX(A:A;C2))^(-1/C1)) Strg-Taste festhalten, Umschalt-Taste dazunehmen(den Groß/Kleinbuchstaben umschalter) und mit der Eingabe-Taste eintragen Fertisch Das sind deutschsprachige Formeln - siehe weiter oben, da hab ich Dir einen Sub Makro1() zum Formel schreiben gegeben - da stehen die englischen Formeln drin. Ausführen der Sub erzeugt die Formeln in der markierten Zelle! Ich würde den Zählvektor auf der A-Spalte festtackern, die Dollars werden aber hier als LATEX interpretiert.! Auf Google Spreadsheets ist das einfacher gelöst, da heißt es einfach =ArrayFormula(SUMME(ZEILE(A1:INDEX(A:A;B2))^(-1/B1))) ohne weiteres gedöns.... docs.google.com/spreadsheets/u/0 Die VBA Funktion hab ihr doch ins Spiel gebracht - ich hab nur Variablen-Spezifikationen dazu geschrieben wegen der Flottizität - sonst wird alles als Variant gehandelt und das bremst.... Ajee, Gif spielt er wohl nicht ab www.geogebra.org/resource/sq7fyzdq/LtdgIcwoOC8y5CSD/material-sq7fyzdq.png |
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.
|