PDA

Vollständige Version anzeigen : Zusammengesetzte Funktionen


Puschkel
21.07.2014, 11:37
Guten Tag zusammen,
ich habe ein Excel-Problem, bei dem ich so nicht weiter komme.
Ich bin gerade dabei aus einem Rechtecksignal ( bsp. 0-2 sec 2 A ; 2-4 sec 5 A; 4-10 sec 10A) ein Erwärmungprofil/Abkühlungsprofil zu gestalten. Bekannt ist somit das Zeitintervall, sowie die Art der Funktion, die dafür verwendet wird. Bei der Erwärmung gilt folgende Funktion delta T= PR(thermischer Widerstand)* (1-exp(-t/tau)). Zur Vereinfachung ist das Tau gegeben sowie die vereinfachte Funktion: delta T~c ( irgend eine beliebige Konstante) * I²*
(1-exp(-t/tau). Das Problem hierbei ist, dass die Eingabe der Zeitintervalle sowie der dazugehörigen Ströme beliebig sein sollen. Damit kann die Funktion am Ende aus 2 oder ( etwas übertrieben ) 100 Komponenten bestehen. Ich müsste also einen Algorithmus entwickeln, der mir meine Eingaben einliest, im jeweiligen Zeitintervall an den Endpunkt des davorgehenden Intervalls setzt (durchgängige Funktion), sowie eine Möglichkeit dieses Kontrukt beliebig zu erweitern.
Ich habe bereits hierbei das Profil in ein variablen X/Y Plot gepackt, sowie den Effektivwert berechnet. Damit ist die Anzahl der Eingaben in einer Variable bereits hinterlegt, welche durch ein Change Event in Range (A:B) neu berechnet wird.
Da meine Aufgabe wahrscheinlich etwas schwer Verständlich ist könnt ihr mir gerne noch ein paar Fragen stellen.
Über ein paar Tipps wie ich dieses Problem lösen könnte wäre ich sehr glücklich =).

xlph
21.07.2014, 11:46
Hallo Puschkel,

lade bitte eine Beispiel-Datei hoch und beschreibe anhand dieser deine Vorstellungen.
Ich dein Vorhaben noch nicht so richtig verstanden.

Puschkel
21.07.2014, 12:14
76507

Dies ist nur ein Beispiel...
in diesem Fall sind 5 sec lang 2 Ampere angelegt und danach 2 sec lang 5,2 A.
Die Funktion erschließt aus oben besagter e-Funktion. Wie kann ich dies nun Variabel machen; also funktionsfähig für 2 Einträge (Zeitintervalle ) bis hin zu 100 Einträgen (Nur Beispielswerte... es sollte gänzlich Variabel sein. Die Anzahl der Intervalle sind in einer Variablen hinterlegt). Wie mache ich dass die Funktion nur in diesem besagten Zeitintervall beginnt und mit dem Endpunkt des vorhergehenden Intervalls den Anfangspunkt hat ( siehe Zeichnung)?
Ist es jetzt besser? ^^

Puschkel
22.07.2014, 09:43
Werde wohl wie folgt dran gehen:
Ich werde jedes Zeitintervall in 10 Einzelpunkte auflösen. Dafür lasse ich eine For to Schleife von 1 bis Anzahl der Zeitintervalle laufen .... unter diesem untergeordnet wird eine Varibale ( Integer) eingeführt a=1 Welche in der Unterscheleife von 1-10 Laufen soll. Eine 2. Variable soll immer inkrementell erhöt werden um die Reihe einer Spalte zu determinieren, in dem der Zeitwert und in der Spalte nebenan der Funktionswert geschrieben wird. Sobald 10 erreicht sind soll der Funktionswert des letzten gespeichert werden sodass im nächsten Zeitintervall der Funktionswert aufaddiert werden kann. Durch einen Graphen fit lässt sich demnach die E-Funktion erahnen....
Das wäre mein grobes Konstrukt .... wenn ich das hinbekomme melde ich mich wieder =). Vielleicht hat ja jetzt noch jemand ne nette idee


PS: Hoffe dass das überhaupt verständlich ist ^^

Puschkel
23.07.2014, 10:15
Hier mal mein zwischenergebnis die Variablen hatte ich natürlich dimensioniert
manches sieht vielleicht noch etwas chaotisch aus. Klammern könnten auch einige unnötig sein ( da ich da noch am rumprobieren bin und ständig etwas hin und her kopiere). Die Variable Anzahl wird auf einem andern Sheet bestimmt und ist die Anzahl der Zeitintervalle.

Sub Berechnung
c = 1
d = 2
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Range("E1").Select ' Soll später durch einen Benutzer definiert werden (als_ vereinfachung zur Zeit beide 1
constante = ActiveCell.Value
Range("E2").Select
tau = ActiveCell.Value
a = 1
e = 0
For a = 1 To Anzahl
b = 1
For b = 1 To 100 ' Jedes Zeitintervall wird in 100 Punkte untergliedert _ Umsomehr Punkte um so genauer)
Range("J" & c).Select
ActiveCell.Value = Range("I" & d) + Range("F" & (d + 1)) / 100 * b
Wert = Range("F" & (d + 1)) / 100 * b
ActiveCell.Offset(0, 1).Range("A1").Select
If Range("G" & d + 1).Value = 0 Then
'Hier soll noch eine andere Funktion rein, in dem der Strom 0 ist _ -->Abkühlung (Bekomme ich hin =))
Else
ActiveCell.Value = e + ((constante * (((Range("G" & d + 1).Value))) ^ 2 * (1 - Exp(-Wert / tau)))) '-->Erwärmung
End If
c = c + 1 ' Reihenzähler
If b = 100 Then
e = e + ActiveCell.Value ' Offset bzw y Achsenabschnitt für das 2._ 'Intervall
End If
Next b

d = d + 1
Next a
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub



Dabei habe ich jetzt noch ein Problem.... Ich möchte dass die nachfolgende Funktion direkt an der vorhergehenden beginnt.... ( bereits vorhanden)
AAAAber ich möchte den Grenzwert der nachfolgenden Funktion auf der gleichen höhe haben wie als würde diese Funktion für sich alleine stehen....
Kurzes Beispiel:
1 A Strom Grenztemperatur 10 Grad über Raumtemperatur
1,1 A 12 Grad über Raumtemperatur
Wenn ich die beiden Nacheinander laufen lassen würde, ( Genügend Zeit um sagen zu können --> Grenztemperatur erreicht) würde sich im realen erst 10 Grad über Raumtemperatur einstellen und danach 12 Grad über Raumtemperatur.

Was mein Code macht ist folgendes:
erstes Intervall : 10 Grad über Raumtemperatur
zweites Intervall: 22 Grad über Raumtemperatur.

Das ist erst einmal das Problem mit dem ich arbeiten muss
so nebenbei:
Spalte F ist mit Zeiten besetzt ( Intervalldauer)
Spalte G sind die dazugehörigen Ströme
Spalte I ist mit aufaddierten Zeiten besetzt ( Wie lange ist es bis jetzt insgesamt gelaufen)
Ist mein Problem verständlich ?