Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
172to176
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
172to176
172to176
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

mathematische Funktion als Variable

mathematische Funktion als Variable
25.10.2002 22:56:25
Patrick
Hallo Forum,
ich suche einen Befehl mit dem ich eine mathematische Funktion (z.B. EXP(X*X)) in eine Variable packe, bzw. so definieren, dass ich diese Funktion mit dem "function" befehl nutzen kann.

Sub euler()
Dim A As Double
A = InputBox("lower itegration limit")
Dim E As Double
E = InputBox("upper integration limit")
n = 20
s = 0
H = (E - A) / n
x = A
s = y(x) / 2
For x = A + H To E - A Step H
y (x)
s = s + y(x)
Next x
x = E
s = s + y(x) / 2
s = s * H
MsgBox s
End Sub

Function y(ByVal x As Double) As Double

y = Exp(-x * x)

Es geht nur darum, wie ich es schaffe den Wert der funktion y durch eine Zelle oder Textfeld so einzugeben, dass man es auch als Funktion nutzen kann.
Da meine bisherigen Bemühungen immer nur da gelandet sind, wo die eingegebene Formel als Text behandelt wird, und damit kann man leider nicht rechnen.

Danke im Vorraus

Gruß patrick

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: mathematische Funktion als Variable
26.10.2002 10:42:53
Gabor
Hi,

wenn du damit meinst, das Ganze als Funktion in einer Tabelle nutzen zu wollen, dann füge einfache eine Neues Modul in VBA ein und kopiere deine Function dort hin. Dann kannst Du sie problemst als Formel benutzen.

Gruß

Gabor

Re: mathematische Funktion als Variable
26.10.2002 12:51:12
Patrick
Hi Gabor,
Danke für den beitrag.

Mir geht es aber darum, dass ich die Funktion, welche ich mit dem Befehl function als Variable, z.b. y(x) definiere, auch als Textfeld im der üblichen syntax (EXP(x)) eingeben kann, und das mir von dieser nun das Integral unter berücksichtigung der integrationsgrenzen ausgegeben wird.

Die Eingabe als Funktion in eine Zelle ging bisher immer schief, da excel die EXP(X) funktion nicht akzeptiert.
Die Funktion muss ja immer einen Zellbezug haben.

Daher steht die Frage im Raum, wie ich dies anstelle.
Über hilfe wäre ich dankbar !

Gruß patrick

Anzeige
Re: mathematische Funktion als Variable
26.10.2002 14:36:00
Hans W. Hofmann
A weng dunkel ist Deiner Rede Sinn, aber ich meine Du meinst sowas. Achtung mit groß/kleinschreibung. Die Funktion ChangeNum ersetzt x(kleingeschrieben) durch den numerischen Wert x und darf nicht an EXP (X großgeschrieben) rankommen. Wie Du das im allgemeinen Anwendungsfalls sicherstellen willst ist noch ein Problem?


Re: mathematische Funktion als Variable
26.10.2002 14:49:10
Hans W. Hofmann
Ach Käse, weitere ChangeNum durch
'Ersetze exp durch EXP
While InStr(Num, "exp") > 0
Mid(Num, InStr(Num, "exp"), 3) = "EXP"
Wend

exp ist glaub ich die einzige Funktion, wo ein x drin vorkommt. Sicherer ist auch vielleicht alles in LCASE umzurechnen...

Gruß HW

Anzeige
Re: mathematische Funktion als Variable
26.10.2002 15:18:46
Patrick
Hi Hans,
sicherlich hast Du recht, aber ich glaube meine Formulierung war echt unglücklich :)
Die funktion exp(x) war auch nur ein Beispiel, mit dem "x" in eXp hab ich kein problem, die funktion könnte auch sin(x) lauten.

Es geht nur darum, wie ich unter der functiondeklarierung ein funktionsstring, z.b sin(x) einbinden kann, welcher von VBA auch als function genutzt wird.

Alsi die eingebae im VBA Modul und "function" kann ich machen ohne Probleme, nur würde ich diese eingabe gerne durch ein textfeld oder eine Zelle ersetzt haben

nochmal der code
Sub euler()
Dim A As Double
A = InputBox("lower itegration limit")
Dim E As Double
E = InputBox("upper integration limit")
n = 20
s = 0
H = (E - A) / n
x = A
s = y(x) / 2
For x = A + H To E - A Step H
y (x)
s = s + y(x)
Next x
x = E
s = s + y(x) / 2
s = s * H
MsgBox s
End Sub

Function y(ByVal x As Double) As Double

y = Exp(-x * x) ----->>>>> wenn ich hier den exp(x*-x) durch den sin(x) ersetzen, errechnet mir das modul das integral von sin (x).
soweit funktioniert das proggi, nur die eingabe sollte bei Zelle oder Textfeld klappen

Z.B.:
y = inputbox ("Bitte geben sie den Funktiionsterm ein")

eingabe im Feld: sin(x) führt aber nicht zu berechnung des integrals, sondern zur Fehlermeldung
Variablen nicht kompatibel oder so ähnlich !

Gruß patrick



Anzeige
Re: mathematische Funktion als Variable
26.10.2002 16:33:50
Hans W. Hofmann
Na, dann hab ich Dich ja richtig verstanden. Als Funktion würde ich das entsprechend formulieren, aber für die Bezeichner etwas aussagekräftiger gestalten:
a - VonXo
e - BisXn
fx - Funktion
n - Intervallschritte
damit dir Funktionsassistent auch etwas zum Anzeigen hat...

Gruß HW


Re: mathematische Funktion als Variable
26.10.2002 16:43:30
Patrick
Hallo HW,

das klingt alles ganz gut, nur kann ich damit nicht anfangen.
1. verstehe ich die anweisungen nicht und 2. hört sich das so an, als ob das Beispiel nur auf dem exp(x) hängt.
Wo kann ich nun meine Variable funktion eingeben ?

Gruß patrick

Re: mathematische Funktion als Variable
26.10.2002 17:06:16
Hans W. Hofmann
Nicht wahr! ;-)
Aber ein bißchen Nachdenken solltest Du aber schon...
und dann probierst Du die Lösung einfach mal aus.
Sagen wir
=Euler(-1,1,"sin(x)+cos(x)",20)

Was das Verständnis angeht, markierst Du einfach die fragliche Stelle, die fragliche Vokabel und drückst auf die F1-Taste.

Gruß HW

Anzeige
Re: mathematische Funktion als Variable
26.10.2002 18:40:09
Patrick
Hi HW,
hast recht gehabt :)
Thx das hat mich nun endlich weitergeracht.

Ich Verstehe die Ausleseschritte noch nicht so ganz.

Gruß Patrick

Re: mathematische Funktion als Variable
26.10.2002 19:48:18
Hans W. Hofmann
Welche Ausleseschritte?

Gruß HW

Re: mathematische Funktion als Variable
27.10.2002 17:11:29
Patrick
Hi HW,
ich meinen diesen schritt

Private Function ChangeNum(var As Double, ByVal Num As String) As String
'Ersetze exp durch EXP
While InStr(Num, "exp") > 0
Mid(Num, InStr(Num, "exp"), 3) = "EXP"
Wend
'Ersetze Variable durch Wert
While InStr(Num, "x") > 0
Num = Left(Num, InStr(Num, "x") - 1) & var & Mid(Num, InStr(Num, "x") + 1)
Wend
' Ersetzt Dezimalkomma durch Dezimalpunkt
While InStr(Num, ",") > 0
Mid(Num, InStr(Num, ","), 1) = "."
Wend
ChangeNum = Num
End Function

Gruß patrick

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige