- •Назначение лабораторной работы, основные решаемые задачи.
- •Операции над числами и их элементарными функциями.
- •Ввод матриц и элементарные операции над ними,
- •Функции и графики.
- •Выполнение операций математического анализа с использованием пакета символьной математики.
- •Численное интегрирование обыкновенных дифференциальных уравнений
Выполнение операций математического анализа с использованием пакета символьной математики.
На примерах рассмотрим технику использования пакета символьной математики для: - дифференцирования,
- интегрирования функций одной переменной,
- решения алгебраических уравнений
- интегрирования дифференциальных уравнений.
Для обращения к пакету указывается принадлежность переменных к символьным записью вида x=sym(‘x’); y=sym(‘y’) или syms x y или выделением выражений апострофами.
Определение n-ной производной по x от выражения F(x) выполняется по команде формата diff(‘F(x)’,’x’,n) или diff(F(x),x,n), если ранее указано, что x – символьная переменная, указывается лишь n > 1.
Примеры:
>> diff('exp(x)*cos(x)','x',2)
ans =
-2*exp(x)*sin(x).
>> syms x a
>> diff(sin(a*x)/x,x)
ans =
cos(a*x)*a/x-sin(a*x)/x^2.
Команда на вычисление неопределенного интеграла – int('F(x)’,'x').
Пример:
>> int('exp(x)*cos(x)','x')
ans =
1/2*exp(x)*cos(x)+1/2*exp(x)*sin(x).
Команда на вычисление определенного интеграла содержит, кроме того, пределы интегрирования.
Примеры:
>> int('exp(x)*cos(x)','x',0,2)
ans =
1/2*exp(2)*cos(2)+1/2*exp(2)*sin(2)-1/2.
>> int('exp(x)*cos(x)','x',0,pi*3/2)
ans =
-1/2*exp(3/2*pi)-1/2.
Вычисления можно довести до приближенного ответа:
Пример.
>> -1/2*exp(3/2*pi)-1/2
ans =
-56.1589.
Вычисление кратных интегралов выполняется по схеме «интеграл от интеграла от интеграла…».
Алгебраические выражения, в том числе получаемые при интегрировании, можно упрощать, правда, во многих случаях слабее, чем это делают абитуриенты МАИ, командой формата simple(F(x)).
Например, выполнение команды simple(1/2*exp(x)*cos(x)+1/2*exp(x)*sin(x)) состояло в переборе многих вариантов и привело к скромному результату:
ans =1/2*exp(x)*(cos(x)+sin(x)).
Решение алгебраических уравнений вида F(x) = 0 выполняется по команде формата solve(‘F(x)’).
Примеры.
>> solve('x^2-2')
ans =
[ 2^(1/2)]
[ -2^(1/2)].
Ответ простой, обозримый.
Но вот другой случай:
>> solve('x^3-2*x^2+x-5')
ans =
[1/6*(532+12*1965^(1/2))^(1/3)+2/3/(532+12*1965^(1/2))^(1/3)+2/3]
[ -1/12*(532+12*1965^(1/2))^(1/3)-1/3/(532+12*1965^(1/2))^(1/3)+2/3+1/2*i*3^(1/2)*(1/6*(532+12*1965^(1/2))^(1/3)-2/3/(532+12*1965^(1/2))^(1/3))]
[ -1/12*(532+12*1965^(1/2))^(1/3)-1/3/(532+12*1965^(1/2))^(1/3)+2/3-1/2*i*3^(1/2)*(1/6*(532+12*1965^(1/2))^(1/3)-2/3/(532+12*1965^(1/2))^(1/3))]
Полученные точные значения корней вычисляются приближенно после перемещения их мышкой к курсору:
>> [ 1/6*(532+12*1965^(1/2))^(1/3)+2/3/(532+12*1965^(1/2))^(1/3)+2/3]
ans =
2.4334 ,
>> [
-1/12*(532+12*1965^(1/2))^(1/3)-1/3/(532+12*1965^(1/2))^(1/3)+2/3+1/2*i*3^(1/2)*(1/6*(532+12*1965^(1/2))^(1/3)-2/3/(532+12*1965^(1/2))^(1/3))]
ans =
-0.2167 + 1.4170i ,
>> [
-1/12*(532+12*1965^(1/2))^(1/3)-1/3/(532+12*1965^(1/2))^(1/3)+2/3-1/2*i*3^(1/2)*(1/6*(532+12*1965^(1/2))^(1/3)-2/3/(532+12*1965^(1/2))^(1/3))]
ans =
-0.2167 - 1.4170i .
Аналогично решаются системы алгебраических уравнений.
Например, система уравнений P(x,y,z)=0, Q(x,y,z)=0, R(x,y,z)=0 решается по команде формата:
[x,y,z]=solve(‘P(x,y,z)’, ‘Q(x,y,z)’, ‘R(x,y,z)’,’x’,’y’,’z’).
В качестве упражнения введите команду
>> [x,y,z]=solve('x^2+y^3+z^4-10','x+2*y-3','z-5*x+4','x','y','z')
а затем полученные точные решения системы уравнений пересчитайте в приближенные, но обозримые.
Интегрирование дифференциальных уравнений и их систем выполняется
функцией dsolve.
Проинтегрируем некоторые простейшие дифференциальные уравнения.
Здесь аргумент – t, dx/dt=Dx, в случае отсутствия начальных условий решение получается в общем виде, с неопределенными множителями, при указании достаточного количества начальных условий решение получается численным и при желании исполнителя может быть отображено графически.
Примеры.
>> dsolve('Dx=-x')
ans =
C1*exp(-t) .
>> dsolve('Dx=-x','x(0)=1')
ans =
exp(-t) .
>> dsolve('Dx=-x^2','x(0)=1')
ans =
1/(t+1)
>> t=0:.05:10;
>> plot(t,exp(-t),t,1./(t+1)),grid
