Я не использую python, но если я правильно понимаю, то с помощью
вы думаете о чем-то вроде
где - вектор, в котором выполняется выборка интеграла по сетке .
F(r)=∫r0y(x)dx
F=integrate(y,x)
F=[F1,...,Fn]x
Однако у вас нет образцов и , а есть образцы и .xyx^=log(x)y^=log(y)
Конечно, самый простой подход будет
Р = я н т еgrate(exp(y^),exp(x^) ) ,
но это было бы подвержено ошибкам, потому что
Y( х ) не гладко, хотя
Y^(Икс^) является.
Теперь трапециевидное правило по существу предполагает ваш вкладy(x)кусочно-линейный Таким образом, простое обобщение будет для вас предположить, чтоy^(x^) кусочно-линейный
В этом случае, определяя ΔFk=Fk+1−Fk, у тебя есть
ΔFk=∫xk+1xky(x)dx=∫x^k+1x^key^(x^)ex^dx^=∫x^k+1x^ky~(x^)dx^
Затем, определяя t=(x^−x^k)/Δx^k, у тебя есть
y^k+t≈y^k+tΔy^k
а также
y~(t)≈aebt, с
a=ey^k+x^k а также
b=Δy^k+Δx^k,
Таким образом, интеграл становится
ΔFk≈aΔx^∫10ebtdt=aΔx^eb−1b
В Matlab это будет выглядеть примерно так
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]);
Надеюсь это поможет!
(Редактировать: мой ответ по сути такой же, как и гораздо более краткий ответ, который Дамаск Сталь дал, когда я печатал. Единственное отличие состоит в том, что я пытался дать конкретное решение для случая, когда «конкретный y(x)"кусочно-линейный y^(x^) дискретизирован по дискретному x^ сетка, с F(x^1)=0.)