Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб1 экология.DOC
Скачиваний:
3
Добавлен:
09.09.2019
Размер:
326.14 Кб
Скачать

4. Функции и графики

>> x=0:10

x =

Columns 1 through 9

0 1 2 3 4 5 6 7 8

Columns 10 through 11

9 10

>> plot(x,tan(x))

x=0:10;

plot(x,tan(x)),grid

>> x=0:5

x =

0 1 2 3 4 5

>> plot(x,acos(x))

>> x=0:.05:5;

>> plot(x,acos(x)),grid

>> x=0:7

x =

0 1 2 3 4 5 6 7

>> plot(x,atan(x))

>> x=0:.05:7;

>> plot(x,atan(x)),grid

Построим синусоиду в полярных координатах, используя команду polar:

>> x=0:.04*pi:6*pi;

>> polar(x,cos(x))

>> x=0:.04*pi:6*pi;

>> polar(x,atan(x))

>> x=0:.04*pi:6*pi;

>> polar(x,tan(x))

Построим на одном и том же графике пару кривых, например, синусоиду и косинусоиду для двух их периодов.

>> x=-4*pi:.01*pi:2*pi;

>> y=sin(x);

>> z=cos(x);

>> plot(x,sin(x),x,cos(x)),grid

>> x=-4*pi:.01*pi:2*pi;

>> y=sin(x);

>> z=tan(x);

>> plot(x,sin(x),x,tan(x)),grid

>> x=-5*pi:.05*pi:2*pi;

>> y=cos(x);

>> z=cot(x);

>> plot(x,cos(x),x,cot(x)),grid

Теперь построим для промежутка 2pi два семейства из пяти синусоид каждое, различающихся в первом случае амплитудой, во втором – частотой. Для этого в команды встроим матрицы-столбцы (транспонированные матрицы-строки) множителей, в первом случае – амплитуд, во втором – частот.

x=0:.01*pi:2*pi;

>> y=[1:5]'*cos(x);

>> plot(x,y),grid

>> x=0:.05*pi:3*pi;

>> y=[1:5]'*tan(x);

>> plot(x,y),grid

>> x=0:.05*pi:4*pi;

>> y=[1:7]'*atan(x);

>> plot(x,y),grid

Обратим внимание на возможность рассчитывать и отображать на графиках сложные функции вида функций от комбинаций элементарных. Пример – log2|cos(x^2)|:

x=.4:.01:2.5;

>> y=-log2(abs(cos(x.^9)));

>> plot(x,y),grid

>> x=.4:.05:2.8;

>> y=[1:7]'*acos(x);

>> plot(x,y),grid

>> x=.7:.05:2.8;

>> y=[1:9]'*asin(x);

>> plot(x,y),grid

Построение графика сложной функции в полярных координатах:

>> x=0:.01*pi:2*pi;

>> polar(x,abs(sin(6*x)))

Пока мы имели дело с двумерными графиками. Теперь построим трехмерную спираль, используя команду построения трехмерных графиков 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]