Я не використовую python, але якщо я правильно зрозумів, то за допомогою
ви думаєте щось на зразок
де - векторний вибірковий інтеграл через сітку .
Ж( r ) =∫r0у( x ) dх
F = i n t e g r a t e ( y , x )
F =[Ж1, . . . ,Жн]х
Однак у вас немає зразків і , а скоріше ви маєте зразки та .хух^= журнал( х )у^= журнал( у)
Звичайно, найпростішим підходом було би
але це було б схильним до помилок, оскільки не є рівним, навіть якщо є.
Р = я н т е г р т е (ехр(у^) , експ(х^) ) ,
у( х )у^(х^)
Тепер трапецієподібне правило по суті передбачає, що ваш вхід є кусочно лінійним. Отже, для простого узагальнення було б припустити, що є кусочно лінійним.у( х )у^(х^)
У цьому випадку, визначаючи , ви маєте
ΔЖк=Жk + 1-Жк
ΔЖк=∫хk + 1хку( х )dх =∫х^k + 1х^кеу^(х^)ех^гх^=∫х^k + 1х^ку~(х^) dх^
Тоді, визначаючи , у вас є
і , з і .t = (х^-х^к) / Δх^к
у^k + t≈у^к+ t Δу^к
у~( t ) ≈ aеб тa =еу^к+х^кb = Δу^к+ Δх^к
Тож інтеграл стає
ΔЖк≈ a Δх^∫10еб тгt = a Δх^еб- 1б
У 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]);
Сподіваюся, це допомагає!
(Редагувати: Моя відповідь, по суті, така ж, як і набагато більш стисла відповідь, яку дав Дамаск Стіл, коли я друкував. Єдина різниця - я намагався дати конкретне рішення для випадку, коли "конкретний " є кусочно -лінійна дискретна над дискретною сіткою , )у( х )у^(х^)х^F(x^1)=0