Модуль-3-210700 / 2Дисциплина ВВЕДЕНИЕ В МАТЕМАТИЧЕСКИЕ ППП-210700 / Раздел-05-ППП-MatLab / Учебное пособие / Тема-05-04-MatLab
int(S)– возвращает символьное значение неопределенного интеграла от символьного выражения или массива символьных выражений S по переменной, которая автоматически определяется функцией findsym. Если S– скаляр или матрица, то вычисляется интеграл по переменной ‘х’.
int(S, v)– возвращает неопределенный интеграл от S по переменной v.
int(S, a, b)– возвращает определенный интеграл от S с пределами интегрирования от а до b, причем пределы интегрирования могут быть как символьными, так и числовыми.
int(S, v, a, b)– возвращает определенный интеграл от S по переменной v с пределами от а до b.
Пример 4.4-1.
» int(sin(x)^3, x)
» int(log(2*x), x)
— 2/3*1og(2) + 2/3*1og(31) + 2/3*3^(l/2)*atan(11/3*3^(l/2)) -.
» int([x^3 sin(x) exp(x)], x)
[ l/4*x^4, -cos(x), exp(x)]
» int(log(sin(x)),x,0,pi/2)
С помощью функции int() можно вычислять имеющие аналитическое решение сложных интегралов, например с бесконечными пределами (или одним из пределов), а также кратные интегралы.
Пример 4.4-2.
Пример 4.4-2.
» int(log(1+exp(-x),x,0,inf)
» syms x a b
» int(int(int(x^2 + y^2)*z, x, 0, a), y, 0, a), z, 0, a)
В системе MatLab вычисление интегралов реализовано численными методами трапеции, Симпсона, Ньютона-Котеса. Рассмотрим технологию использования этих методов.
Для вычисления интеграла по формуле трапеции в MatLab используется функция trapz(x,y ). Эта функция возвращает значение интеграла от функции y=f(x) –
При этом y может быть вектором или матрицей. Длины векторов x и y должны быть одинаковы. Если f(x) – матрица, то функция возвращает вектор значений интеграла каждого столбца матрицы. Если вектор узлов не задан — trapz(y), то в качестве ординат x используются их индексы (x=1:length(y)). Узлы по оси x могут быть и не равноотстоящими.
Пример 4.4-3. Вычислить значение интеграла методом трапеции.
Пример 4.4-3
>>% Точное значение интеграла от функции y=log(x),
>>% которое берется аналитически, равно 0.3863
Пример 4.4-4. Вычислить значение интеграла методом трапеции, если функция f(x) задана вектором y=[1 3 57 9].
Пример 4.4-4
>>y=[1 3 5 7 9];
>>trapz(x,)
>>% Точное значение интеграла от функции y=log(x),
>>% которое берется аналитически, равно 0.3863
Пример 4.4-5. Вычислить значения интегралов методом трапеции, если функции fi(x) (i=1:5) заданы матрицей y=[1 3 5 ; 3 5 7 ; 4 6 8; 4 7 9; 5 7 10].
Пример 4.4-5
>>y=[1 3 5 ; 3 5 7 ; 4 6 8; 4 7 9; 5 7 10];
Пример 4.4-6. Вычислить значение интеграла методом трапеции, для функции yn=log(xn) с неравномерным шагом по оси x.
Пример 4.4-6
0.3859
Пример 4.4-7. Вычислить значение интеграла методом трапеции, если аргумент x и функция f(x) заданы векторами x=[1 3 7 9 10], y=[1 3 5 7 9].
Пример 4.4-7
Пример 4.4-8. Вычислить значение интеграла методом трапеции, если аргумент 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].
Пример 4.4-8
>>y=[1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10];
Накопительное суммирование по формуле трапеции в 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 – пределы интегрирования.
Эта функция может вычислить:
неопределенный интеграл с символьными переменными ;
определенный интеграл с символьными значениями пределов интегрирования;
определенный интеграл от алгебраической функции;
Технология аналитического вычисления интегралов заключается в следующем:
Определение символьных переменных с помощью оператора syms.
Ввод подынтегрального выражения с присвоением ему имени: y=f(x).
Ввод функции int(y), если вычисляется неопределенный интеграл, или функции int(y,a,b), если вычисляется определенный интеграл в пределах [a;b].
Пример 4.4-9. Вычислить неопределенный интеграл .
Пример 4.4-9
Пример 4.4-10. Вычислить определенный интеграл .
Пример 4.4-10
1/2*log(1+b^2) – 1/2*log(1+a^2)
Пример 4.4-11. Вычислить определенный интеграл.
Пример 4.4-11
1/2*log(13)
Для получения численного значения интеграла необходимо активизировать строку ответа и нажать <ENTER>:
Пример 4.4-12. Вычислить двойной неопределенный интеграл .
Пример 4.4-12
-1/2*log(x-1) – 1/2*log(x+1)
Пример 4.4-12
MATLAB – Интеграция
Интеграция имеет дело с двумя принципиально разными типами проблем.
В первом типе дается производная функции, и мы хотим найти функцию. Поэтому мы в основном обращаем вспять процесс дифференциации. Этот обратный процесс известен как антидифференцирование, или нахождение примитивной функции, или нахождение неопределенного интеграла .
Второй тип проблем включает сложение очень большого количества очень маленьких величин, а затем определение предела, когда размер величин приближается к нулю, а число членов стремится к бесконечности. Этот процесс приводит к определению определенного интеграла .
В первом типе дается производная функции, и мы хотим найти функцию. Поэтому мы в основном обращаем вспять процесс дифференциации. Этот обратный процесс известен как антидифференцирование, или нахождение примитивной функции, или нахождение неопределенного интеграла .
Второй тип проблем включает сложение очень большого количества очень маленьких величин, а затем определение предела, когда размер величин приближается к нулю, а число членов стремится к бесконечности. Этот процесс приводит к определению определенного интеграла .
Определенные интегралы используются для определения площади, объема, центра тяжести, момента инерции, работы, выполняемой силой, и во многих других приложениях.
Поиск неопределенного интеграла с помощью MATLAB
По определению, если производная функции f (x) есть f ‘(x), то мы говорим, что неопределенный интеграл от f’ (x) по x равен f (x). Например, поскольку производная (по x) x 2 равна 2x, мы можем сказать, что неопределенный интеграл от 2x равен x 2 .
f ‘(x 2 ) = 2x , следовательно,
∫ 2xdx = x 2 .
Неопределенный интеграл не является уникальным, потому что производная x 2 + c для любого значения константы c также будет 2x.
Это выражается в символах как –
∫ 2xdx = x 2 + c .
Где c называется «произвольной константой».
MATLAB предоставляет команду int для вычисления интеграла выражения. Чтобы вывести выражение для неопределенного интеграла функции, мы пишем –
Например, из нашего предыдущего примера –
MATLAB выполняет приведенный выше оператор и возвращает следующий результат –
Пример 1
В этом примере давайте найдем интеграл некоторых часто используемых выражений. Создайте файл сценария и введите в нем следующий код –
Когда вы запускаете файл, он показывает следующий результат –
Пример 2
Создайте файл сценария и введите в нем следующий код –
Обратите внимание, что функция pretty возвращает выражение в более читаемом формате.
Когда вы запускаете файл, он показывает следующий результат –
Нахождение определенного интеграла с помощью MATLAB
По определению, определенный интеграл в основном является пределом суммы. Мы используем определенные интегралы, чтобы найти области, такие как область между кривой и осью x и область между двумя кривыми. Определенные интегралы могут также использоваться в других ситуациях, где требуемое количество может быть выражено как предел суммы.
Функция int может использоваться для определенной интеграции, передавая пределы, по которым вы хотите вычислить интеграл.
Например, для расчета стоимости мы пишем –
MATLAB выполняет приведенный выше оператор и возвращает следующий результат –
Ниже приведен октавный эквивалент приведенного выше расчета –
Octave выполняет код и возвращает следующий результат –
Альтернативное решение может быть дано с помощью функции quad (), предоставляемой Octave следующим образом:
Octave выполняет код и возвращает следующий результат –
Пример 1
Вычислим площадь, заключенную между осью x и кривой y = x 3 -2x + 5 и ординатами x = 1 и x = 2.
Требуемая площадь определяется как –
Создайте файл сценария и введите следующий код –
Когда вы запускаете файл, он показывает следующий результат –
Ниже приведен октавный эквивалент приведенного выше расчета –
Octave выполняет код и возвращает следующий результат –
Альтернативное решение может быть дано с помощью функции quad (), предоставляемой Octave следующим образом:
Integration in MATLAB
Integration is defined as the process of finding the anti derivative of a function. It is used to calculate area, volume, displacement, and many more. In this article, we will see how to perform integration on expressions in MATLAB.
There are two types of Integration:
- Indefinite integral: Let f(x) be a function. Then the family of all antiderivatives is called the indefinite integral of a function f(x) and it is denoted by ∫f(x)dx. The symbol ∫f(x)dx is read as the indefinite integral of f(x) with respect to x. Thus ∫f(x)dx= ∅(x) + C. Thus, the process of finding the indefinite integral of a function is called the integration of the function.
- Definite integrals: Definite integrals are the extension after indefinite integrals, definite integrals have limits [a, b]. It gives the area of a curve bounded between given limits. It is denoted by ∫f(x)dx under the limit of a and b, it denotes the area of curve F(x) bounded between a and b, where a is the lower limit and b is the upper limit.
Before moving to Integration, we first need to assign an expression to a variable in MATLAB which can be done by using the inline() function. It creates a function to contain the expression.
Syntax:
f = inline(expr, var)
Here f is the inline function created to contain the expression, expr can be any expression and var is the variable in that expression.
Now, after assigning the expression using the inline() function, we need to integrate the expression. This task can be performed using the int() function. The int() function is used to integrate expressions in MATLAB.
Syntax:
- f: Expression
- v: Variable
Indefinite Integral
Indefinite integrals are those integrals that do not have any limit and containing an arbitrary constant.
Step-wise Approach:
Step 1: Use Inline function for the creation of the function for integration.
integral
q = integral( fun , xmin , xmax ) численно интегрирует функциональный fun от xmin к xmax использование глобальной адаптивной квадратуры и ошибочных допусков по умолчанию.
q = integral( fun , xmin , xmax , Name,Value ) задает дополнительные опции с одним или несколькими Name,Value парные аргументы. Например, задайте ‘WayPoints’ сопровождаемый вектором из вещественных или комплексных чисел, чтобы указать на отдельные моменты для интегратора, чтобы использовать.
Примеры
Несобственный интеграл
Создайте функцию f ( x ) = e — x 2 ( ln x ) 2 .
Оцените интеграл от x=0 к x=Inf .
Параметризованная функция
Создайте функцию f ( x ) = 1 / ( x 3 — 2 x — c ) одним параметром, c .
Оцените интеграл от x=0 к x=2 в c=5 .
Смотрите Функции Параметризации для получения дополнительной информации об этом методе.
Особенность в нижнем пределе
Создайте функцию f ( x ) = ln ( x ) .
Оцените интеграл от x=0 к x=1 с ошибочными допусками по умолчанию.
Оцените интеграл снова, на этот раз с 12 десятичными разрядами точности. Установите RelTol обнулять так, чтобы integral только попытки удовлетворить допуску абсолютной погрешности.
Комплексное контурное интегрирование Используя Waypoints
Создайте функцию f ( z ) = 1 / ( 2 z — 1 ) .
Объединяйтесь в комплексной плоскости по треугольному пути от 0 к 1+1i к 1-1i к 0 путем определения waypoints.
Функция с векторным знаком
Создайте функцию с векторным знаком f ( x ) = [ sin x , sin 2 x , sin 3 x , sin 4 x , sin 5 x ] и объединяйтесь от x=0 к x=1 . Задайте ‘ArrayValued’,true оценивать интеграл функции с векторным знаком или со знаком массива.
Несобственный интеграл колебательной функции
Создайте функцию f ( x ) = x 5 e — x sin x .
Оцените интеграл от x=0 к x=Inf , корректировка абсолютных и относительных погрешностей.
Входные параметры
fun — Подынтегральное выражение
указатель на функцию
Подынтегральное выражение в виде указателя на функцию, который задает функцию, которая будет интегрирована от xmin к xmax .
Для проблем со скалярным знаком, функционального y = fun(x) должен принять аргумент вектора, x , и возвратите векторный результат, y . Это обычно означает тот fun должен использовать операторы массивов вместо матричных операторов. Например, используйте .* ( times ) вместо * ( mtimes ). Если вы устанавливаете ‘ArrayValued’ опция к true , затем fun должен принять скаляр и возвратить массив фиксированного размера.
xmin — Нижний предел x
вещественное число | комплексное число
Нижний предел x в виде действительного (конечный или бесконечный) скалярное значение или комплексное (конечное) скалярное значение. Если любой xmin или xmax являются комплексными, затем integral аппроксимирует интеграл по траектории от xmin к xmax по пути к прямой линии.
Типы данных: double | single
Поддержка комплексного числа: Да
xmax — Верхний предел x
вещественное число | комплексное число
Верхний предел x в виде вещественного числа (конечный или бесконечный) или (конечное) комплексное число. Если любой xmin или xmax являются комплексными, integral аппроксимирует интеграл по траектории от xmin к xmax по пути к прямой линии.
Типы данных: double | single
Поддержка комплексного числа: Да
Аргументы name-value
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, . NameN, ValueN .
Пример: integral(fun,a,b,’AbsTol’,1e-12) устанавливает погрешность абсолютной погрешности приблизительно 12 десятичным разрядам точности.
AbsTol — Допуск абсолютной погрешности
1e-10 (значение по умолчанию) | неотрицательное вещественное число
Допуск абсолютной погрешности в виде разделенной запятой пары, состоящей из ‘AbsTol’ и неотрицательное вещественное число. integral использует допуск абсолютной погрешности, чтобы ограничить оценку абсолютной погрешности, |q – Q |, где q является вычисленным значением интеграла, и Q является (неизвестным) точным значением. integral может обеспечить больше десятичных разрядов точности, если вы уменьшаете допуск абсолютной погрешности.
Примечание
AbsTol и RelTol работать совместно. integral может удовлетворить допуску абсолютной погрешности или допуску относительной погрешности, но не обязательно обоим. Для получения дополнительной информации об использовании этих допусков смотрите раздел Tips.
Пример: integral(fun,a,b,’AbsTol’,1e-12) устанавливает погрешность абсолютной погрешности приблизительно 12 десятичным разрядам точности.
Типы данных: single | double
RelTol — Допуск относительной погрешности
1e-6 (значение по умолчанию) | неотрицательное вещественное число
Допуск относительной погрешности в виде разделенной запятой пары, состоящей из ‘RelTol’ и неотрицательное вещественное число. integral использует допуск относительной погрешности, чтобы ограничить оценку относительной погрешности, |q – Q | / | Q |, где q является вычисленным значением интеграла, и Q является (неизвестным) точным значением. integral может обеспечить более значительные цифры точности, если вы уменьшаете допуск относительной погрешности.
Примечание
RelTol и AbsTol работать совместно. integral может удовлетворить допуску относительной погрешности или допуску абсолютной погрешности, но не обязательно обоим. Для получения дополнительной информации об использовании этих допусков смотрите раздел Tips.
Пример: integral(fun,a,b,’RelTol’,1e-9) устанавливает погрешность относительной погрешности приблизительно 9 значительным цифрам.
Типы данных: single | double
ArrayValued — Функциональный флаг со знаком массива
false или 0 (значение по умолчанию) | true или 1
Функциональный флаг со знаком массива в виде разделенной запятой пары, состоящей из ‘ArrayValued’ и числовой или логический 1 TRUE ) или 0 ложь ). Установите этот флаг на true или 1 указать на тот fun функция, которая принимает скалярный вход и возвращает вектор, матрицу или массив N-D выход.
Значение по умолчанию false указывает на тот fun функция, которая принимает векторный вход и возвращает векторный выходной параметр.
Пример: integral(fun,a,b,’ArrayValued’,true) указывает, что подынтегральное выражение является функцией со знаком массива.
Waypoints — Интегрирование waypoints
вектор
Интегрирование waypoints в виде разделенной запятой пары, состоящей из ‘Waypoints’ и вектор из вещественных или комплексных чисел. Используйте waypoints, чтобы указать на точки в интервале интегрирования, что вы хотели бы, чтобы интегратор использовал в начальной mesh:
Добавьте больше точек оценки около интересных функций функции, такой как локальные экстремальные значения.
Объединяйтесь эффективно через разрывы подынтегрального выражения путем определения местоположений разрывов.
Выполните комплексные контурные интегрирования путем определения комплексных чисел как waypoints. Если xmin xmax , или любая запись waypoints вектора является комплексной, затем интегрирование выполняется по последовательности путей к прямой линии в комплексной плоскости. В этом случае все пределы интегрирования и waypoints должны быть конечными.
Не используйте waypoints, чтобы задать сингулярность. Вместо этого разделите интервал и добавьте, что результаты разделяют интеграции с сингулярностью в конечных точках.
Пример: integral(fun,a,b,’Waypoints’,[1+1i,1-1i]) задает два комплекса waypoints вдоль интервала интегрирования.
Типы данных: single | double
Поддержка комплексного числа: Да