If f
is a symbolic expression, then
attempts to find another symbolic expression, F
, so that
diff(F)
=
f
. That is,
int(f)
returns the indefinite integral or antiderivative of
f
(provided one exists in closed form). Similar to
differentiation,
uses the symbolic object v
as the variable of integration, rather than
the variable determined by symvar
. See how int
works by
looking at this table.
Mathematical Operation |
MATLAB® Command |
---|---|
∫xndx={log(x)if n=−1xn+1n+1otherwise. |
|
∫0π/2sin(2x)dx=1 |
|
g = cos(at + ∫g(t)dt=sin(at+b)/a |
|
∫J1(z)dz=−J0(z) |
|
In contrast to differentiation, symbolic integration is a more complicated task. A number
of difficulties can arise in computing the integral:
-
The antiderivative,
F
, may not exist in closed form. -
The antiderivative may define an unfamiliar function.
-
The antiderivative may exist, but the software can’t find it.
-
The software could find the antiderivative on a larger computer, but runs out of time
or memory on the available machine.
Nevertheless, in many cases, MATLAB can perform symbolic integration successfully. For example, create the symbolic
variables
The following table illustrates integration of expressions containing those
variables.
f |
int(f) |
---|---|
syms x n f = x^n; |
int(f) ans = piecewise(n == -1, log(x), n ~= -1,... x^(n + 1)/(n + 1)) |
syms y f = y^(-1); |
int(f) ans = log(y) |
syms x n f = n^x; |
int(f) ans = n^x/log(n) |
syms a b theta f = sin(a*theta+b); |
int(f) ans = -cos(b + a*theta)/a |
syms u f = 1/(1+u^2); |
int(f) ans = atan(u) |
syms x f = exp(-x^2); |
int(f) ans = (pi^(1/2)*erf(x))/2 |
In the last example, exp(-x^2)
, there is no formula for the integral
involving standard calculus expressions, such as trigonometric and exponential functions. In
this case, MATLAB returns an answer in terms of the error function erf
.
If MATLAB is unable to find an answer to the integral of a function f
,
it just returns int(f)
.
Definite integration is also possible.
Definite Integral |
Command |
---|---|
∫abf(x)dx |
|
∫abf(v)dv |
|
Here are some additional examples.
f |
a, b |
int(f, a, b) |
---|---|---|
syms x f = x^7; |
a = 0; b = 1; |
int(f, a, b) ans = 1/8 |
syms x f = 1/x; |
a = 1; b = 2; |
int(f, a, b) ans = log(2) |
syms x f = log(x)*sqrt(x); |
a = 0; b = 1; |
int(f, a, b) ans = -4/9 |
syms x f = exp(-x^2); |
a = 0; b = inf; |
int(f, a, b) ans = pi^(1/2)/2 |
syms z f = besselj(1,z)^2; |
a = 0; b = 1; |
int(f, a, b) ans = hypergeom([3/2, 3/2],... [2, 5/2, 3], -1)/12 |
For the Bessel function (besselj
) example, it is possible to compute a
numerical approximation to the value of the integral, using the double
function. The commands
syms z a = int(besselj(1,z)^2,0,1)
return
a = hypergeom([3/2, 3/2], [2, 5/2, 3], -1)/12
and the command
returns
Integration with Real Parameters
One of the subtleties involved in symbolic integration is the “value” of
various parameters. For example, if a is any positive real number, the
expression
is the positive, bell shaped curve that tends to 0 as x tends to ±∞. You can create an example of this curve, for a = 1/2.
syms x
a = sym(1/2);
f = exp(-a*x^2);
fplot(f)
However, if you try to calculate the integral
without assigning a value to a, MATLAB assumes that a represents a complex number, and therefore
returns a piecewise answer that depends on the argument of a. If you are
only interested in the case when a is a positive real number, use
assume
to set an assumption on a
:
Now you can calculate the preceding integral using the commands
syms x f = exp(-a*x^2); int(f, x, -inf, inf)
This returns
Integration with Complex Parameters
To calculate the integral
for complex values of a
, enter
syms a x f = 1/(a^2 + x^2); F = int(f, x, -inf, inf)
Use syms
to clear all the assumptions on variables. For more
information about symbolic variables and assumptions on them, see Delete Symbolic Objects and Their Assumptions.
The preceding commands produce the complex output
The function signIm
is defined as:
To evaluate F
at a = 1 + i
, enter
High-Precision Numerical Integration Using Variable-Precision Arithmetic
High-precision numerical integration is implemented in the vpaintegral
function of the Symbolic Math Toolbox™. vpaintegral
uses variable-precision arithmetic in
contrast to the MATLAB
integral
function, which uses
double-precision arithmetic.
Integrate besseli(5,25*u).*exp(-u*25)
by using both
integral
and vpaintegral
. The
integral
function returns NaN
and issues a
warning while vpaintegral
returns the correct result.
syms u f = besseli(5,25*x).*exp(-x*25); fun = @(u)besseli(5,25*u).*exp(-u*25); usingIntegral = integral(fun, 0, 30) usingVpaintegral = vpaintegral(f, 0, 30)
Warning: Infinite or Not-a-Number value encountered. usingIntegral = NaN usingVpaintegral = 0.688424
For more information, see vpaintegral
.
See Also
int
| diff
| vpaintegral
External Websites
- Calculus Integrals (MathWorks Teaching Resources)
Доброго времени суток! Мы продолжаем говорить о численных методах. И сегодня мы поговорим о реализации численных методов интегрирования в среде Matlab.
Геометрический смысл интегрирования — это нахождение площади, которая находится под интегрируемой функцией. На рисунке показана площадь для определённого интеграла, ограниченного a и b.
Численное интегрирование не только в Matlab, но и в других средах, строится именно на нахождении площади. Для начала мы разберем простые методы:
Методы прямоугольников
- метод правых прямоугольников
- метод левых прямоугольников
- метод средних прямоугольников
Суть их в построение под кривой прямоугольников одинаковый ширины и нахождение их суммарной площади.Как видите, они различаются только точкой соприкосновения с кривой. Методы достаточны простые в реализации. Однако, погрешности данных методов весьма высоки. Точнее говоря, методы прямоугольников имеют первый порядок точности. Это означает, что ошибка пропорциональна шагу и накапливается со временем. Соответственно, чем меньше шаг, тем меньшую ошибку мы получим.
Также, следует отметить, что метод средних прямоугольников является более точным и предпочтительно использовать именно этот метод численного интегрирования, если у вас стоит выбор из этих трех методов. Эту точность можно доказать с помощью разложения в ряд Тейлора.
- Пример 1
Необходимо посчитать интеграл функции f(x) = xesin(x)x с шагом разбиения h = 0.02 на интервале от 0 до 1.
f=inline('x.*exp((sin(x)).^x)'); a=0; b=1; h=0.02; N=((b-a)/h)+1; i=1:N; %количество шагов x=a:h:b; %вычисление координат узлов сетки y=feval(f,x); %вычисление значений функции в узлах сетки m=2:N; y1(m-1)=y(m); Fr=sum(h*y1)
Вывод:
Fr = 1.0825
Функция feval (родственник функции eval) — интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции, однако, в отличии от eval, интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции.
Метод трапеций
Ещё одни популярный и в тоже время простой метод — метод трапеций. Аналогично методу прямоугольников строятся трапеции под кривой и находится их суммарная площадь. Данный метод имеет второй порядок точности (ошибка пропорциональна шагу в квадрате).
В Matlab метод трапеций реализован двумя функциями:
- cumtrapz()
- trapz()
Первую функцию обычно используют при работе с табличными данными или векторами. Откликом функции является n-интегралов, где n — число элементов вектора или элементов в каждом столбце матрицы. Следующие примеры отображают работу этой функции.
- Пример 2
Пусть функция y(x) имеет значения, представленные в виде следующего вектора: y = [1,2,3,4,5,6,7,8,9,10]
. Необходимо вычислить:
При этом a = 1; b = 1, 2, 3, 4 …,10.
Пишем в Matlab:
y=[1,2,3,4,5,6,7,8,9,10]; cumtrapz(y)
В выводе:
ans = 0 1.5000 4.0000 7.5000 12.0000 17.5000 24.0000 31.5000 40.0000 49.5000
- Пример 3
Теперь рассмотрим вариант работы с вектором и матрицей:
Функция y(x) задана в виде матрицы y(x) = [1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10]
. При этом аргумент представляет собой вектор: x = [1,3,7,9,10].
y = [1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10]; x = [1,3,7,9,10]; cumtrapz(x,y)
ans = 0 0 0 4.0000 8.0000 12.0000 18.0000 30.0000 42.0000 26.0000 43.0000 59.0000 30.5000 50.0000 68.5000
Вторая функция для интегрирования, работающая по методу трапеций Matlab — trapz(). Наиболее используемая студентами, так как позволяет работать не только с векторами и матрицами, но и с аналитической формой подынтегральной функции. Выглядит это примерно так:
- Пример 4
Необходимо вычислить определённый интеграл в диапазоне от 1 до 10 с шагом 0.5 для заданной функции:
x = 1:0.5:10; y = x.*exp(x) + log(x) +1; trapz(y)
Вывод:
ans = 4.0657e+005
Как видите, ничего сложного. А иногда даже удобнее некоторых онлайн сервисов для расчёта интегралов.
Метод Симпсона
Преимущество этого метода в том, что точки, взятые на каждом шаге на кривой, интерполируются полиномом второй степени. Проще говоря, соединяются параболой. Это даёт методу четвёртый порядок точности.
На рисунке красная кривая (1) - функция, зелёная(2) - полином.
В Matlab интегрирование с помощью метода Симпсона производит функция quad. Сразу разберем пример.
- Пример 5
Вычислить определённый интеграл с точностью 10-4 методом Симпсона.
%стандартным оператором quad('x.*exp(-x)+log(x)+1',0.001,10,1e-4) %зададим погрешность 10*-4 ans = 24.0323
Точность вычислений задается 4 параметром функции quad. Также, следует отметить, что в задании нижним пределом является 0, а мы использовали число 0.001. Это связано с тем, что при подстановке 0 функция не определена, а точнее, натуральный логарифм не существует.
% не стандартным оператором F = @(x) x*exp(-x)+log(x)+1; %функция a=0.01; %пределы интегрирования b=10; n=100; %количество частей деления h=(b-a)/n; %определяем шаг integ = F(a); for i=1:1:((n/2)-1) %сам алгоритм Симпсона x=a+2*h*i; integ=integ+2*F(x)+4*F(x+h); end integ=h*integ/3; 24.091
Ну и реализация этого метода вручную приведена здесь для общего развития. Этим я хочу подчеркнуть, что практически любой метод или алгоритм возможно написать самому, а не пользоваться стандартными методами Matlab.
Символьное интегрирование в Matlab
Часто нам необходимо найти интеграл от какой либо функции, не зная пределов интегрирования. Тогда нам нужно взять интеграл в общем или символьном виде. В Matlab за символьное интегрирование отвечает функция int. Она принимает как минимум 2 параметра: 1 — функция, 2 — имя переменной по которой берется интеграл. int(fun, var). Рассмотрим короткий пример:
- Пример 6
Вычислить неопределённый интеграл:
syms x %Определение переменной f=sym('a^x*e^(-x)'); %Определение функции int(f,x) %Вычисление неопределенного интеграла ans = 1/(log(a)-log(e))*a^x*e^(-x)
Следует отметить, что функция int также может считать и определенные интегралы, для этого нужно задать пределы интегрирования в 3 и 4 параметры функции соответственно.
Заключение
На этом я хочу закончить сегодняшнюю тему «Интегрирование в Matlab». Не забывайте, что Matlab позволяет программировать сложные алгоритмы, а не только использовать встроенный функционал. Любой численный метод можно реализовать и вызывать как функцию. Если у вас остались вопросы, то задавайте их в комментариях.
В этот раз без исходников, примеры небольшие.
Интегрирование
Если f
символьное выражение, затем
попытки найти другое символьное выражение, F
, так, чтобы diff(F)
=
f
. Таким образом, int(f)
возвращает неопределенный интеграл или антипроизводную f
(если каждый существует в закрытой форме). Подобно дифференцированию,
использует символьный объект v
когда переменная интегрирования, а не переменная определяется symvar
. Смотрите как int
работает путем рассмотрения этой таблицы.
Математическая операция |
MATLAB® Команда |
---|---|
∫xndx={log(x)если n=−1xn+1n+1в противном случае. |
|
∫0π/2sin(2x)dx=1 |
|
g = because(at + b) ∫g(t)dt=sin(at+b)/a |
|
∫J1(z)dz=−J0(z) |
|
В отличие от дифференцирования, символьное интегрирование является более сложной задачей. Много трудностей могут возникнуть в вычислении интеграла:
-
Антипроизводная,
F
, может не существовать в закрытой форме. -
Антипроизводная может задать незнакомую функцию.
-
Антипроизводная может существовать, но программное обеспечение не может найти его.
-
Программное обеспечение могло найти антипроизводную на более крупном компьютере, но заканчивается время или память на доступной машине.
Тем не менее, во многих случаях, MATLAB может выполнить символьное интегрирование успешно. Например, создайте символьные переменные
Следующая таблица иллюстрирует интегрирование выражений, содержащих те переменные.
f |
int (f) |
---|---|
syms x n f = x^n; |
int(f) ans = piecewise(n == -1, log(x), n ~= -1,... x^(n + 1)/(n + 1)) |
syms y f = y^(-1); |
int(f) ans = log(y) |
syms x n f = n^x; |
int(f) ans = n^x/log(n) |
syms a b theta f = sin(a*theta+b); |
int(f) ans = -cos(b + a*theta)/a |
syms u f = 1/(1+u^2); |
int(f) ans = atan(u) |
syms x f = exp(-x^2); |
int(f) ans = (pi^(1/2)*erf(x))/2 |
В последнем примере, exp(-x^2)
, нет никакой формулы для интеграла включающих стандартных выражений исчисления, таких как тригонометрические и показательные функции. В этом случае MATLAB дает ответ в терминах функции ошибок erf
.
Если MATLAB не может найти ответ на интеграл функционального f
, это только возвращает int(f)
.
Определенное интегрирование также возможно.
Определенный интеграл |
Команда |
---|---|
∫abf(x)dx |
|
∫abf(v)dv |
|
Вот некоторые дополнительные примеры.
f |
a, B |
int (f, a, b) |
---|---|---|
syms x f = x^7; |
a = 0; b = 1; |
int(f, a, b) ans = 1/8 |
syms x f = 1/x; |
a = 1; b = 2; |
int(f, a, b) ans = log(2) |
syms x f = log(x)*sqrt(x); |
a = 0; b = 1; |
int(f, a, b) ans = -4/9 |
syms x f = exp(-x^2); |
a = 0; b = inf; |
int(f, a, b) ans = pi^(1/2)/2 |
syms z f = besselj(1,z)^2; |
a = 0; b = 1; |
int(f, a, b) ans = hypergeom([3/2, 3/2],... [2, 5/2, 3], -1)/12 |
Для Функции Бесселя (besselj
) пример, возможно вычислить числовое приближение к значению интеграла, с помощью double
функция. Команды
syms z a = int(besselj(1,z)^2,0,1)
возврат
a = hypergeom([3/2, 3/2], [2, 5/2, 3], -1)/12
и команда
возвращается
Интеграция с действительными параметрами
Одна из тонкости, вовлеченной в символьное интегрирование, является “значением” различных параметров. Например, если a является каким-либо положительным вещественным числом, выражением
положительная, кривая, имеющая форму звонка, которая стремится к 0, как x стремится к ± ∞. Можно создать пример этой кривой для a = 1/2.
syms x
a = sym(1/2);
f = exp(-a*x^2);
fplot(f)
Однако, при попытке вычислить интеграл
не присваивая значение a, MATLAB принимает, что a представляет комплексное число, и поэтому дает кусочный ответ, который зависит от аргумента a. Если вы только интересуетесь случаем, когда a является положительным вещественным числом, используйте assume
установить предположение на a
:
Теперь можно вычислить предыдущий интеграл с помощью команд
syms x f = exp(-a*x^2); int(f, x, -inf, inf)
Это возвращается
Интеграция с комплексными параметрами
Вычислить интеграл
для комплексных чисел a
, войти
syms a x f = 1/(a^2 + x^2); F = int(f, x, -inf, inf)
Используйте syms
очистить все предположения на переменных. Для получения дополнительной информации о символьных переменных и предположениях на них, смотрите, Удаляют Символьные Объекты и Их Предположения.
Предыдущие команды производят комплексный выход
Функция signIm
задан как:
Оценивать F
в a = 1 + i
, войти
Численное интегрирование высокой точности Используя арифметику Переменной Точности
Численное интегрирование высокой точности реализовано в vpaintegral
функция Symbolic Math Toolbox™. vpaintegral
арифметика переменной точности использования в отличие от MATLAB integral
функция, которая использует арифметику с двойной точностью.
Интегрируйте besseli(5,25*u).*exp(-u*25)
при помощи обоих integral
и vpaintegral
. integral
функция возвращает NaN
и выдает предупреждение в то время как vpaintegral
возвращает правильный результат.
syms u f = besseli(5,25*x).*exp(-x*25); fun = @(u)besseli(5,25*u).*exp(-u*25); usingIntegral = integral(fun, 0, 30) usingVpaintegral = vpaintegral(f, 0, 30)
Warning: Infinite or Not-a-Number value encountered. usingIntegral = NaN usingVpaintegral = 0.688424
Для получения дополнительной информации смотрите vpaintegral
.
Main Content
Quadratures, double and triple integrals, and multidimensional derivatives
Numerical integration functions can approximate the value of an integral whether or not
the functional expression is known:
-
When you know how to evaluate the function, you can use
integral
to calculate integrals with specified bounds. -
To integrate an array of data where the underlying equation is unknown, you can use
trapz
, which performs trapezoidal integration
using the data points to form a series of trapezoids with easily computed areas.
For differentiation, you can differentiate an array of data using gradient
, which uses a finite difference formula to calculate numerical
derivatives. To calculate derivatives of functional expressions, you must use the
Symbolic Math Toolbox™
.
Functions
expand all
Integrate Functional Expressions
integral |
Numerical integration |
integral2 |
Numerically evaluate double integral |
integral3 |
Numerically evaluate triple integral |
quadgk |
Numerically evaluate integral — Gauss-Kronrod quadrature |
quad2d |
Numerically evaluate double integral — tiled method |
Integrate Numeric Data
cumtrapz |
Cumulative trapezoidal numerical integration |
trapz |
Trapezoidal numerical integration |
Finite Difference Derivatives
del2 |
Discrete Laplacian |
diff |
Differences and approximate derivatives |
gradient |
Numerical gradient |
Polynomials
Topics
- Integration to Find Arc Length
This example shows how to parametrize a curve and
compute the arc length usingintegral
. - Complex Line Integrals
This example shows how to calculate complex line integrals using the
'Waypoints'
option of theintegral
function. - Singularity on Interior of Integration Domain
This example shows how to split the integration domain to place a singularity on the boundary.
- Analytic Solution to Integral of Polynomial
This example shows how to use the
polyint
function to integrate polynomial expressions analytically. - Integration of Numeric Data
This example shows how to integrate a set of discrete velocity data numerically to approximate the distance traveled.
- Calculate Tangent Plane to Surface
This example shows how to approximate gradients of a function by finite differences.
Интеграция имеет дело с двумя принципиально разными типами проблем.
-
В первом типе дается производная функции, и мы хотим найти функцию. Поэтому мы в основном обращаем вспять процесс дифференциации. Этот обратный процесс известен как антидифференцирование, или нахождение примитивной функции, или нахождение неопределенного интеграла .
-
Второй тип проблем включает сложение очень большого количества очень маленьких величин, а затем определение предела, когда размер величин приближается к нулю, а число членов стремится к бесконечности. Этот процесс приводит к определению определенного интеграла .
В первом типе дается производная функции, и мы хотим найти функцию. Поэтому мы в основном обращаем вспять процесс дифференциации. Этот обратный процесс известен как антидифференцирование, или нахождение примитивной функции, или нахождение неопределенного интеграла .
Второй тип проблем включает сложение очень большого количества очень маленьких величин, а затем определение предела, когда размер величин приближается к нулю, а число членов стремится к бесконечности. Этот процесс приводит к определению определенного интеграла .
Определенные интегралы используются для определения площади, объема, центра тяжести, момента инерции, работы, выполняемой силой, и во многих других приложениях.
Поиск неопределенного интеграла с помощью 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 для вычисления интеграла выражения. Чтобы вывести выражение для неопределенного интеграла функции, мы пишем –
int(f);
Например, из нашего предыдущего примера –
syms x int(2*x)
MATLAB выполняет приведенный выше оператор и возвращает следующий результат –
ans = x^2
Пример 1
В этом примере давайте найдем интеграл некоторых часто используемых выражений. Создайте файл сценария и введите в нем следующий код –
syms x n int(sym(x^n)) f = 'sin(n*t)' int(sym(f)) syms a t int(a*cos(pi*t)) int(a^x)
Когда вы запускаете файл, он показывает следующий результат –
ans = piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)]) f = sin(n*t) ans = -cos(n*t)/n ans = (a*sin(pi*t))/pi ans = a^x/log(a)
Пример 2
Создайте файл сценария и введите в нем следующий код –
syms x n int(cos(x)) int(exp(x)) int(log(x)) int(x^-1) int(x^5*cos(5*x)) pretty(int(x^5*cos(5*x))) int(x^-5) int(sec(x)^2) pretty(int(1 - 10*x + 9 * x^2)) int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2) pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))
Обратите внимание, что функция pretty возвращает выражение в более читаемом формате.
Когда вы запускаете файл, он показывает следующий результат –
ans = sin(x) ans = exp(x) ans = x*(log(x) - 1) ans = log(x) ans = (24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5 2 4 24 cos(5 x) 24 x sin(5 x) 12 x cos(5 x) x cos(5 x) ----------- + ------------- - -------------- + ------------ 3125 625 125 5 3 5 4 x sin(5 x) x sin(5 x) ------------- + ----------- 25 5 ans = -1/(4*x^4) ans = tan(x) 2 x (3 x - 5 x + 1) ans = - (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2 6 5 4 3 7 x 3 x 5 x x - ---- - ---- + ---- + -- 12 5 8 2
Нахождение определенного интеграла с помощью MATLAB
По определению, определенный интеграл в основном является пределом суммы. Мы используем определенные интегралы, чтобы найти области, такие как область между кривой и осью x и область между двумя кривыми. Определенные интегралы могут также использоваться в других ситуациях, где требуемое количество может быть выражено как предел суммы.
Функция int может использоваться для определенной интеграции, передавая пределы, по которым вы хотите вычислить интеграл.
Вычислять
мы пишем,
int(x, a, b)
Например, для расчета стоимости мы пишем –
int(x, 4, 9)
MATLAB выполняет приведенный выше оператор и возвращает следующий результат –
ans = 65/2
Ниже приведен октавный эквивалент приведенного выше расчета –
pkg load symbolic symbols x = sym("x"); f = x; c = [1, 0]; integral = polyint(c); a = polyval(integral, 9) - polyval(integral, 4); display('Area: '), disp(double(a));
Octave выполняет код и возвращает следующий результат –
Area: 32.500
Альтернативное решение может быть дано с помощью функции quad (), предоставляемой Octave следующим образом:
pkg load symbolic symbols f = inline("x"); [a, ierror, nfneval] = quad(f, 4, 9); display('Area: '), disp(double(a));
Octave выполняет код и возвращает следующий результат –
Area: 32.500
Пример 1
Вычислим площадь, заключенную между осью x и кривой y = x 3 -2x + 5 и ординатами x = 1 и x = 2.
Требуемая площадь определяется как –
Создайте файл сценария и введите следующий код –
f = x^3 - 2*x +5; a = int(f, 1, 2) display('Area: '), disp(double(a));
Когда вы запускаете файл, он показывает следующий результат –
a = 23/4 Area: 5.7500
Ниже приведен октавный эквивалент приведенного выше расчета –
pkg load symbolic symbols x = sym("x"); f = x^3 - 2*x +5; c = [1, 0, -2, 5]; integral = polyint(c); a = polyval(integral, 2) - polyval(integral, 1); display('Area: '), disp(double(a));
Octave выполняет код и возвращает следующий результат –
Area: 5.7500
Альтернативное решение может быть дано с помощью функции quad (), предоставляемой Octave следующим образом:
pkg load symbolic symbols x = sym("x"); f = inline("x^3 - 2*x +5"); [a, ierror, nfneval] = quad(f, 1, 2); display('Area: '), disp(double(a));
Octave выполняет код и возвращает следующий результат –
Area: 5.7500
Пример 2
Найдите площадь под кривой: f (x) = x 2 cos (x) для −4 ≤ x ≤ 9.
Создайте файл сценария и напишите следующий код –
f = x^2*cos(x); ezplot(f, [-4,9]) a = int(f, -4, 9) disp('Area: '), disp(double(a));
Когда вы запускаете файл, MATLAB строит график –
Выход дан ниже –
a = 8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9) Area: 0.3326
Ниже приведен октавный эквивалент приведенного выше расчета –