Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Технология вычисления интеграла в среде системы MatLab




 

В системе MatLab вычисление интегралов реализовано численными методами трапеции, Симпсона, Ньютона-Котеса. Рассмотрим технологию использования этих методов.

Для вычисления интеграла по формуле трапеции в MatLab используется функция trapz(x,y ). Эта функция возвращает значение интеграла от функции y=f(x) –

При этом y может быть вектором или матрицей. Длины векторов x и y должны быть одинаковы. Если f(x) – матрица, то функция возвращает вектор значений интеграла каждого столбца матрицы. Если вектор узлов не задан - trapz(y), то в качестве ординат x используются их индексы (x=1:length(y)). Узлы по оси x могут быть и не равноотстоящими.

Пример 6.4.6-9. Вычислить значение интеграла методом трапеции.

Пример 6.4.6-9
>> x=1 : 0.1 : 2; >> y=log(x); >> trapz(x,) ans= 0.3859 >> % Точное значение интеграла от функции y=log(x), >> % которое берется аналитически, равно 0.3863 >>

Пример 6.4.6-10. Вычислить значение интеграла методом трапеции, если функция f(x) задана вектором y=[1 3 5 7 9].

 

Пример 6.4.6-10
>> y=[1 3 5 7 9]; >> trapz(x,) ans= 0.3859 >> % Точное значение интеграла от функции y=log(x), >> % которое берется аналитически, равно 0.3863 >>

Пример 6.4.6-11. Вычислить значения интегралов методом трапеции, если функции fi(x) (i=1:5) заданы матрицей y=[1 3 5 ; 3 5 7 ; 4 6 8; 4 7 9; 5 7 10].

Пример 6.4.6-11
>> y=[1 3 5 ; 3 5 7 ; 4 6 8; 4 7 9; 5 7 10]; >> trapz(y) ans= 14 23 31.5 >>

Пример 6.4.6-12. Вычислить значение интеграла методом трапеции, для функции yn=log(xn) с неравномерным шагом по оси x.

Пример 6.4.6-12
>> xn=[1:0.1:1.5, 1.6:0.2:2]; >> yn=log(xn); >> trapz(x,y) ans= 0.3859 >>

Пример 6.4.6-13. Вычислить значение интеграла методом трапеции, если аргумент x и функция f(x) заданы векторами x=[1 3 7 9 10], y=[1 3 5 7 9].

 

Пример 6.4.6-13
>> x=[1 3 7 9 10]; >> y=[1 3 5 7 9]; >> trapz(x,y) ans= 40 >>

Пример 6.4.6-14. Вычислить значение интеграла методом трапеции, если аргумент x задан вектором x=[1 3 7 9 10], а функция f(x) задана матрицей y=[1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10].

 

Пример 6.4.6-14
>> x=[1 3 7 9 10]; >> y=[1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10]; >> trapz(x, y) ans= 30.5 50 68.5 >>

 

Комулятивное (накопительное) суммирование по формуле трапеции в MatLab осуществляется с помощью функции cumtrapz(x,y).Она возвращает вектор,i-й компонент которого представляет сумму первых i слагаемых формулы трапеции. Значение функции cumtrapz(x,y)можно рассматривать как дискретный аналог интеграла с переменным верхним пределом.

Для вычисления интеграла по формуле Симпсона в MatLab применяется функция quad(). При обращении к ней шаг интегрирования не задается, используется требуемая точность вычисления интеграла. Основную часть вычислений в этой функции выполняет рекурсивная подфункция quadstep( ), в которой используется формула Симпсона (yi=f(xi),i=0,1,…,n=2m) с небольшим числом узлов: 3 (m=1) и 5 (m=2). Найденные по этим формулам значения сравниваются. Если разница между ними больше допустимой погрешности, отрезок интегрирования разбивается на две равные части, функция quadstep( ) рекурсивно применяется к каждой половине, и результаты складываются.

Из описания способа вычислений функции quad( ) вытекает, что невозможно ограничиться заданием значений интегрируемой функции в каких-то заранее известных узлах (как для trapz( )), а необходимо уметь вычислять ее значения в любой точке интервала интегрирования. Невозможно также использовать остаточный член для оценки точности, достигнутой функцией quad( ), поскольку неизвестен окончательный шаг h, необходимый при интегрировании. К тому же он не обязательно одинаков на всем отрезке интегрирования.

Минимальная форма обращения к функции – q=quad(f,a,b). В качестве первого аргумента задается указатель на подынтегральную функцию, второй и третий аргументы определяют пределы интегрирования, Причем указатель f может быть задан одним из трех способов:

· именем m-функции, заключенным в одинарные кавычки;

· указателем @f, где f имя функции;

· строкой, содержащей любую формулу с одной независимой переменной.

 

Функция quad( ) допускает задания четвертого входного параметра – абсолютной погрешности eps: q=quad(f, a, b, eps). По умолчанию эта погрешность принимается равной 1.0Е10-6. Если задать ее более высокой, (например, 1.0e-16), интеграл будет вычисляться точнее, зато существенно медленнее. О степени замедления можно судить по количеству обращений к вычислению значений подынтегральной функции (f(х)).

Вычисление интеграла аналитическими методами осуществляется в системе MatLab с помощью функции int(f(x), a, b), где f(x) – подынтегральная функция; a, b – пределы интегрирования.

Эта функция может вычислить:

· неопределенный интеграл;

· неопределенный интеграл с символьными переменными ;

· определенный интеграл с символьными значениями пределов интегрирования;

· определенный интеграл от алгебраической функции;

· кратные интегралы;

· несобственные интегралы.

 

Технология аналитического вычисления интегралов заключается в следующем:

1.Определение символьных переменных с помощью оператора syms.

2.Ввод подынтегрального выражения с присвоением ему имени: y=f(x).

3.Ввод функции int(y), если вычисляется неопределенный интеграл, или функции int(y,a,b), если вычисляется определенный интеграл в пределах [a;b].

4.Получение решения.

Пример 6.4.6-15. Вычислить неопределенный интеграл .

 

Пример 6.4.6-15
>> syms x a b >> y=x/(a+b*x^2); >> int(y) ans = 1/(2*b)*log(a+b*x^2) >>

Пример 6.4.6-16. Вычислить определенный интеграл .

 

Пример 6.4.6-16
>> syms x a b >> y=x/(1+x^2); >> int(y, a, b) ans = 1/2*log(1+b^2) – 1/2*log(1+a^2) >>

 

Пример 6.4.6-17. Вычислить определенный интеграл .

Пример 6.4.6-17
>> syms x >> y=x/(1+x^2); >> int(y, 1, 5) ans = 1/2*log(13) >>

 

Для получения численного значения интеграла необходимо активизировать строку ответа и нажать <ENTER>:

 

ans = 1.2825 >>

 

Пример 6.4.6-18. Вычислить двойной неопределенный интеграл .

Пример 6.4.6-18
>> syms x >> y=x/(1+x^2); >> z=int(y) z = -1/2*log(x-1) – 1/2*log(x+1) >> int(z) ans = -1/2*log(x-1)*(x-1)+x-1/2*log(x+1)*(x+1) >>

 

Или

 

Пример 6.4.6-18
>> syms x >> y=x/(1+x^2); >> int(int(y)) ans = -1/2*log(x-1)*(x-1)+x-1/2*log(x+1)*(x+1) >>

6.4.7. Тестовые задания по теме
«Численное интегрирование»

1. Численное значение интеграла равно

1)площади, ограниченной кривой f(x), осью 0x и двумя ординатами в точках a и b

2)площади прямоугольника

3)площади прямоугольной трапеции

4)в списке нет правильного ответа

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 701; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты