Эколаб11 (Лабы и инфа какая-то), страница 2
Описание файла
Файл "Эколаб11" внутри архива находится в папке "Лабы и инфа какая-то". Документ из архива "Лабы и инфа какая-то", который расположен в категории "". Всё это находится в предмете "экология" из 5 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "экология" в общих файлах.
Онлайн просмотр документа "Эколаб11"
Текст 2 страницы из документа "Эколаб11"
Пока мы имели дело с двумерными графиками. Теперь построим трехмерную спираль, используя команду построения трехмерных графиков plot3.
>>x=-pi:.01*pi:2*pi;
>>y=sin(x);
>>z=cos(x);
>>plot3(x,y,z),grid
Многие другие графические средства, одно- и многооконные, двумерные и трехмерные вы можете освоить с помощью графического раздела справочного аппарата системы.
Введенные значения аргумента x и функций от него составляют матрицы-строки, арифметические операции над такими матрицами выполняются поэлементно, что возможно лишь при одинаковой длине матриц, и отмечаются точкой перед символом операции.
5. Выполнение операций математического анализа с использованием пакета символьной математики
На примерах рассмотрим технику использования пакета символьной математики для дифференцирования, интегрирования функций одной переменной, для решения алгебраических уравнений и интегрирования дифференциальных уравнений.
Для обращения к пакету указывается принадлежность переменных к символьным записью вида 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
6. Численное интегрирование обыкновенных дифференциальных уравнений методом Рунге-Кута
Такое интегрирование традиционно для МАТЛАБА, оно требует сначала создать файл-функцию, содержащий правую часть дифференциального уравнения, записанного в нормальной форме и начинающийся со слова function, затем файл-сценарий с указанием подынтегральной функции, интервала интегрирования и начальных условий. Кратко обозначив используемые здесь файлы как студенческие функцию и интеграл, приведем их, команду на интегрирование и результат его:
%studf
function xprime=studf(t,x);
xprime=-1.5*x;
%studint
[t,x]=ode45('studf',[0 5],[1]);
plot(t,x),grid
>> studint
Очевидно, здесь при единичном начальном условии было проинтегрировано дифференциальное уравнение dx/dt=-1.5*x, и получена экспонента.
Литература (основная):
1. Дьяконов В.П. MATLAB 6/6.1/6.5+SIMULINK. Основы применения. Полное руководство пользователя. Москва: Солон-Пресс, 2002.