Domanda

Ho alcune funzioni impostate in questo modo:

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

e valutate:

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

ma per g (1), ho ricevuto una risposta simbolica al posto di una risposta numerica. Utilizzando galleggiante () è stato un tentativo di ottenere una risposta numerica ma appena compiuto tutti i termini nella integrale in galleggianti.

Come posso ottenere g (1) come un numero?

È stato utile?

Soluzione

Perché non fare (dalla definizione di integrale definito):

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

'' (quote-citazione) operatore viene utilizzato per forzare la valutazione della: = '. S destra prima della cessione

Altri suggerimenti

Se siete interessati solo a una soluzione numerica, allora si potrebbe utilizzare l'integrazione numerica. Per esempio si potrebbe usare quad_qag (f(x), x, a, b, key, [epsrel, epsabs, limit]).

ho provato:

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

che ritorna:

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

la prima voce è la soluzione numerica,

la seconda voce è l'errore relativo approssimativa,

la terza voce è il numero di iterazioni necessario per ottenere la soluzione,

e l'ultima voce è un codice di errore; codici di errore sono

  • 0 se sono stati riscontrati problemi;
  • 1 se sono stati fatti troppi sotto-intervalli;
  • 2 se viene rilevato un eccessivo errore di arrotondamento;
  • 3 se si verifica un comportamento integrando molto male;
  • 6 se l'ingresso non è valido.

A proposito, la soluzione esatta è 1-1 / (2 * log (2)), che è di circa 0,27,865 mila.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top