2014-11-03 4 views
0

Допустим, я создал функцию Sn = LeftRiemannSum (f, left, right, N), которая вычисляет левую сумму riemann в интервале слева направо с N поддоменами.ie:Ограничение до бесконечности слева Riemann Sum MATLAB

Sn = сумма (f (xi) h) для всех поддоменов i = 0 до N-1. f - моя функция и xi = left + i h, поэтому входные аргументы left = x0 и right = xN.

Пусть е моя анонимная функция (например, е = @ (х) (х. * Журнал (1 + х)).

Я также оценил Sn для изменения N от N = 10 до 100000.

Теперь я просто хочу вычислить значение ряда Sn при N -> бесконечности. Внутри функции у меня есть цикл for [для i = 0: (N-1)], поэтому у меня будет бесконечный цикл. .

Могу ли я передать функцию как-то в команде 'предельный'? Любые подсказки?

Thanx!

PS: Основная часть кода моей функции LeftRiemann Sum является следующее:

for i=0:(N-1) 
    x=x0+i.*h; 
    y=f(x); 
    A=y.*h; 
    S=S+A 
    end 
    Sn=S 
+0

Что произойдет, если вы проверите 'doc limit' и начните с одного из этих примеров, пытаясь работать с вашей фактической функцией? –

+0

Не могли бы вы пояснить, связан ли ваш вопрос с использованием Symbolic Math Toolbox? – gire

ответ

0

Если N -> inf значение суммы Римана будет интеграл от функции в интервале [влево, вправо] ,

можно ввести проверку следующим образом:

function Sn = LeftRiemannSum(f, left, right, N) 

if isinf(N) 
    Sn = exact integral of the function f in the interval [left, right] 
    return 
end 

% // Rest of the code 

задача здесь заключается в вычислении аналитического интеграла f. Если вы не используете символическую математическую панель инструментов, все результаты алгоритмов Matlab будут приближенными.

Поскольку вы не можете запустить цикл сезам бесконечности, я вижу два варианта:

  1. Я бы объявить предел для N и выдаст ошибку, если вход больше, чем предел.
  2. Internaly определяет бесконечность как большое число, когда вы получаете inf в качестве параметра, вы заменяете его, допустим, N = 1e200. Учтите, что с этой стратегией ваш алгоритм может занять много времени, чтобы закончить выполнение.
+0

Ассистент спрашивает, как использовать команду 'limit', которая является частью символического инструментария. Как таковой, я думаю (несколько расплывчатый) ответ о том, как с этим бороться, если у вас нет этого инструментария, это немного неуместно. –

+0

@DennisJaheruddin Я не думаю, что OP ссылается на символическую математическую панель инструментов, так как в вопросе она не упоминается. Только ОП может прояснить эту точку. Для символической системы передача 'N = inf' не создаст проблем. – gire

Смежные вопросы