Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Вычисление приблеженного значения интеграла.  (Прочитано 21192 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 10-07-2003 10:44 » 

Есть отсчеты функции нужно посчитать интеграл.

Для линейного интегрирования есть формума

F(a,b)= sum( (a+a[i+1])/2 )
нехватает точности ,

есть более точные методы.
Например Ньютона там при вычислении слагаемого интероляция производится функцией более высокого порядка и в расчете участвуют не два соседних отсчета а несколько соседних отсчетов.

Fn(A,B) = sum(  F(a[i-k], ... ,a , ... ,a[i+k]) )

Проблема втом что я не знаю F(a[i-k], ... ,a , ... ,a[i+k]) в справочнике все в обшем виде и у меня  ни как не получается вывести формулу.
Поможите кто чем может.
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-07-2003 11:29 » 

Цитата
F(a[i-k], ... ,a , ... ,a[i+k])

Напр., среднее геометрическое по 3-м точкам: result=(a[i-1]*a*a[i+1])/(a[i-1]+a+a[i+1]);
Или иная ф-ия.
Напр., входные данные есть отсчеты синусоиды, а нужно получить интеграл именно по sin.

Уточни : что именно не понятно? какая задача?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
NeilPryde
Гость
« Ответ #2 : 10-07-2003 11:50 » 

Ты попробуй метод трапеций - сумма площадей трапеций, образованных отсчетными точками. Будет точнее, чем твоя первая формула. Может этого достаточно будет, и метод Ньютона не понадобится вовсе...
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #3 : 10-07-2003 11:57 » 

Цитата: NeilPryde
Ты попробуй метод трапеций - сумма площадей трапеций, образованных отсчетными точками. Будет точнее, чем твоя первая формула. Может этого достаточно будет, и метод Ньютона не понадобится вовсе...


А по моему метод трапеций и приведенный PSD дадут одинаковый результат, так как площадь трпеции и есть полусумма сторон умножить на высоту.
Записан
NeilPryde
Гость
« Ответ #4 : 10-07-2003 12:01 » 

Тут я сморозил глупость Улыбаюсь
Да, это тоже самое, в том случае если высота трапеции = 1
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #5 : 10-07-2003 12:04 » 

Интеграл Римана это сумма dx*f(x) при dx стремящемся к нулю.
PSD просто вычисляет среднее значение f(x) на интервале dx. Так я это понял.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 10-07-2003 12:19 » 

Цитата

Напр., среднее геометрическое по 3-м точкам: result=(a[i-1]*a*a[i+1])/(a[i-1]+a+a[i+1]);


Про такое не слышал попробую.
У меня отсчеты это показания измерительного прибора, меряем воду, точнее скорость ее движения по трубе.  Поидее нужно интерполировать отрезки функцией второго порядка (или третьего я не вкурсе на какую величину опиратся датчик) .

Да все верно у меня данные выровнены по времени и шаг единица.
Но есть ситуации когда алгоритм должен закрывать дыры (не поладки оборудования и средств связи).
Записан

Да да нет нет все остальное от лукавого.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #7 : 10-07-2003 12:38 » 

Тут ты так просто не отделаешься, как минимум нужно знать приближенный характер ф-ции, а то как между двумя точками интерполировать? Для этого желательно знать предыдущию историю ф-ции. Самый простой способ конечно- это линейная ф-ция. Если поведение ф-ции не предсказуемо, то это разумный вариант, если же ф-ция имеет какие-то свойства, то возможно ей подойдет интерполяция не через две а несколько точек, снятых до того и после того, где была потеря.
Записан
NeilPryde
Гость
« Ответ #8 : 10-07-2003 12:48 » 

Есть еще метод Симпсона... Я не помню, насколько он точен. Какие критерии используются для того, чтобы определить, достаточно точно подсчитан интеграл или нет?
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 10-07-2003 12:55 » 

Это сравнительно плавная функция, вопервых вода довольно энертное вещество, вовторых в штатном режиме изменение расхода происходит не больше чем 10% за отсчет, но сами расходы значительны, получается такая вещь что при линейной интерполяции функции расхождение с эталонным  заначение порядка 50 кубов это при расходе в 2000 кубов  такая точность меня не устраивает я хочу загнать расхождение в пределы 5 тон, или меньше.

Функция  не переодическая.
Функция "гладкая".
Функция не имеет разрывов(в штатном режиме).
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 10-07-2003 13:22 » 

2PSD:
А датчик расхода считает мгновенные значения, или в интервале?
Ведь есть еще пульсация давления воды (особенно вблизи насосов) и мгновенные значения будут некоректны. Вот тут то и нужно увеличить частоту отсчетов и вычислять среднее по некой ф-ии.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sss
Специалист

ru
Offline Offline

« Ответ #11 : 11-07-2003 01:16 » 

я тут так думаю:
I:
1. надо проверить как все работает при константном напоре, т.е. вычислить погрешность отсчетов.
2.а  допустим на 1 шаге все ОК, тогда как не крути, все упрется в количество отсчетов за ед. времени.
2.б  допустим на 1 шаге что то не так, тогда надо вычислять систематическую погрешность измерений и учитывая, искать средние значения.
2.в   допустим 1 шаг не возможен, тогда как не крути, все упрется в количество отсчетов за ед. времени.
II:
Так же можно попытаться, при помощи ряда Фурье оценить явно ошибочные гармоники, возмущающие плавную функцию.

Пока как-то вот так
Записан

while (8==8)
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 11-07-2003 04:32 » 

Цитата

А датчик расхода считает мгновенные значения, или в интервале?
Ведь есть еще пульсация давления воды (особенно вблизи насосов) и мгновенные значения будут некоректны. Вот тут то и нужно увеличить частоту отсчетов и вычислять среднее по некой ф-ии

Это мгновенные значения. Вибрации от насосов погашены (до них метров двести).

sss, заманчивое предложение если оно прокатит аэропорт "Домодедово"  на пару дней без воды останется потому что речь идет о расходомере стояшем на центральной трубе от скважин.  Данные у меня идут с системы диспечерезации там сканируют расход  раз в секунду(сама система а датчик делает это 50 раз в секунду и усредняет ) мне приходят прореженые данные раз в минуту.  Исходя из специфики ситемы(если чтото большое открывается то оно открывается плавно(задвижку видели?) а краны туалеты и прочая сантехника дают очень плавный рост расхода) это в принципе достаточно просто нужно больше опорных точек чтобы плотней прижатся к кривой.

При стабильном расходе (ночью например) расход держится на отметке допустим NN кубов и происходит небольшая болтанка в врайоне +-5-10 процентов.
Записан

Да да нет нет все остальное от лукавого.
sss
Специалист

ru
Offline Offline

« Ответ #13 : 11-07-2003 05:03 » 

Цитата: PSD

... (сама система а датчик делает это 50 раз в секунду и усредняет ) мне приходят прореженые данные раз в минуту ...


тебе выходит вообще нельзя интерполировать данные, а строить прямоугольные графики !
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #14 : 11-07-2003 05:58 » 

Действительно- лучше поднять вопрос об улучшении надежности доставки данных, так как строить предположения тебе трудно.
Если достаточно точности в 1 минуту и данные уже усредненные, потеря 1 значения из десяти не страшно, а вот десяти подряд - уже нехорошо.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #15 : 11-07-2003 07:09 » 

выразился наверное не очень. Мне тут сказали, что можно обидно подумать.
Я имею ввиду, что полученные точки не соединять м/у собой, а использовать как граничные при изломе графика. Причем про ось времени надо еще думать
 Ага
Записан

while (8==8)
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 11-07-2003 07:39 » 

Менять нельзя нужно выжать все что можно из того что есть.

И народ вы укланяетесь от темы я просил формулы. У назже помоему был преподователь математики.
Записан

Да да нет нет все остальное от лукавого.
NeilPryde
Гость
« Ответ #17 : 11-07-2003 07:45 » 

Цитата: PSD
И народ вы укланяетесь от темы я просил формулы. У назже помоему был преподователь математики.


Ты метод Симпсона пробовал?? Формулу в сети поищи на рефератных сайтах.
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #18 : 11-07-2003 07:47 » 

Есть тута "пара формул", только я в них не совсем уверен, счас  уточню и где-то после обеда выложу 8)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 11-07-2003 08:36 » 

Как ты узнал про ошибки подсчетов? Можно ли используя тот же источник информации накопить статистические данные (твой_подсчет, более_реальный, разница). Если в этих данных найти систему, то можно сделать коректирующую ф-ию.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #20 : 11-07-2003 08:46 » 

Будут тебе формулы, но не сегодня, у меня все книжки по вычислительной математике дома.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 11-07-2003 09:14 » 

Цитата: RXL
Как ты узнал про ошибки подсчетов? Можно ли используя тот же источник информации накопить статистические данные (твой_подсчет, более_реальный, разница). Если в этих данных найти систему, то можно сделать коректирующую ф-ию.


Есть интегратор и собствена сама асутп вот сними и расхождение.
При переходе от прямолинейного интегрирования к формуле трапций имело место ощутимое меньшение разноси показаний.
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 11-07-2003 10:26 » 

Цитата: PSD
При переходе от прямолинейного интегрирования к формуле трапций имело место ощутимое меньшение разноси показаний.

Возможно зависит от стабильности интервалов отсчетов.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
sss
Специалист

ru
Offline Offline

« Ответ #23 : 14-07-2003 01:20 » 

.... можно составить корреляционную таблицу, и находить условные средние. Это из теории корреляции. Тонкий лёд.
P.S: есть еще вычисление определенного интеграла методом Монте-Карло
Записан

while (8==8)
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #24 : 16-07-2003 06:08 » 

Цитата
Есть тута "пара формул", только я в них не совсем уверен, счас  уточню и где-то после обеда выложу 8)


  Я тут на пару дней без Инета остался, тока сегодня дорвался до него Улыбаюсь
 Итак, если эта тема еще интересна:
Насколько я помню, метод Ньютона используется для нахождения корней уравнения вида F(x)=0; А вот метода Ньютона для численого интегрирования, я как-то не припомню (я, конечно, не утверждаю, что его нет) :?
Тут промелькнуло упомянание метода Симпсона. В общем я тоже считаю этот метот одним из самых точных для численного вычисления приблеженных интегралов.
Вот его суть:

  интеграл(f(x)dx) =
               (b-a)/6n)*{f(a) + f(b)+2*sum(f(х(2k)))+4*sum(f(x(2k+1))}
   в первой сумме k меняется от 1 до n-1, во второй--от 0 до n-1

функцию f(x) интегрируем на отрезке [a,b], который делим на n равнах частей при помощи точек a=x(0)<x(2)<...<x(2n)=b (то, что при x написано в скобках обычно пишит в качестве индекса внизу)
x(2k-1)--это середина отрезка [x(2k-2), x(2k)].

ЗЫ Кстати, этот метод еще называется медодом парабол, т.к. на каждом из этих n отрезков ты приближаешь свою функцию парабалой, и если отрезки малы(можно даже не очень)--получаешь офигительную точность 8)
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #25 : 16-07-2003 06:17 » 

Цитата

У меня отсчеты это показания измерительного прибора, меряем воду, точнее скорость ее движения по трубе.  Поидее нужно интерполировать отрезки функцией второго порядка (или третьего я не вкурсе на какую величину опиратся датчик) .

Да все верно у меня данные выровнены по времени и шаг единица.
Но есть ситуации когда алгоритм должен закрывать дыры (не поладки оборудования и средств связи).


 Если у тебя есть десять точек из прошлого, и ты хочешь получить еще одну точку в будущем (используя эти десять), то причем здесь численное интегрирование :?:
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #26 : 16-07-2003 08:55 » 

Есть различные методы численого интегрирования.

Для численого интегрирования используют не сами функции и их интегралы а отсчеты функций,  те просто вычисляют интерал на каждом отрезке и сумируют. Так вот вычислить интеграл на отрезке можно по разному можно представить  что функция ступенчатая и просто множить отсчет на ширену ступеньки, можно соеденить все отсчеты отрезками и вычислить площадь под кривой, можно интерполировать функцию по от счетам более сложными кривыми, участками синусойд, парабол гипербол и прочих функций  и считать площать под полученой кривой.  
так вот я и  пытаюсь получить от когонибудь формулу по которой можно былобы вычислить площать между двумя от четами интерполироваными  кривой второго или третьего порядка.
я так поимаю что это будет  F(A,B) от  a*x^3+b*x^2+c*x +d  
взять интеграл не проблема проблема как вычислить кофициенты a,b,c и d по  отсчетам именно эти формулы я пытаюсь получить.

Прошу прощения не видел пред идущего ответа методньтона это хорошо не как не соображу как нашлапнуть ту формулу на конктерный ряд отсчетов
выпиши если не сложно вичисление одного отделновзятого члена.
Записан

Да да нет нет все остальное от лукавого.
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #27 : 16-07-2003 10:22 » 

Цитата: PSD
Есть различные методы численого интегрирования.

Для численого интегрирования используют не сами функции и их интегралы а отсчеты функций,  те просто вычисляют интерал на каждом отрезке и сумируют. Так вот вычислить интеграл на отрезке можно по разному можно представить  что функция ступенчатая и просто множить отсчет на ширену ступеньки, можно соеденить все отсчеты отрезками и вычислить площадь под кривой, можно интерполировать функцию по от счетам более сложными кривыми, участками синусойд, парабол гипербол и прочих функций  и считать площать под полученой кривой.  
так вот я и  пытаюсь получить от когонибудь формулу по которой можно былобы вычислить площать между двумя от четами интерполироваными  кривой второго или третьего порядка.
я так поимаю что это будет  F(A,B) от  a*x^3+b*x^2+c*x +d  
взять интеграл не проблема проблема как вычислить кофициенты a,b,c и d по  отсчетам именно эти формулы я пытаюсь получить.

Прошу прощения не видел пред идущего ответа методньтона это хорошо не как не соображу как нашлапнуть ту формулу на конктерный ряд отсчетов
выпиши если не сложно вичисление одного отделновзятого члена.


  Ели я правильно понял, то твоя задача заключается в следующем:

 Весь отрезок интегрирования [a, b] разбит на n отрезков, на концах которых у тебя есть просто числа (точки). Ты хочешь эти точки соеденить плавной кривой (парабалой, причем для каждого отрезочка будет своя парабола) и проинтегрировать. Так?

Поясню метод парабол:
|
|
|____________________________________________
|_______________________________*____________
|____________________________________________
|_________*__________*_______________________
|______________*_______________________*_____
|___*______________________*_________________
|____________________________________________
|___a_____|_____|_____|_____|_____|_____|_____b_________
........0.........1........2..........3.........4..........5..........6...........7(порядковый номер точки)


Допустим надо посчитать интеграл от a до b.
Он равен
 (b-a)/6*n)*{f(a) + f(b)+2*sum(f(х(2k)))+4*sum(f(x(2k+1))},
 где n = 7 (кол-во отрезков)
       f(a) = f(0);
       f(b) = f(7);
       sum(f(х(2k))) = f(2)+f(4)+f(6);
       sum(f(x(2k+1)) = f(1) + f(3)+f(5);

примечание: f(4) означает "ЗНАЧЕНИЕ ФУНКЦИИ В ЧЕТВЕРТОЙ ТОЧКЕ"
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #28 : 16-07-2003 10:39 » 

А можно сделать по другому:

у тебя есть три точки {(x1, y1),(x2, y2),(x3,y3)} по ним надо построить параболу A*x*x+B*x + C, для этого надо найти A,В и C
раз эта парабола должна проходить через эти точки то:

 y1 = A*x1*x1+B*x1 + C
 y2 = A*x2*x2+B*x2 + C
 y3 = A*x3*x3+B*x3 + C
 
Вот система из трех ур-ний, с тремя неизвестными (А,В и С). 8)
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 17-07-2003 06:27 » 

Спасибо за метод ньютона очень доходчиво.
Записан

Да да нет нет все остальное от лукавого.
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines