Как сделать интеграл в матлабе

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

4 -е занятие по MATLAB

ЛАБОРАТОРНАЯ РАБОТА №4

I. Базовые операции символьной математики

системы MATLAB — SIMBOLIC MATHEMATICS TOOLBOX

1. Создание символьных переменных и массивов (x, y, z, a, b, c и т.д.).

Первый способ c помощью команды sym: x = sym('x'); y = sym('y'); z = sym('z');

Второй способ с помощью команды syms: syms a b c;

1.1. Создание символьных матриц А1 (А2) или массивов:

1-й способ : A1 = sym('[a1 b1 c1;d1 e1 f1;g1 h1 k1]'); % матрица А1 размера 3 ´ 3

% Вывод матрицы А1 в командной строке

2- й способ : syms a b c d e f g h k

A2 = [a2 b2 c2;d2 e2 f2;g2 h2 k2]; % Матрица А2 размера 3 ´ 3

% Вывод матрицы А2 в командной строке

1.2. Проверить рабочую область c помощью команды whos.

1.3. Символьные числовые матрицы и элементы:

Ac1=sym([1 3 7;2 4 6;1 7 5]); % Без апострофа

Ас2 = sym('7'); % С апострофом

1.4. Детерминант символьной матрицы — det :

a1*e1*k1-a1*f1*h1-d1*b1*k1+d1*c1*h1+g1*b1*f1-g1*c1*e1

a2*e2*k2-a2*f2*h2-d2*b2*k2+d2*c2*h2+g2*b2*f2-g2*c2*e2

% Детерминант матрицы 2-го порядка A 3= sym ('[ a 1 b 1; c 1 d 1]')

1 .5. Выделение диагонали заданной символьной матрицы:

1.6. Выделение диагонали символьной числовой матрицы

1.7. Создание символьной диагональной матрицы по заданной:

1.8. Создание числовой символьной диагональной матрицы по заданной

1.9. Вычисление собственных значений и собственных векторов символьно-числовой матрицы.

Собственные векторы — это такие векторы v , которые преобразуются матрицей А в векторы, отличающиеся от исходных лишь скалярным множителем s :

% Вычисление собственных векторов и собственных значений квадратной матрицы А — eig

v = % Матрица правых собственных векторов матрицы А

s = % Диагональная матрица собственных значений матрицы А

% Справедливо следующее спектральное разложение: ,

% Спектральное разложение может быть осуществлено по вектору столбцу, например

% Первый собственный вектор v1 — это первый столбец матрицы v: v1=(0, 1, 8)

% Второй собственный вектор v2 — это второй столбец матрицы v: v2=(1, 2 ,16/3)

% Третий собственный вектор v3 — это третий столбец матрицы v: v3=(0, 0 ,1)

% Собственные числа матрицы А: s1=-2, s2=-1, s3=-5/2=-2.5

% Справедливы следующие соотношения:

A*v1=s1*v1; A*v2=s2*v2; A*v3=s3*v3.

Задание: Найти собственные векторы и собственные значения матрицы [7,-2,0;-2,6,-2;0,-2,5] , проверить результат.

2. Графические построения символьных функций — ezplot .

2.1. 1-й способ. Область определения по умолчанию от -2* pi до 2* pi

2.2. 2-й способ обращения к функции ezplot . Задаваемая область определения

2 .3. 3-й способ обращения к функции ezplot . Определение функции под знаком ezplot

2 .4. 4-й способ обращения к функции ezplot .

3. Свойства собственнх значений матрицы:

где — след матрицы А, т.е. сумма элементов главной диагонали, — собственные значения матрицы А, , — размерность матрицы А.

% В системе MATLAB

4. Создание полиномов и характеристических полиномов.

4.1. Создание полинома по вектору заданных коэффициентов — poly2sym .

% Переменная х устанавливается по умолчанию. Другие переменные следует определять

4.2. Характеристический полином заданной символьно-числовой матрицы

Характеристический полином определяется из следующего характеристического уравнения для заданной матрицы А:

где — единичная матрица

Каждое собственное число матрицы А удовлетворяет ее характеристическому уравнению

% Для чисто числовой матрицы функция poly определяет только строку коэффициентов

Задание. Вычислить собственные значения матрицы А с присвоением результата и подставить каждое из собственных значений в полученный характеристический полином. Результат должен быть равен нулю. Использовать функцию упрощения результата вычислений simplify.

4.3. Выделение коэффициентов из заданного полинома — sym2poly.

% Полученную вектор-строку можно переопределить с присвоением

Задание. Сформировать характеристический полином по полученному вектору-строки с использованием функции poly2sym по переменной z.

5. Решение символьных конечных уравнений — solve .

5.1. Решение квадратного уравнения

[ -1-i*7^(1/2)] % Комплексное решение, i — мнимая единица

5.2. Решение нелинейных уравнений.

1.1712296525016659939038330755362

5.3. Решение систем нелинейных уравнений.

5.4. Решение систем трансцендентных уравнений.

Пример. Решить следующую систему трансцендентных уравнений:

где t1, t2, t3 — искомые переменные.

syms t1 t2 t3

[T1,T2,T3]=solve('(1-0.5)*exp(t3)-2*exp(t2)+2*exp(t1)-1=0,(1-0.5)*exp(0.5*t3)-2*exp(0.5*t2)+2*exp(0.5*t1)-1=0,(1-0.5)*exp(0.25*t3)-2*exp(0.25*t2)+2*exp(0.25*t1)-1=0');

% Функция vpa используется д ля задания количества значащих цифр

O4=(1-0.5)*exp(T3(4))-2*exp(T2(4))+2*exp(T1(4))-1 % Для проверки

% Каждое из 6 решений должно удовлетворять любому из 3-х уравнений

II. Вычисление символьных выражений

с различным представлением результатов.

Вычисление пределов в MATLAB. Вычисление сумм, произведений.

в пакете SIMBOLIC MATHEMATICS TOOLBOX.

1. Представление результата в виде рационального числа — 'r' .

1.1. Вычисление дроби 1/3:

1.2. Вычисление натурального логарифма от 3 — :

4947709893870347*2^(-52)

1.3. Вычисление десятичного логарифма от 3 — :

8595052419864061*2^(-54)

1.4. Вычисление логарифма по основанию два от 3 — :

7138036527644009*2^(-52)

Замечание: Представление в виде рационального числа имеет формат либо p/q либо p*2^q, где p, q — целые числа.

2. Представление результата в виде числа с плавающей точкой — 'f' .

Все величины представляются в форме '1.F'*2^(e) или '-1.F'*2^(e), где F — это ряд из 13 шестнадцатиричных цифр, а e — целое число. В случае, когда результат вычисления не может быть представлен точно в форме с плавающей точкой, то выводятся буквы, имеющие то или иное назначение в интерпретации результата.

2.1. Вычисление дроби 1/2:

'1.0000000000000'*2^(-1)

% Результат записан в виде точного представления в арифметике с плавающей точкой

2.2. Вычисление дроби 1/5:

'1.999999999999a'*2^(-3)

% Результат записан в виде приближенного (буква а — approximately) представления в арифметике с плавающей точкой.

3. Рациональное число с оценкой погрешности полученного представления —'e'.

Рациональное представление добавляется переменной 'eps', которая оценивает разницу между теоретическим рациональным выражением (результатом) и его действительной величиной с плавающей точкой.

3.1. Вычислить дробь 1/2:

1/2 % Результат как и в случае рационального представления

3.2. Вычислить дробь 1/3:

3.3. Вычислить выражение :

7248263982714163*2^(-52)

3.4. Вычислить дробь 3/33

4. Формат десятичного числа — 'd' .

4.1. Вычислить дробь 1/3:

.33333333333333331482961625624739 % По умолчанию поддерживаются 16 цифр %мантиссы полученного числа

4.2. вычислить выражение :

.10000000000000000762976984109189e51

4.3. Вычислить дробь 1/3 с 23 знаками в мантиссе с использованием функции vpa :

.33333333333333333333333

4.4. Вычислить дробь 1/3 с 23 знаками в мантиссе с использованием vpa и digits

.33333333333333333333333

% Использование только digits приводит к выводу результата с заданным количеством цифр, но %с ограниченной точностью (в формате 'd'):

.33333333333333331482962

5. Вычисление пределов — limit.

Вычисление пределов от символьных выражений производится с помощью встроенной функции limit . Соответствие между традиционным математическим описанием и символьным системы MATLAB приводится в таблице 1.

Примечание: символ бесконечность ( ) в MATLAB записывается как inf . Неопределенное значение в MATLAB записывается как NaN .

5.1. Вычислить предел выражения :

1 % Предел отношения равен единицы

5.2. Вычислить предел выражения :

exp(1) % Ответ: число е в первой степени

5.3. Вычислить предел выражения при стремлении х к нулю слева:

-inf % Ответ: минус бесконечность

5.4. Вычислить предел выражения при стремлении х к нулю справа:

inf % Ответ: бесконечность (т.е. плюс бесконечность)

limit((sin(x+h)-sin(x))/h,h,0) returns cos(x)

5.5. Вычислить предел выражения :

6 . Дифференцирование функций одной переменной — diff .

6.1. Найти производную функции по переменной х:

6.2. Найти производную функции по переменной х:

6.3. Найти производную функции по переменной h :

6.4. Найти вторую производную от функции по переменной h :

6.5. Найти вторую производную от функции по переменной х:

6.6. Найти третью производную от функции по переменной h :

7. Интегрирование функции одной переменной — int .

7.1. Вычисление неопределенного интеграла:

% Вычислить неопределенный интеграл от функции по переменной h :

% Вычислить неопределенный интеграл от функции по переменной x :

1/2*x^2+2*h*x+h^2*log(x) % В ответе имеется в виду натуральный логарифм

7.2. Вычисление определенного интеграла.

% Вычислить определенный интеграл :

% Вычислить определенный интеграл по переменной h :

2*sin(x)*x^2*pi+4*sin(x)*x*pi^2+8/3*sin(x)*pi^3-sin(x)*x^2-sin(x)*x-1/3*sin(x)

5.2832*sin(x)*x^2+38.479*sin(x)*x+82.353*sin(x)

8. Решение обыкновенных дифференциальных уравнений в символьном виде — dsolve .

Решатель дифференциальных уравнений может быть использован, если решение существует в аналитическом виде. Практически это означает, что решателем dsolve можно пользоваться только при поиске решения линейного дифференциального уравнения (или системы линейных уравнений).

8 .1. Решить дифференциальное уравнение с начальным условием Построить график решения в интервале [-0.5, 7].

% Создадим следующий сценарий под именем sdif1 :

% Решение диф.уравнения в символьном виде

ezplot(x1,[-0.5,7]),grid,title(' Диф.уравнение ')

% Область построения графика решения можно задавать без квадратных скобок

8 .2. Решить систему однородных дифференциальных уравнений с начальными условиями Построить график решения в интервале [-0.5, 13].

% Создадим следующий сценарий под именем sdif2 :

ezplot(x1,0,13),grid,hold on,ezplot(x2,[0,13]),title ('Однородная система 2-х уравнений')

8.3. Решить систему неоднородных дифференциальных уравнений

с нулевыми начальными условиями и построить график решения в интервале [0, 5] для первой координаты и в интервале [0, 9] для второй координаты .

% Создадим следующий сценарий под именем sdif3 :

[x1,x2]=dsolve('Dx1=-3*x1+12','Dx2=2.5*x1-1.25*х2','x1(0)=0',

ezplot(x1,[0,5]),grid,hold on,ezplot(x2,[0,9]),title( ' Неоднородная система 2-х уравнений ')

8.4. Решить дифференциальное уравнение 2-го порядка с нулевыми начальными условиями и построить график решения в интервале [-0.2, 9] .

% Создадим следующий сценарий под именем sdif4 :

ezplot(x,[-0.2 9]),grid,title ('Д иф.уравнение 2-го порядка ')

8.5. Решить дифференциальное уравнение 3-го порядка с нулевыми начальными условиями и построить график решения в интервале [-0.2, 21] .

% Создадим следующий сценарий под именем sdif5 :

ezplot(x,[-0.2 21]),grid,title ('Диф.уравнение 3-го порядка')

8.6. Решить неоднородную систему дифференциальных уравнений 3-го порядка

с нулевыми начальными условиями и построить график решения по каждой координате в одной системе координат в интервале [-1, 19] с различными цветами по , , .

% Создадим следующий сценарий под именем sdif6 :

[x1,x2,x3]=dsolve('Dx1=-x1+2.3','Dx2=x3','Dx3=1.025*x1-0.4*x3-0.8*х2',

ezplot(x1,[-1,19]),grid, hold on,ezplot(x2,[-1,19],

title ('Н еоднородная система 3-го порядка '),

% Функция ezplot не позволяет строить графики с заданными цветами. Применим fplot . Для этого в функцию fplot следует вставить решения из командного окна MATLAB. Например, решение по первой координате имеет вид

% Тогда формат записи fplot для графика по х1 будет следующий (с красным цветом):

% Через hold on можно добавить еще fplot по второй координате х2 и по третьей х3.

¾ Для объекта с передаточной функцией решить соответствующее дифференциальное уравнение при нулевых начальных условиях и построить график решения (переходный процесс).

¾ Для того же объекта с передаточной функцией W(s) записать систему дифференциальных уравнений первого порядка, решить ее и сравнить с решением соответствующего дифференциального уравнения 3-го порядка.

¾ Исследовать переходной процесс по выходным координатам двух колебательных звеньев, соединенных последовательно. Передаточные функции звеньев принять в виде:

¾ Решение в символьном виде систем дифференциальных уравнений сравнить с решением численного метода с помощью решателя ode45.


Создание модели проходит в 3 этапа: модель - алгоритм - программа.

На первом этапе строится модель, наиболее полно отображающая свойства объекта. Модель исследуется теоретическими методами, что позволяет получить важные предварительные знания об объекте. Второй этап включает в себя разработку алгоритма, для реализации модели на компьютере. Модель представляется в форме, удобной для применения численных методов, определяется последовательность вычислительных и логических операций, которые необходимо провести для нахождения искомых величин с заданной точностью. На третьем этапе создаются программы, переводящие модель и алгоритм на доступный компьютеру язык. К ним предъявляются требования экономичности и адаптивности к особенностям решаемых задач и используемых компьютеров. Их можно назвать электронным эквивалентом изучаемого объекта, уже пригодным для непосредственного испытания на компьютере.

Целью данной курсовой работы является изучение приёмов численного и символьного интегрирования на базе математического пакета прикладных программ, а также реализация математической модели, основанной на методе интегрирования.

Возможны два различных подхода к определению определённого интеграла.


ОПРЕДЕЛЕНИЕ 1: приращение F(b)-F(a) любой из преобразованных функций F(x)+c при изменении аргумента от x=a до x=b называют определённым интегралом от a до b функции F и обозначается .


Причём функция F является первообразной для функции f на некотором промежутке D, а числа а и b принадлежат этому промежутку. Это можно записать следующим образом: , это формула Ньютона-Лейбница.





ОПРЕДЕЛЕНИЕ 2: Если при любой последовательности разбиений отрезка [a;b] таких, что д=maxДxi>0 (n>?) и при любом выборе точек интегральная сумма уk=f(еi) Дxi стремится к одному и тому же конечному пределу А, то это число А и есть определённый интеграл, т.е Дxi=A(2). Где Дхi=xi-xi-1 (i=1,2,…,n) е=maxДxi - начало разбиения произвольная точка из отрезка [xi-1;xi]сумма всех произведений f(еi)Дxi, (i=1,…,n). Простыми словами, определенный интеграл есть предел интегральной суммы, число членов которой неограниченно возрастает, а каждое слагаемое стремится к нулю.



Всякая непрерывная на отрезке [a,b] функция f интегрируема на отрезке [a,b], функция f неотрицательна, но определённый интеграл численно равен S криволинейной трапеции, ограниченной графиком функции f, осью абсцисс и прямыми x=a и x=b, .

Рассмотрим основные методы интегрирования: метод трапеций, метод прямоугольников и метод Симпсона.

Теперь рассмотрим первый вид приближённого вычисления:требуется вычислить определённый интеграл: .

Пусть на отрезке [a,b] задана непрерывная функция y=f(x). Разделим отрезок [a,b], аналогично как в формуле трапеций: точками a=x0, x1, x2,…, xn=b на n равных частей длины Дх, где Дх=(b-a)/n.


Обозначим через y0, y1 ,y2,…, yn-1, yn значение функции f(x) в точках x0, x1, x2…, xn, то есть, если записать в наглядной формуле:

Y0=f(x0), y1=f(x1), y2=f(x2)…yn,=f(xn).

В данном способе подынтегральную функцию заменяем функцией, которая имеет ступенчатый вид.

Составим суммы: y0Дx+ y1Дx1+ y2Дx2…+yn-1Дx; Y1Дx+ y2Дx+…+ynДx.

В результате вычислений получаем конечную формулу прямоугольников:



Возьмём определённый интеграл , где -- непрерывная подынтегральная функция, которую мы для наглядности будем предполагать положительной. При вычислении интеграла с помощью формулы трапеций подынтегральная функция f заменяется функцией, график которой представляет собой ломанную линию звенья которой соединяют концы ординат yi-1 и yi (i=1,2,…,n).

В библиотеке Matlab есть функция trapz, вычисляющая определенный интеграл методом трапеций. Функция trapz имеет следующие синтаксические конструкции:

  • — trapz(Y) — возвращает определенный интеграл, используя интегрирование методом трапеций с единичным шагом между отсчетами. Если Y — вектор, то trapz(Y) возвращает интеграл элементов вектора Y, если Y — матрица, то trapz(Y) возвращает вектор-строку, содержащую интегралы каждого столбца этой матрицы;
  • — trapz(X,Y) — возвращает интеграл от функции Y по переменной X, используя метод трапеций (пределы интегрирования в этом случае задаются начальным и конечным элементами вектора X);
  • — trapz(. dim) — возвращает интеграл по строкам или по столбцам для входной матрицы в зависимости от значения переменной dim.

Технологию вычисления интеграла в Matlab рассмотрим на задаче примера 4.33.

Введем обозначения имен переменных:

  • — х — аргумент подинтегральной функции;
  • — у — вычисленное значение функции;
  • — z — вычисленное значение интеграла.

Для решения задачи используем функцию trapz(X,Y), для которой пределы интегрирования задаются в виде вектора [0 3].

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

Я пытаюсь, чтобы MATLAB интегрировал функцию двух переменных, таких как fun=@(x,y)x+y; против одной переменной. Я могу определить, скажем, fun2=@(y)quad(@(x)fun(x,y),1,2); и это даст мне fun2(1) , скажем, никаких проблем. Но это дает мне ошибки, когда я пытаюсь оценить fun2 матрицы, скажем fun2 Когда я пытаюсь интегрировать fun2 с помощью quad() , это то, что мне нужно сделать, это дает мне ту же ошибку.

И я не могу просто использовать quad2d() потому что (a) мне нужно что-то вроде fun2 в нескольких разных местах и (b) интегралы, которые мне нужно вычислить, - это 4D.

Читайте также: