Mathcad: Неверно считает определенные интегралы - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Другие CAD системы > Mathcad: Неверно считает определенные интегралы

Mathcad: Неверно считает определенные интегралы

Ответ
Поиск в этой теме
Непрочитано 24.04.2011, 22:44
Mathcad: Неверно считает определенные интегралы
Cyberfighter
 
Регистрация: 24.04.2011
Сообщений: 6

Всем форумчанам, доброго времени суток!
В ходе расчетов в среде Mathcad столкнулся с проблемой - программа порой неверно считает определенные интегралы.
Привожу упрощенный пример, при котором возникают такого рода ошибки (сделано для наглядности, т.к. собственно мой расчет очень сложен для восприятия):

Есть некая функция: a(x):=if(100<x<102,1,0)

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

Задача: Необходимо вычислить интеграл функции в диапазоне от 0 до 500. Записываю все это дело в Маткаде, программа выдает ответ, что интеграл равен "0". Как так?! Ведь должно быть "2", это очевидно!
Дальше начинаю экспериментировать, изменяю пределы интегрирования:
99-103 - выдает ответ "2". (все как и должно быть)
0-105 - тоже "2"
0-106 - верхний предел отличается всего на единицу и уже "0".
Как так и почему? Почему такая простая функция вызывает такие сложности при вычислении интеграла? Такая умная программа не справляется с элементарным вычислением?

Начинаю поиски ответа в интернете, нахожу следующую информацию:
из справки последнего Маткада Прайм 1.0:
Цитата:
"Подынтегральные выражения с острым максимумом, как и функции, чья форма не характеризуется полностью одним масштабом длин, не могут быть вычислены точно. Можно получить более точные результаты, разбив интеграл на части и отдельно проинтегрировав пик остальной части графика."
"Mathcad обычно не может интегрировать функции, имеющие сингулярности в интервале интегрирования. Ступенчатые и пилообразные функции с многими конечными разрывами могут также привести к несходимости интегралов. Если известно расположение сингулярностей в подынтегральном выражении, можно получить правильную численную оценку, разбив интеграл на сумму интегралов с этими точками в качестве пределов. Чтобы найти потенциальные сингулярности или нарушения непрерывности, постройте график интеграла."
Из всего понимаю, что есть какие-то сложности при вычислении быстроменяющихся функций и функций с разрывами. Но логичного объяснения тем фокусам, которые творились в приведенном примере не нахожу. Кроме того предложенный вариант с разбиением на участки меня не устраивает, т.к. в конечном счете предполагается сделать что-то наподобие программы: расчет должен автоматом все переделывать в зависимости от исходных данных - работать по принципу: вбил данные и получил ответ. Поэтому вручную разбивать на участки мне не подходит.

Далее нахожу инфу по методам интегрирования, использованным в Маткаде:
Цитата:
Auto Select (Автоматический выбор).

Метод интегрирования выбирается системой автоматически. Лучше, если по умолчанию будет отмечен именно этот пункт.

Romberg (Ромберга)

Весьма эффективный метод, применяемый для вычисления интегралов от функций, не имеющих особенностей. Является основным методом в Mathcad.

Adaptive (Адаптивный)

Метод, предназначенный для вычисления интегралов от функций, быстро изменяющихся на промежутке. При этом ширина интервала разбиения не постоянна, как в случае метода Ромберга, а изменяется в зависимости от скорости изменения функции. В большинстве случаев данный алгоритм дает более точный результат, чем метод Ромберга. Поэтому этот метод используется по умолчанию. Адаптивный метод дает возможность интегрировать функции с разрывами, чего не может метод Ромберга.
В нашем примере как раз есть разрывы и функция быстроизменяющаяся, однако приведенные выше результаты были получены как раз при Адаптивном методе. Почему возникает ошибка? Что странно при использовании метода Ромберга результаты остались теми же.

Наверняка кто-то сталкивался с подобной проблемой при вычислении интегралов. Подскажите что делать, как считать? Заранее блогадарен за любую помощь!
Просмотров: 21117
 
Непрочитано 04.05.2011, 07:50
#21
Psyakrev


 
Регистрация: 17.06.2010
Сообщений: 438


Цитата:
Сообщение от metod Посмотреть сообщение
а если значение интеграла наперед неизвестно?
с:=[значение интеграла]
Ф(x,101)-с=0
Делов-то. Можно еще так
К(b,c):=root((Ф(x,b)-c),x).
Точный синтаксис root не вспомню, кажется надо еще указать пределы, в которых ищется решение.
Psyakrev вне форума  
 
Непрочитано 04.05.2011, 08:06
#22
metod


 
Регистрация: 09.10.2007
Москва
Сообщений: 451


Цитата:
Сообщение от Psyakrev Посмотреть сообщение
с:=[значение интеграла]
Ф(x,101)-с=0
Делов-то. Можно еще так
К(b,c):=root((Ф(x,b)-c),x).
Точный синтаксис root не вспомню, кажется надо еще указать пределы, в которых ищется решение.
Зачем считать интеграл, если его значение уже известно???
metod вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Другие CAD системы > Mathcad: Неверно считает определенные интегралы



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Арбат считает прогибы по СП 52-101-2003 неверно? Constantin Shashkin Расчетные программы 31 27.08.2010 16:06