Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2019-12-17 | 478 |
5.00
из
|
Заказать работу |
|
|
ЛЕКЦИЯ 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!