www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenMathematicaFunktionsparameter bestimmen
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "Mathematica" - Funktionsparameter bestimmen
Funktionsparameter bestimmen < Mathematica < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Funktionsparameter bestimmen: e-Fkt mit Mathematica anpassen
Status: (Frage) beantwortet Status 
Datum: 08:53 Mi 13.08.2014
Autor: SKD

Hi,
Also ich möchte im Moment eine Funktin mit bestimmten Randbedingungen erstellen und dazu Mathematica nutzen.
Als Grundfunktion wollte ich diese nutzen
f(x) = a * exp(d1 * b) + c

Hier die Randbedingungen:

f(0) = p0
f(d1)=p1
f'(d1) = m

daraus erhalte ich folgende Bedingungen:
a*exp(d1*b) + c= p1
a + c = p0
b*a*exp(b*d1)=m

Ich möchte zunächst allgemein die Parameter a, b, c bestimmen und später für bestimmte Fälle Zahlenwerte bestimmen.

In Mathematica sieht das ganze dann so aus:

in1:
equations := {a*exp[b*d1] + c == p1,
  a + c == p0,
  b*a*exp[b*d1] == m}

in2: Solve[equations, {a, b, c}]

Leider berechnet er das nichts. Auch Eingabe der übrigen Werte und anschließendes NSolve liefert nicht wirklich etwas.

p0 = 0.15

p1 = 3

d1 = 23

d2 = 25

m = 3/2

Ich muss dazu sagen, dass ich ein ziemlicher Neuling in Mathematica bin.
Hat jemand eine Idee, was ich falsch mache oder wie man besser vorgehen könnte? Danke schonmal!

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Funktionsparameter bestimmen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:55 Mi 13.08.2014
Autor: Al-Chwarizmi


> Hi,
>  Also ich möchte im Moment eine Funktion mit bestimmten
> Randbedingungen erstellen und dazu Mathematica nutzen.
>  Als Grundfunktion wollte ich diese nutzen
>  f(x) = a * exp(d1 * b) + c
>  
> Hier die Randbedingungen:
>  
> f(0) = p0
>  f(d1)=p1
>  f'(d1) = m
>  
> daraus erhalte ich folgende Bedingungen:
>  a*exp(d1*b) + c= p1
>  a + c = p0
>  b*a*exp(b*d1)=m
>  
> Ich möchte zunächst allgemein die Parameter a, b, c
> bestimmen und später für bestimmte Fälle Zahlenwerte
> bestimmen.
>  
> In Mathematica sieht das ganze dann so aus:
>  
> in1:
>  equations := {a*exp[b*d1] + c == p1,
>    a + c == p0,
>    b*a*exp[b*d1] == m}
>  
> in2: Solve[equations, {a, b, c}]
>  
> Leider berechnet er das nichts. Auch Eingabe der übrigen
> Werte und anschließendes NSolve liefert nicht wirklich
> etwas.
>
> p0 = 0.15
>  
> p1 = 3
>  
> d1 = 23
>  
> d2 = 25
>  
> m = 3/2


Hallo SKD

            [willkommenmr]

hast du bemerkt, dass in der Definition von f(x), die du oben
angegeben hast, das x überhaupt nicht auftritt ?

Ferner würde ich unbedingt empfehlen, genau diese (korrigierte !)
Funktionsgleichung auch Mathematica zu füttern. Damit ersparst
du dir weitere mögliche Fehler durch eigenes Einsetzen in die
Formel. Wenn schon Mathematica, dann nutze dessen Fähigkeiten
auch richtig ! ...

Mein entsprechender Mathematica-Text würde also etwa so
beginnen:

f[x_]:= a*Exp[b*x] + c

f1[x_]:=D[f[x],x]        (Ableitungsfunktion)

equations:= {f[0]==p0, f[d1]==p1, f1[d1]==m}

..........


LG ,   Al-Chwarizmi

Bezug
        
Bezug
Funktionsparameter bestimmen: Großschreibung
Status: (Antwort) fertig Status 
Datum: 11:15 Mi 13.08.2014
Autor: Al-Chwarizmi

Hallo SKD,

in einer Mitteilung habe ich dir schon Tipps gegeben.
Jetzt habe ich mir deinen Text noch etwas genauer
angeschaut und gemerkt, warum das so wohl nicht
funktioniert.

equations := {a*exp[b*d1] + c == p1,
  a + c == p0,
  b*a*exp[b*d1] == m}

Zwar hast du dran gedacht, dass man für Funktions-
klammern in Mathematica eckige Klammern braucht,
aber nicht daran, dass die eingebauten Grundfunktionen
alle mit Großbuchstaben anfangen, also nicht sin, cos, exp,
sondern Sin , Cos  und eben auch Exp !

LG ,   Al-Chw.

Bezug
                
Bezug
Funktionsparameter bestimmen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:39 Mi 13.08.2014
Autor: SKD

Hey,
schonmal vielen Dank. Du hast recht, in der Fkt-Glg kam das x nicht vor, hatte versehentlich schon das d1 eingesetzt, aber das hattest du ja ganz richtig interpretiert.
Mit dem Mathematica "richtig nutzen" hast du sicherlich recht. Da ich mich aber noch kaum auskenne mit dem Syntax von Mathematica wollte ichs erstmal so versuchen.
Auch das mit der Großschreibung stimmt natürlich, wusste ich auch schonmal ^^.
Vielen Dank also schonmal!
Habe es jetzt alles so gemacht wie du sagtest. Aber es scheint sich, als gäbe es keine Lösung, da irgendwo ein Logarithmus einer negativen Zahl gebildet wird. So ganz ist für mich nicht nachvollziehbar, warum es nicht möglich sein soll diese e-Fkt zu fitten?
Da die Fkt in diesem Bereicht streng monoton verlaufen und einen Bogen beschreiben soll, kommt eine ganzrationale Fkt aber nicht in Frage, daher dachte ich an die e-Fkt...?

Bezug
                        
Bezug
Funktionsparameter bestimmen: Antwort
Status: (Antwort) fertig Status 
Datum: 14:08 Mi 13.08.2014
Autor: Al-Chwarizmi


> Hey,
> schonmal vielen Dank. Du hast recht, in der Fkt-Glg kam das
> x nicht vor, hatte versehentlich schon das d1 eingesetzt,
> aber das hattest du ja ganz richtig interpretiert.
>  Mit dem Mathematica "richtig nutzen" hast du sicherlich
> recht. Da ich mich aber noch kaum auskenne mit dem Syntax
> von Mathematica wollte ichs erstmal so versuchen.
>  Auch das mit der Großschreibung stimmt natürlich, wusste
> ich auch schonmal ^^.
>  Vielen Dank also schonmal!
>  Habe es jetzt alles so gemacht wie du sagtest. Aber es
> scheint sich, als gäbe es keine Lösung, da irgendwo ein
> Logarithmus einer negativen Zahl gebildet wird. So ganz ist
> für mich nicht nachvollziehbar, warum es nicht möglich
> sein soll diese e-Fkt zu fitten?
>  Da die Fkt in diesem Bereicht streng monoton verlaufen und
> einen Bogen beschreiben soll, kommt eine ganzrationale Fkt
> aber nicht in Frage, daher dachte ich an die e-Fkt...?      [haee]

Weshalb soll eine ganzrationale Funktion nicht in Frage kommen,
wenn du nur eine Annäherung auf einem begrenzten Intervall
brauchst. Oder welche Gründe hast du für einen Ansatz mit
einer global monotonen Funktion ?
Für die Art des gewählten Modells ist es wichtig zu wissen,
wozu es denn wirklich dienen soll. Gib uns also bitte noch an,
zu welchem konkreten Zweck du denn einen solchen Kurven-
Fit brauchst. Dann kann man sich überlegen, welche Art von
Funktion aus dem reichhaltigen Angebot an Möglichkeiten
am besten passen könnte.

LG ,   Al-Chw.


Bezug
                                
Bezug
Funktionsparameter bestimmen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:21 Mi 13.08.2014
Autor: SKD

Hi,
der konkrete Sinn ist ein Wasserfilter, der sich mit zunehmender Verschmutzung (x-Wert) zusetzt und einen erhöhten Differenzdruck erzeugt.
Die Kurve sieht so aus: Es gibt einen Anfangsdifferenzdruck p0 (quasi vom sauberen Filter), von diesem aus steigt die Kurve zunächst nur langsam an, irgendwann kommt dann mit zunehmender Verschmutzung ein stärkerer Anstieg, die Fkt macht quasi eine Kurve und geht dann fast linear nach oben.
Diese lineare Stück soll auch als gerade definiert sein (ab d1). Daher soll der Graph hier die gleiche Steigung wie die Gerade haben (nämlich m). Gleichzeitig soll die Kurve auf dem Punkt liegen (d1/p1) => 3 Bedingungen.

Und noch eine Frage konkret zum Umgang mit Mathematica. Manchmal (aber irgendwie nicht immer) erhalte ich die Fehlermeldung "23 is not a valid variable". Es scheint an der Art der Variablenzuweisung zu liegen. Kann bzw soll ich das ganze anders gestalten?

In[31]:= f[x_] :=  a * Exp[b * x] + c

In[32]:= f1[x_]:=D[f[x],x]

In[21]:= p0:=0.15
d1:=23
p1:=3
m:=3/2

In[33]:= equations:={f1[d1]==m, f[d1]==p1, f[0]==p0 }
In[35]:= Solve[equations, {a,b,c}]
During evaluation of In[35]:= General::ivar: 23 is not a valid variable. >>
During evaluation of In[35]:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. >>
During evaluation of In[35]:= Solve::svars: Equations may not give solutions for all "solve" variables. >>
Out[35]= {}



Bezug
                                        
Bezug
Funktionsparameter bestimmen: Antwort
Status: (Antwort) fertig Status 
Datum: 15:04 Mi 13.08.2014
Autor: Al-Chwarizmi


> Hi,
>  der konkrete Sinn ist ein Wasserfilter, der sich mit
> zunehmender Verschmutzung (x-Wert) zusetzt und einen
> erhöhten Differenzdruck erzeugt.
> Die Kurve sieht so aus: Es gibt einen Anfangsdifferenzdruck
> p0 (quasi vom sauberen Filter), von diesem aus steigt die
> Kurve zunächst nur langsam an, irgendwann kommt dann mit
> zunehmender Verschmutzung ein stärkerer Anstieg, die Fkt
> macht quasi eine Kurve und geht dann fast linear nach
> oben.

Dieses Verhalten erinnert mich an Potenzfunktionen wie z.B.
[mm] y=x^4 [/mm] oder etwas allgemeiner [mm] y=a*x^b+c [/mm] . Wenn du darin
c:=p0 setzt, ist die erste Bedingung schon erfüllt, und man
hat an der Stelle 0 die Steigung 0 . Mittels Anpassung von
a und b sollte man dann die Bedingungen an der Stelle d1
erfüllen können.
Wenn das Ganze aber das Verhalten des Filters realistisch
und recht gut modellieren soll, bräuchte man wohl auch im
Bereich zwischen x=0 und x=d1 noch so zwei, drei weitere
Messwerte. Allerdings ist wohl so etwas wie ein "präzises"
Modell ohnehin illusorisch (aber wohl auch nicht nötig).


>  Dieses lineare Stück soll auch als Gerade definiert sein
> (ab d1). Daher soll der Graph hier die gleiche Steigung wie
> die Gerade haben (nämlich m).

Für ein geradliniges Stück braucht man dann natürlich
die Tangentengleichung:   y= p1+m*(x-d1)

  

> Und noch eine Frage konkret zum Umgang mit Mathematica.
> Manchmal (aber irgendwie nicht immer) erhalte ich die
> Fehlermeldung "23 is not a valid variable". Es scheint an
> der Art der Variablenzuweisung zu liegen. Kann bzw soll ich
> das ganze anders gestalten?
>
> In[31]:= f[x_] :=  a * Exp[b * x] + c
>  
> In[32]:= f1[x_]:=D[f[x],x]
>  
> In[21]:= p0:=0.15
> d1:=23
>  p1:=3
> m:=3/2
>  
> In[33]:= equations:={f1[d1]==m, f[d1]==p1, f[0]==p0 }
>  In[35]:= Solve[equations, {a,b,c}]
>  During evaluation of In[35]:= General::ivar: 23 is not a
> valid variable. >>
>  During evaluation of In[35]:= Solve::ifun: Inverse
> functions are being used by Solve, so some solutions may
> not be found; use Reduce for complete solution information.
> >>
>  During evaluation of In[35]:= Solve::svars: Equations may
> not give solutions for all "solve" variables. >>
>  Out[35]= {}

Bin nicht sicher, aber setz mal (wenigstens bei den konkreten
Datenwerten) ein   gewöhnliches "="  anstatt  ":="
(Leider habe ich im Moment kein Mathematica zur Verfügung,
wo ich es ausprobieren könnte)

LG ,   Al-Chw.


Bezug
        
Bezug
Funktionsparameter bestimmen: Andere Vorgehensweise
Status: (Antwort) fertig Status 
Datum: 15:27 Mi 13.08.2014
Autor: Marcel

Hallo,

> Hi,
>  Also ich möchte im Moment eine Funktin mit bestimmten
> Randbedingungen erstellen und dazu Mathematica nutzen.
>  Als Grundfunktion wollte ich diese nutzen
>  f(x) = a * exp(d1 * b) + c

es wurde ja schon [mm] $f(x)=a*\exp(b*x)+c\,$ [/mm] korrigiert.

>  
> Hier die Randbedingungen:
>  
> f(0) = p0
>  f(d1)=p1
>  f'(d1) = m
>  
> daraus erhalte ich folgende Bedingungen:
>  a*exp(d1*b) + c= p1
>  a + c = p0
>  b*a*exp(b*d1)=m

Also, um's mal schöngeschrieben zu sehen

    [mm] $a+c=p_0\,,$ [/mm]

    [mm] $a*\exp(d_1*b)+c=p_1\,,$ [/mm]

    [mm] $a*b*\exp(b*d_1)=m\,.$ [/mm]

Das sind drei Gleichungen in 3 Unbekannten. Den Fall [mm] $b=0\,$ [/mm] nehme ich mal
als ausgeschlossen an (Du kannst ihn ansonsten gesondert behandeln),
dann kannst Du obiges äquivalent umschreiben zu

    [mm] $a+c=p_0\,,$ [/mm]

    [mm] $m+b*c=b*p_1\,,$ [/mm]

    [mm] $a*b*\exp(b*d_1)=m\,,$ [/mm]

also


    [mm] $a=p_0-c\,,$ [/mm]

    [mm] $b=\frac{m}{p_1-c}\,,$ [/mm]

    [mm] $a*b*\exp(b*d_1)=m\,,$ [/mm]

Ein [mm] $c\,$ [/mm] wie gewünscht muss also

    [mm] $\frac{(p_0-c)*m}{(p_1-c)}*\exp(\tfrac{m}{p_1-c}*d_1)=m\,,$ [/mm]

d.h.

    [mm] $\exp(\tfrac{m}{p_1-c}*d_1)=\frac{p_1-c}{p_0-c}$ [/mm]

erfüllen.

Man kann nun

    $c [mm] \mapsto \exp(\tfrac{m}{p_1-c}*d_1)-\frac{p_1-c}{p_0-c}$ [/mm]

plotten und davon mal die Nullstelle(n)(?) ausgeben lassen. Damit
bekommt man (Kandidate(n) für) [mm] $c\,$ [/mm] und folglich auch [mm] $a\,$ [/mm] und [mm] $b\,$ [/mm] mit

    [mm] $a=p_0-c\,,$ [/mm]

    [mm] $b=\frac{m}{p_1-c}\,.$ [/mm]

P.S. Ansonsten kannst Du das ganze auch mit gnuplot machen. Wenn die
Parameter [mm] $a,b,c\,$ [/mm] gesucht sind, Du aber konkrete Werte für

    [mm] $p_0,$ $p_1,$ $d_1$ [/mm] und [mm] $m\,$ [/mm]

hast, wird das sicher funktionieren. Wenn Du nicht weißt, wie: Ich kann
das später nochmal durchtesten.

Gruß,
  Marcel

Bezug
                
Bezug
Funktionsparameter bestimmen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:55 Mi 13.08.2014
Autor: Marcel

P.S.

Ich habe das Ergebnis mal grob durchgetestet:
Mit bspw.

    [mm] $m=5\,,$ [/mm]

    [mm] $p_0=2\,,$ [/mm]

    [mm] $p_1=7\,,$ [/mm]

    [mm] $d_1=3$ [/mm]

plotte ich mir mit Funkyplot

    $x [mm] \mapsto \exp((5*3)/(7-x))-(7-x)/(2-x)$ ($=\exp(\tfrac{m*d_1}{p_1-c})-\frac{p_1-c}{p_0-7}$) [/mm]

Funkyplot liefert mir die Nullstellenkandidaten (das sind natürlich
Näherungswerte)

    [mm] $x_1=1,68$ [/mm]

und

    [mm] $x_2=6,97\,.$ [/mm]

(Natürlich könnte man hier auch ein numerisches Verfahren bemühen, und
evtl. auch *prüfen*, ob das alle Nullstellen sind oder es noch andere geben
kann (mit analytischen Argumenten)).

[mm] $x_2$ [/mm] kann als Wert für [mm] $c\,$ [/mm] nicht in Frage kommen, weil dann

   [mm] $a=p_0-c$ [/mm]

negativ wäre, zugleich aber

    [mm] $b=\frac{m}{p_1-c}$ [/mm]

positiv.

Mit

    [mm] $c=x_1$ [/mm]

erhält man

    $a=2-1,68=0,32$

und

    [mm] $b=\frac{5}{7-1,68}=0,94\,.$ [/mm]

Zur Kontrolle berechnet man

    [mm] $a*b*\exp(b*d_1)=0,32*0,94*\exp(0,94*3)=5,05=m\,.$ [/mm]

(Wie gesagt: "Gleichheit" ist das nur näherungsweise, Du kannst meinetwegen
an allen Stellen auch [mm] $=\,$ [/mm] durch [mm] $\approx$ [/mm] ersetzen, ich war zu faul, das jedes
Mal so abzutippen!)

Gruß,
  Marcel


Bezug
                
Bezug
Funktionsparameter bestimmen: "Algorithmus" in kurz
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:03 Mi 13.08.2014
Autor: Marcel

Hallo,

nur zur Zusammenfassung halte ich mal fest, wie Du auch vorgehen kannst:

Für die Funktion

    [mm]x \mapsto \exp(\tfrac{m}{p_1-x}*d_1)-\frac{p_1-x}{p_0-x}[/mm]

bestimme die Nullstellen - da ich mir keine großen Gedanken machen wollte,
sagen wir einfach mal, diese heißen [mm] $x_1,...,x_n.$ [/mm] Ich denke, man kann auch
"schnell" Argumente finden, warum das nur endlich viele sein können, vllt.
kann man sogar noch mehr dazu sagen, aber das ist egal. (Man könnte
auch eine Variablensubstitution durchführen und und und...)

Setze nun $k=1$ und [mm] $c=x_k\,.$ [/mm] Dann berechne

    [mm]a=p_0-c\,,[/mm]

    [mm]b=\frac{m}{p_1-c}\,.[/mm]

Nun prüfe, ob

    [mm] $a*b*\exp(b*d_1)=m$ [/mm]

gilt. Falls ja: $(a,b,c)$ ist ein Parametertripel wie gewünscht. Falls nein: Erhöhe
[mm] $k\,$ [/mm] um [mm] $1\,$ [/mm] und mache den gleichen Testlauf mit dem neuen [mm] $c\,.$ [/mm]

Gruß,
  Marcel

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]