Мария Николова (предстои допълване на темите, превеждане на английския текст и добавяне на литературните източници)



страница3/10
Дата19.03.2017
Размер0.69 Mb.
#17331
1   2   3   4   5   6   7   8   9   10

Поелементни операции


В MATLAB съществува операции, непознати в линейната алгебра, които се изпълняват над всеки елемент на матрицата, преобразувайки я в друга матрица със същия размер.Това са така наречените поелементни операции.

Такива операции извършват всички елементарни функции.

Например ако v=[], то sin(v) ще представлява вектора [sin(),sin(),…,sin()].

Освен това, добавяйки по една точка “.” пред обикновените математични оператори *,/,\,^, u ‘, получаваме следните поелементни оператори:

.*-поелементно умножение;

./-поелементно делене отдясно;

.\-поелементно делене отляво;

. ^-поелементно степенуване;

.’-транспониране на вектор или матрица.
Пример: Да се умножат 2 редици а и b с по 3 елемента:

Въвеждаме първата редица:

>> a=[1 3 -4]

a =


1 3 -4
Въвеждаме втората редица:

>> b=[6 7 10]

b =

6 7 10
Поелементно умножаваме:



>> a.*b

ans =


6 21 -40

Символни изчисления – производни, интеграли, граници, решаване на алгебрични уравнения, изчертаване на графики на функции


Символните изчисления се извършват с помощта на Symbolic Math Toolbox. Помощна информация за тях може да се получи като се въведе symbolic math toolbox в полето за търсене (горе вдясно на прозореца) и се натисне . След това се избира отново Symbolic Math Toolbox. Оттам за помощ при: намиране на производни, интеграли, граници се избира Mathematics и после Calculus; решаване на уравнения се избира Mathematics и после Equation Solving; изчертаване на графики на функции – Graphics и после Function Plots.

Преди изпълнението на всяка символна функция, трябва да се декларира променливата(ите), която участва(т) във функцията като символни – с командата syms. Веднъж зададена, символната променлива не е необходимо преди всяко символно изчисление да се декларира, както това е направено в долните примери за удобство на читателя.

Пример 1: Да се намери първата производна на функцията: .

Ставa с помощта на командата diff. Подразбира се диференциране по х (т.е. dx).


>> syms x

>> diff(x^2*exp(x))

ans =

x^2*exp(x) + 2*x*exp(x)


Пример 2: Да се намери втората производна на функцията: .

Поредният номер на реда на производната (в случая 2) се отделя със запетая от функцията.

>> syms x

>> diff(x^2*exp(x),2)

ans =

2*exp(x) + x^2*exp(x) + 4*x*exp(x)


Пример 3: Да се намери неопределен интеграл от функцията: .

Използва се функцията int.

>> syms x

>> int(x^2*exp(x))

ans =

exp(x)*(x^2 - 2*x + 2)



Пример 4: Да се реши определения интеграл

Необходимо е да се вмъкне и името на променливата t след подинтегралната функция, тъй като имаме функция на две променливи – х и t и интегралът е спрямо t, а не по x. Границите се отделят със запетая след t.

>> syms t x

>> int(x^2/t*exp(-i*t),t,0,2*pi)

ans =

x^2*Inf - i*x^2*Im(Ei(1, 2*pi*i)) - (pi*i*x^2)/2


Пример 5: Да се реши

Граница се изчислява с командата limit. Границите се записват, по аналогичен на интегрирането начин.

>> syms x

>> limit(sqrt(x^2+2)/(3*x+6),x,inf )

ans =

1/3
Пример 6: да се изчертае графиката на y2+3y-10 в интервала [-1, 1] по абсцисата.



Двумерни графики на функции се изчертават с командата ezplot и в скоби се записва функцията. По подразбиране Matlab задава стойности по абсцисата в интервала [-2π, 2π]. В този пример потребителят сам задава интервала на стойностите по остa х.

>> syms y

>> ezplot(y^2-3*y-10,-1,1)

или


>> ezplot(y^2-3*y-10,[-1,1])
Резултатът е показан на долната фигура:

Пример 5: Да се реши уравнението: x2 – sin(x) = cos(x)2

Уравнението се решава с командата solve и се загражда с апострофи.

>> syms х
>> solve('x^2-sin(x)=cos(x)^2')

ans =


-0.51487291554481060387995561734182

Числено намиране на корени на уравнения и полиноми

Извиква се функцията roots за намиране на корени на полином по следния начин r = roots(c). Функцията roots връща вектор r (матрица-стълб), чиито елементи са корени на полинома с. Матрицата-ред с съдържа коефициентите на полинома, подредени по намаляващ ред на степените им – от най-високата до свободния член. Функцията poly, използвана по следния начин: p = poly(r), връща като резултат матрица-ред, чиито стойности са коефициенти на полинома с. Функциите roots и poly са инверсни.

Пример: Да се намерят корените на полинома x5+8.x4 +31.x3+80.x2+94.x+20

Задава се полиномът със стойностите на коефициентите си:

>> pol=[1 8 31 80 94 20]

pol =


1 8 31 80 94 20

Намират се корените на полинома с функцията roots:

>>a=roots(pol)

a =


-1.0000 + 3.0000i

-1.0000 - 3.0000i

-3.7321

-2.0000


-0.2679

Изпълнява се обратната функция за да се получат коефициентите от корените – това е една проверка на резултата.

>> y=poly(a)

y =


1.0000 8.0000 31.0000 80.0000 94.0000 20.0000

Вижда се, че в променливата y това са коефициентите на полинома.

Понякога Matlab дава отговор за коефициентите със стойности, разделени на числото две – в този случай се прави проверка като отново се реши уравнението с новополучените коефициенти и се вижда, че корените са същите както в началното уравнение.

Друг начин на проверка е да се обяви функцията на уравнението като inline например с име f. След това трябва да се замести всеки корен поотделно вместо х като аргумент на f и да се провери дали резултатът е равен на нула, т.е.

>> f=inline('x^5+8*x^4+31*x^3+80*x^2+94*x+20')

f =


Inline function:

f(x) = x^5+8*x^4+31*x^3+80*x^2+94*x+20

Заместваме един от корените и резултатът трябва да е равен на 0, ако уравнението е решено вярно:

>> f(-2)


ans =

0

След това трябва да се заместят всички корени. Ще заместим само още едни:



>> f(-0.2679)

ans =


0.0028

Вижда се, че в този случай отговорът е различен от 0 – след втория знак след десетичната точка, т.е. за получаване на число по-близко до нула би могло да се зададе формат long и да се замести този корен с повече знака след десетичната точка – резултатът би бил по-близък до нулата след заместване на корена в f.


Решаване на уравнение с roots , когато то е произведение от множители:

Пример: Да се намерят корените на уравнението: (x -2). (x-3). (x+3) = 10


Първо с помощта на Symbolics Math Toolbox се опростява израза за уравнението, като се подрежда по степените на х с помощта на една от функциите simplify, collect или expand:
>> syms x

>> f=(x-2)*(x-3)*(x+3)-10

f =

(x-2)*(x-3)*(x+3)-10


>> simplify(f)

ans =


x^3-2*x^2-9*x+8

или


>> collect(f)

ans =


x^3-2*x^2-9*x+8

или


>> expand(f)

ans =


x^3-2*x^2-9*x+8
Сега се задават коефициентите на уравнението в масива pol:

>> pol=[1 -2 -9 8]

pol =

1 -2 -9 8


>> koreni=roots(pol)

koreni =


3.8108

-2.6139


0.8031
>> pol2=poly(koreni)

pol2 =


1.0000 -2.0000 -9.0000 8.0000

>> Същите са стойностите като на полинома





Сподели с приятели:
1   2   3   4   5   6   7   8   9   10




©obuch.info 2024
отнасят до администрацията

    Начална страница