Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige