Frage

Ich habe einige Funktionen wie folgt aufgebaut:

f(x):=1-2**-x$
g(y):=integrate(f(x), x, 0, y)$

und bewertet sie:

f(1)$float(%);
g(1)$float(%);

aber für g (1), bekam ich eine symbolische Antwort statt einer numerischen Antwort. Mit Schwimmer () wurde ein Versuch, eine numerische Antwort zu bekommen, aber es stellte sich nur alle Begriffe in das Integral in Schwimmern.

Wie kann ich g (1) als eine Nummer?

War es hilfreich?

Lösung

Warum nicht einfach tun (durch die Definition von bestimmten Integral):

f(x):=1-2**-x$
gg(x):=''(integrate(f(x), x))$
g(y):=gg(y) - gg(0)$

‚‘ (Zitat-Zitat) Operator verwendet wird, um die Auswertung zu zwingen, der: = 's. Rechten Seite vor der Zuweisung

Andere Tipps

Wenn Sie nur in einer numerischen Lösung interessiert sind, dann könnte man die numerische Integration verwenden. Zum Beispiel könnten Sie quad_qag (f(x), x, a, b, key, [epsrel, epsabs, limit]) verwenden.

Ich habe versucht:

f(x) := 1-2^(-x);
g(y):= quad_qag(f(x), x, 0, y, 3, epsrel=10d-8)$
g(1);

die Rückgabe:

[0.27865247955552,3.093663986714272*10^-15,31,0]

Der erste Eintrag ist die numerische Lösung,

der zweite Eintrag ist die ungefähren relativen Fehler,

der dritte Eintrag ist die Anzahl der Iterationen benötigt, um die Lösung zu erreichen,

und der letzte Eintrag ist ein Fehlercode; Fehlercodes sind

  • 0, wenn keine Probleme aufgetreten sind;
  • 1, wenn zu viele Teilintervalle wurden durchgeführt;
  • 2, wenn übermäßige Abrundungsfehler festgestellt wird;
  • 3, wenn extrem schlecht Integra Verhalten auftritt;
  • 6, wenn der Eingang ist ungültig.

BTW, die genaue Lösung ist 1-1 / (2 * log (2)), die etwa 0,27865 ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top