Вычисление интеграла
Самым простым численным методом нахождения определенных интегралов является метод трапеций, который реализован функцией trapz (x, y),где x и y – векторы, задающие значения аргумента и функции в пределах интегрирования. Для ее использования не требуется оформление подынтегральной функции в качестве файла-функции.
Вычислим интеграл :
>> x=0:pi/100:pi;
>> y=sin(x);
>> z=trapz(x,y);
z =
1.9998
Получили приближенное значение интеграла. Увеличив шаг интегрирования до pi/1000, получим более точное значение – 2.
Более точные методы реализованы в функциях quad, quad8, quadl.
Функция quad основана на квадратурной формуле Симпсона, а функция quadl предназначена для вычисления интеграла по более точным формулам Гаусса–Лейбница. Функция quad8 реализует метод Ньютона–Котеса восьмого порядка. Все три функции имеют одинаковый набор параметров:
[i, n]=quad(fun, a, b, tol, trace),
где fun – имя файла-функции или символьное выражение, определяющее подынтегральную функцию (оно должно быть заключено в апострофы); a, b – пределы интегрирования; tol – погрешность вычислений; trace – признак; если его значение равно единице, то при выполнении функции строится график подынтегральной функции (рис. 31), если нулю, то не строится. Последние два
параметра являются необязательными; i –значение интеграла;
n – количество значений функции, которое потребовалось вычислить для нахождения значения интеграла.
>> [i, n]=quad8('func', 0, pi, 1e-8, 1)
i =
7.1938
n =
Рис. 31
При использовании этих численных методов задаётся тре-
буемая точность вычислений, а шаг подбирается автомати-
чески (в отличие от функции trapz). По умолчанию точность
равна 10-6.
Функция может быть задана символьным выражением:
>> [i,n]=quad8('sin(x)', 0, pi, 1e-8, 0)
i =
2.0000
n =
Такой же результат получим, если не укажем два необязательных параметра:
>> [i, n]=quad8('sin(x)', 0, pi )
i =
2.0000
n =
Тот же интеграл можно вычислить с использованием функции quadl:
>> [i, n]=quadl('sin(x)',0,pi,1e-8,0)
i =
2.0000
n =
Для достижения одной и той же точности понадобилось различное количество вычислений. Можно при вызове функции не указывать выходной параметр n. Тогда команда обращения к функции будет такой:
>> i=quadl('sin(x)', 0, pi, 1e-8, 0)
i =
2.0000
В этом случае не используется количество значений функции, которое потребовалось вычислить для нахождения значения интеграла.
Дата добавления: 2016-03-05; просмотров: 743;