Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit einer Doppelsumme

Forumthread: Probleme mit einer Doppelsumme

Probleme mit einer Doppelsumme
22.03.2016 11:09:33
Franzi
Hallo,
ich möchte die folgende Funktion in vba-Code umsetzten:
P = 1/(R∙NTU )∙∑_(m=0)^∞
{[1-e^(-NTU)∙∑_(j=0)^m (1/j!∙(NTU^j)]∙
[1-e^(- (R∙NTU))∙∑_(j=0)^m (1/j!∙(R∙NTU)^j )]}

∑_(m=0)^∞ soll bedeuten: Summe von m=0 bis unendlich
∑_(j=0)^m soll bedeuten: Summe von j=0 bis m
Ich habe deswegen den folgenden Code geschrieben:

Public Function Fakultaet(Zahl As Long) As Double
'Funktion zur Berechnung einer Fakultät
Dim Fakultaet As Double
Dim i As Long
Fakultaet = 1
For i = 1 To Zahl
Fakultaet = i * Fakultaet
Next i
End Function
Public Function Probe()
'Variablen für die P-Berechnung:
Dim i As Long           'Zählvariablen
Dim m As Long           'Zählvariablen
Dim Fak As Long         'Variable in der die Fakultätsberechnung gespeichert wird
Dim T1, T2, U3, S1, S2 As Double 'interne Term-Variablen
Dim P1 As Single        'P1 aus Nusselt-Berechnung
Dim NTU1 As Single      'dimensionslose Übertragungsfähigkeit, auch Stanton-Zahl genannt
Dim R1 As Single        'Verhältnis der Wärmekapazitätsströme
'Wertedefinition für NTU und R
NTU1 = 0.2
R1 = 1.2
' Definition der Startwerte für die P-Berechnung
S1 = 0 ' Stratwert für die erste Summe(S1)
S2 = 0 ' Startwert für die zweite Summe(S2)
U3 = 0 ' Startwert für das Gesamtprodukt
'Schleife zur Berechnung der äußeren Summe
For m = 0 To 2
' Schleife zur Berechnung der inneren Summen
For i = 0 To m
Fak = Fakultaet(i)
S1 = S1 + ((1 / Fak) * (NTU1 ^ i))        'Summe innerhalb des 1.Faktors
S2 = S2 + ((1 / Fak) * ((R1 * NTU1) ^ i)) 'Summe innerhalb des 2.Faktors
Next i
'Berechnung der Faktoren
T1 = 1 - (S1 / (Exp(NTU1)))     ' 1.Faktor der Formel
T2 = 1 - (Exp(-R1 * NTU1) * S2) ' 2.Faktor der Formel
U3 = U3 + (T1 * T2)             ' Summand aus der m-Summe
Next m
P1 = U3 / (R1 * NTU1)
Debug.Print P1
End Function

Die Funktion funktioniert soweit, aber das Ergebnis ist falsch. Laut Definition darf P maximal 1 werden.
Bei mir nimmt aber P, sobald mein m > 1 wird, Zahlenwerte größer 1 an. Deswegen denke ich, dass man die Funktion nicht so umsetzten kann, wie ich es getan habe. Leider komme ich nicht auf eine andere Lösung.
Ich würde mich freuen, wenn mir jemand weiter helfen kann oder eine andere Idee zur Umsetzung der Doppelsumme hat.
Danke Franzi

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit einer Doppelsumme
22.03.2016 16:01:38
Franzi
Hallo, ich habe es selbst heraus gefunden. Damit die Nachwelt noch etwas davon hat hier meine Lösung:
  Public Function Fakultaet(Zahl As Long) As Double
'Funktion zur Berechnung einer Fakultät
Dim dblFakultaet As Double
Dim i As Long
Fakultaet = 1
For i = 1 To Zahl
Fakultaet = i * Fakultaet
Next i
End Function
Public Function Probe()
'Variablen für die P-Berechnung:
Dim i As Long           'Zählvariablen
Dim m As Long           'Zählvariablen
Dim Fak As Long         'Variable in der die Fakultätsberechnung gespeichert wird
Dim T1, T2, U3, S1, S2 As Double 'interne Term-Variablen
Dim P1 As Single        'P1 aus Nusselt-Berechnung
Dim NTU1 As Single      'dimensionslose Übertragungsfähigkeit, auch Stanton-Zahl genannt
Dim R1 As Single        'Verhältnis der Wärmekapazitätsströme
'Wertedefinition für NTU und R
NTU1 = 0.56
R1 = 1.29
' Definition der Startwerte für die P-Berechnung
U3 = 0 ' Startwert für das Gesamtprodukt
'Schleife zur Berechnung der äußeren Summe
For m = 0 To 3
' Schleife zur Berechnung der inneren Summen
S1 = 0 ' Startwert für die erste Summe(S1)
S2 = 0 ' Startwert für die zweite Summe(S2)
' Hier lag der Fehler. Damit die Summe über i immer wieder bei 0 beginnt, muss man
natürlich die Startwerte S1 und S bei jedem Durchlauf von m immer wieder zu 0 setzten. _
In meiner ersten Lösung hatte ich die Startwerte für S1 und S2 vor meiner m-Schleife
definiert und nicht innerhalb.
For i = 0 To m
Fak = Fakultaet(i)
S1 = S1 + ((1 / Fak) * (NTU1 ^ i))        'Summe innerhalb des 1.Faktors
S2 = S2 + ((1 / Fak) * ((R1 * NTU1) ^ i)) 'Summe innerhalb des 2.Faktors
Next i
'Berechnung der Faktoren
T1 = 1 - (Exp(-NTU1) * S1)   ' 1.Faktor der Formel
T2 = 1 - (Exp(-R1 * NTU1) * S2) ' 2.Faktor der Formel
U3 = U3 + (T1 * T2)             ' Summand aus der m-Summe
Next m
P1 = U3 / (R1 * NTU1)
Debug.Print P1
End Function

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige