Não uso python, mas se eu entendi corretamente, em seguida, por
você está pensando algo como
F = i n t e g r a t e ( y , x )
, onde F = [ F 1 , . . . , F n ] é um vetor amostrando a integral sobre uma grade
F(r)=∫r0y(x)dx
F=integrate(y,x)
F=[F1,...,Fn] .
x
No entanto você não tem amostras de e y , mas você tem amostras de x = log ( x ) e y = log ( yxyx^=log(x) .y^=log(y)
Claro que a abordagem mais simples seria
mas este seria propensa a erros, porque y ( x ) não é lisa, mesmo embora y ( x ) é.
F=integrate(exp(y^),exp(x^)),
y(x)y^(x^)
Agora, a regra trapezoidal pressupõe essencialmente que sua entrada é linear por partes. Portanto, a generalização simples seria para você assumir que y ( x ) é linear por partes.y(x)y^(x^)
Neste caso, definindo , tem
Δ F k = ∫ x k + 1 x k y ( x ) d x = ∫ x k + 1 x k e y (ΔFk=Fk+1−Fk
ΔFk=∫xk+1xky(x)dx=∫x^k+1x^key^(x^)ex^dx^=∫x^k+1x^ky~(x^)dx^
Em seguida, definindo , tem
y k + t ≈ y k + t Δ y k
e ~ y ( t ) ≈ um e b t , com um = e Y K + x k e bt=(x^−x^k)/Δx^k
y^k+t≈y^k+tΔy^k
y~(t)≈aebta=ey^k+x^k.
b=Δy^k+Δx^k
Assim, torna-se o integral
ΔFk≈aΔx^∫10ebtdt=aΔx^eb−1b
No Matlab, isso seria algo como
dlogx=diff(logx); dlogy=diff(logy); k=1:length(logx)-1;
b=dlogx+dlogy; a=exp(logx+logy);
dF=a(k).*dlogx.*(exp(b)-1)./b;
F=cumsum([0,dF]);
Espero que isto ajude!
y(x)y^(x^)x^F(x^1)=0