Элементы программирования в среде MATLAB — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Элементы программирования в среде MATLAB

2019-12-17 478
Элементы программирования в среде MATLAB 0.00 из 5.00 0 оценок
Заказать работу

ЛЕКЦИЯ 5

 

Элементы программирования в среде MATLAB

 

Операции над полиномами

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

Как известно, полином (или многочлен) – это выражение вида

,

где  – постоянные коэффициенты.

В MATLAB полином задается и хранится в виде вектора, элементами которого являются коэффициенты полинома

.

Так, например, для задания полинома  следует ввести команду:

>> p=[5 -4 2 -1 8]

p =

5 -4 2 -1 8

 

Вычисление значения полинома.

Для вычисления значения полинома от некоторого аргумента предназначена функция polyval, имеющая следующий синтаксис:

y=polyval(p,x)

где p – вектор коэффициентов полинома; x – значение аргумента.

В частности, для рассматриваемого полинома можем вычислить

>> polyval(p,2)

ans =

62

В качестве аргумента может быть задан вектор или матрица. В этом случае значение полинома будет вычислено для каждого элемента данного вектора или матрицы, в результате чего будет сформирован вектор или матрица того же размера, что и аргумент x. Например:

>> p=[2 0 4 6];

>> x=[1 3; 2 7];

>> y=polyval(p,x)

y =

12 72

30 720

 

Пример выполнения лабораторной работы.

Пример 1. Табулирование полинома  на отрезке [ , ] с последующим построением графика, а также выдачей максимального и минимального значения функции и точек, где эти значения достигаются,

, ,

 

Пример текста М-файла

p=input('ввести коэффициенты полинома: [a(n),a(n-1),...,a(1),a(0)]=');

xn=input('ввести начальное значение xn=');

xk=input('ввести конечное значение xk=');

n=input('ввести значение n=');

h=(xk-xn)/n;

x=xn:h:xk;

y=polyval(p,x);

[fmin,imin]=min(y);

[fmax,imax]=max(y);

fprintf('\n fmin=%8.2f в точке xmin=%6.2f \n fmax=%8.2f в точке xmax=%6.2f \n',fmin,x(imin),fmax,x(imax))

plot(x,y),grid on

 

Результаты счета

ввести коэффициенты полинома: [a(n),a(n-1),...,a(1),a(0)]=[1 4 -6 12 -1]

ввести начальное значение xn=-5

ввести конечное значение xk=5

ввести значение n=20

 

 fmin= -145.00 в точке xmin= -4.00

 fmax= 1034.00 в точке xmax= 5.00

 

Вычисление корней полинома.

Вычислить все корни полинома можно с помощью функции roots (причем число корней полинома всегда совпадает со степенью полинома).

Вычислив корни полинома, можно восстановить коэффициенты приведенного полинома (т.е. полинома, у которого коэффициент при старшей степени равен 1). Для этих целей в MATLAB имеет функция poly:

>> p=[2 -6 6 -6 4];

>> r=roots(p)

r =

2.0000 + 0.0000i

0.0000 + 1.0000i

0.0000 - 1.0000i

1.0000 + 0.0000i

>> p1=poly(r)

p1 =

1.0000 -3.0000 3.0000 -3.0000 2.0000

Для того, чтобы получить коэффициенты исходного полинома, следует умножить полученные вектор коэффициентов на коэффициент при старшей степени полинома (в рассматриваемом примере он равен 2):

>> p1*2

ans =

2.0000 -6.0000 6.0000 -6.0000 4.0000

 

Пример 2. Найти корни полинома ,

Пример текста М-файла

p=input('ввести коэффициенты полинома: [a(n),a(n-1),...,a(1),a(0)]=');

r=roots(p);

fprintf('\n корни полинома:\n'),disp(r)

 

Результаты счета

вести коэффициенты полинома: [a(n),a(n-1),...,a(1),a(0)]=[1 4 -6 12 -1]

корни полинома:

-5.4953         

0.7042 + 1.2643i

0.7042 - 1.2643i

0.0869         

>>

 

 

Результаты счета

ввести коэффициенты полинома P: [p(n),p(n-1),...,p(1),p(0)]=[2 -9]

ввести коэффициенты полинома Q: [q(n),q(n-1),...,q(1),q(0)]=[1 -4 3]

ввести начальное значение xn=0

ввести конечное значение xk=5

ввести значение n=20

 

 

Синтаксис функции deconv следующий:

[q,r]=deconv(u,v)

где q и r – векторы коэффициентов полинома-результата (частного) и полинома-остатка, полученных в результате деления полиномов, заданных векторами u и v. Рассмотрим пример:

>> u=[1 2 3 4 5];

>> v=[1 3 5];

>> [q,r]=deconv(u,v)

q =

1 -1 1

r =

0 0 0 6 0

Для того, чтобы определить только лишь частное, следует обратиться к функции deconv следующим образом:

>> q=deconv(u,v)

q =

  1 -1 1

 

 

Пример 4. Табулирование полиномов ,  и их частного  на отрезке [ , ] с последующим построением   графиков,

, , , .

 

Пример текста М-файла

 

p=input('ввести коэффициенты полинома P: [p(n),p(n-1),...,p(1),p(0)]=');

q=input('ввести коэффициенты полинома Q: [q(n),q(n-1),...,q(1),q(0)]=');

r=deconv(p,q);

xn=input('ввести начальное значение xn=');

xk=input('ввести конечное значение xk=');

n=input('ввести значение n=');

h=(xk-xn)/n;

x=xn:h:xk;

yp=polyval(p,x);

yq=polyval(q,x);

yr=polyval(r,x);

hold on

plot(x,yp,'r',x,yq,'b',x,yr,'g'),grid on

legend('P','Q','R=P/Q',0)

 

Результаты счета

 

ввести коэффициенты полинома P: [p(n),p(n-1),...,p(1),p(0)]=[1 -6 11 -6]

ввести коэффициенты полинома Q: [q(n),q(n-1),...,q(1),q(0)]=[1 -5 6]

ввести начальное значение xn=0

ввести конечное значение xk=4

ввести значение n=20

 

Пример текста М-файла

p4=input('ввести коэффициенты полинома: [a(n),a(n-1),...,a(1),a(0)]=');

p3=polyder(p4); % 1-я производная

p2=polyder(p3); % 2-я производная

p1=polyder(p2); % 3-я производная

p0=polyder(p1); % 4-я производная

p5=polyint(p4); % 1-я первообразная

xn=input('ввести начальное значение xn=');

xk=input('ввести конечное значение xk=');

n=input('ввести значение n=');

h=(xk-xn)/n;

x=xn:h:xk;

y0=polyval(p0,x);

y1=polyval(p1,x);

y2=polyval(p2,x);

y3=polyval(p3,x);

y4=polyval(p4,x);

y5=polyval(p5,x);

hold on

plot(x,y4,'r',x,y3,'b',x,y2,':b',x,y1,'c',x,y0,'m',x,y5,'g'),grid on

legend('P','dP','d2(P)','d3(P)','d4(P)','int(P)',0)

 

Результаты счета

ввести коэффициенты полинома: [a(n),a(n-1),...,a(1),a(0)]=[1 4 -6 12 -1]

ввести начальное значение xn=-5

ввести конечное значение xk=5

ввести значение n=20

Пример 6. Табулирование полинома , , производной от :

на отрезке [ , ] с последующим построением   графиков, где

, ,

т.е.                                 и ,

,

 

Пример текста М-файла

p=input('ввести коэффициенты полинома P: [a(n),a(n-1),...,a(1),a(0)]=');

q=input('ввести коэффициенты полинома Q: [a(n),a(n-1),...,a(1),a(0)]=');

[t r]=polyder(p,q) % производная P/Q

[tr rr]=deconv(t,r) % tr-коэффициенты полинома TR частного и остатка RR от деления T/R

xn=input('ввести начальное значение xn=');

xk=input('ввести конечное значение xk=');

n=input('ввести значение n=');

h=(xk-xn)/n;

x=xn:h:xk;

P=polyval(p,x);

Q=polyval(q,x);

T=polyval(t,x);

R=polyval(r,x);

TR=polyval(tr,x);

RR=polyval(rr,x);

plot(x,P,x,Q,x,T,x,R,x,TR,x,RR),grid on

legend('P','Q','T=dP*Q-P*dQ','R=Q^2','TR=[T/R]','RR=mod(T/R)',0)

 

Результаты счета

ввести коэффициенты полинома P: [a(n),a(n-1),...,a(1),a(0)]=[1 0 1]

ввести коэффициенты полинома Q: [a(n),a(n-1),...,a(1),a(0)]=[1 0]

t =

1 0 -1

r =

1 0 0

tr =

1

rr =

0 0 -1

ввести начальное значение xn=1

ввести конечное значение xk=2

ввести значение n=20

>>

 

 

Построение сеточной области

xy=input('[xa ya;xb yb]=');

dl=xy(2,:)-xy(1,:);

n=input('[n1 n2]=');

 

h=dl./n;

x1=xy(1,1):h(1):xy(2,1);

x2=xy(1,2):h(2):xy(2,2);

[x y] = meshgrid(x1,x2);

 

U=-log(x.^2+y.^2+1);

 

Пример М-файла

function PLOT_SLICE

clear all

close all

 

n=input('[n1 n2 n3]=');

dl=input('[dl1 dl2 dl3]=');

 

h=dl./n;

x1=0:h(1):dl(1);

x2=0:h(2):dl(2);

x3=0:h(3):dl(3);

[x y z] = meshgrid(x1,x2,x3);

 

U=sin(pi*x/dl(1))+10*cos(pi*y/dl(2)-pi/2)+(z/dl(3)).^2;

 

figure()

slice(x,y,z,U,[0 dl(1)],[0 dl(2)],[0 dl(3)])

title('SLICE: [0 dl(1)],[0 dl(2)],[0 dl(3)]')

colormap hsv

axis image

colorbar

 

figure()

slice(x,y,z,U,[dl(1)/2 dl(1)],[0 dl(2)],[0 dl(3)])

title('SLICE: [dl(1)/2 dl(1)],[0 dl(2)],[0 dl(3)]')

colormap hsv

axis image

colorbar

 

figure()

slice(x,y,z,U,[0 dl(1)],[dl(2)/2 dl(2)],[0 dl(3)])

title('SLICE: [0 dl(1)],[dl(2)/2 dl(2)],[0 dl(3)]')

colormap hsv

axis image

colorbar

 

figure()

slice(x,y,z,U,[0 dl(1)],[0 dl(2)],[0 dl(3)/2])

title('SLICE: [0 dl(1)],[0 dl(2)],[0 dl(3)/2]')

colormap hsv

axis image

colorbar

 

Ввод исходных данных

[n1 n2 n3]=[10 10 20]

[dl1 dl2 dl3]=[10 10 5]

>>

 

 

 

 

 

ЛЕКЦИЯ 5

 

Элементы программирования в среде MATLAB

 

Операции над полиномами

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

Как известно, полином (или многочлен) – это выражение вида

,

где  – постоянные коэффициенты.

В MATLAB полином задается и хранится в виде вектора, элементами которого являются коэффициенты полинома

.

Так, например, для задания полинома  следует ввести команду:

>> p=[5 -4 2 -1 8]

p =

5 -4 2 -1 8

 


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.072 с.