Оптимизация режимов движения судов с использованием MATLAB 5.0
Использование операторов polyfit и polyval для аппроксимации кривой
Цель работы.
Получение полинома, описывающего аппроксимированную кривую наиболее близкую к исходной, которая построена по точкам.
Исходные данные.
x |
0 |
400 |
800 |
1200 |
1600 |
2000 |
2400 |
2800 |
3200 |
f(x) |
0 |
80 |
100 |
110 |
120 |
180 |
210 |
230 |
260 |
Программа.
%Исходные данные
x=[0 400 800 1200 1600 2000 2400 2800 3200];
f=[0 80 100 110 120 180 210 230 260];
%a - коэффициенты полинома
%S - квадратичная погрешность
[a,S]=polyfit(x,f,3)
z=polyval(a,x)
%Построение графиков
plot(x,f,x,z),grid
Результат.
a =
0.0000 -0.0000 0.1223 13.5354
S =
R: [4x4 double]
df: 5
normr: 43.1607
z =
Columns 1 through 7
13.5354 57.1717 91.9986 120.6926 145.9307 170.3896 196.7460
Columns 8 through 9
227.6768 265.8586
Командой plot произвели построение исходной функции (синий цвет) и функции аппроксимирующей её (зелёный цвет). Поскольку велико значение погрешности normr=43.1607 и недостаточно аппроксимирование, то следует повысить степень полинома. Пусть вместо 3 будет 6.
Программа.
%Исходные данные
x=[0 400 800 1200 1600 2000 2400 2800 3200];
f=[0 80 100 110 120 180 210 230 260];
%a - коэффициенты полинома
%S - квадратичная погрешность
[a,S]=polyfit(x,f,6)
z=polyval(a,x)
%Построение графиков
plot(x,f,x,z),grid
Результат.
a =
0.0000 -0.0000 0.0000 -0.0000 -0.0002 0.2770 0.0140
S =
R: [7x7 double]
df: 2
normr: 12.4672
z =
Columns 1 through 7
0.0140 79.7016 101.6970 105.3007 127.5058 172.6900 214.3077
Columns 8 through 9
228.5828 260.2005
Вывод.
В результате работы видно, что при увеличении степени полинома уменьшается погрешность и аппроксимированная кривая наиболее близка к исходной. В случае когда степень полинома равна количеству исходных точек, получаем: normr=0 и полное соответствие кривых в исходных точках.
Оптимальное распределение двух ресурсов
Цель работы.
Получение максимального значения прибыли при перевозке двух различных грузов.
Исходные данные.
x |
0 |
400 |
800 |
1200 |
1600 |
2000 |
2400 |
2800 |
3200 |
f>1>(x) |
0 |
80 |
100 |
110 |
120 |
180 |
210 |
230 |
260 |
f>2>(x) |
0 |
60 |
90 |
110 |
130 |
150 |
190 |
230 |
250 |
f>1>(x) доход от перевозки груза первого рода;
f>2>(x) доход от перевозки груза второго рода;
x количество груза.
Программа.
%Исходные данные
x=[0 400 800 1200 1600 2000 2400 2800 3200];
f1=[0 80 100 110 120 180 210 230 260];
f2=[0 60 90 110 130 150 190 230 250];
plot(x,f1,x,f2),grid
%Решение
F12=[];
for xR=1:9;
I=1:xR;
L12=f1(I)+f2(xR-I+1);
[Lopt,I]=max(L12);
x1=I*400-400;
x2=(xR-I)*400;
Pacn=[Lopt;x1;x2;x1+x2];
F12=[F12 Pacn];
end
F12
pause
plot(x,F12(1,:)),grid
Результат.
F12 =
Columns 1 through 6
0 80 140 170 190 210
0 400 400 400 400 400
0 0 400 800 1200 1600
0 400 800 1200 1600 2000
Columns 7 through 9
240 270 310
2000 400 400
400 2400 2800
2400 2800 3200
В результате получаем матрицу, в которой:
1 строка суммарный доход от перевозки;
2 строка количество первого груза;
3 строка количество второго груза;
4 строка суммарное количество грузов.
Вывод.
Таким образом получена оптимальная зависимость распределения груза с наибольшим доходом от перевозки. Для наглядности по полученным значениям построен график.
Оптимальное распределение шести ресурсов
Цель работы.
Получение максимального значения прибыли при перевозке шести различных грузов.
Исходные данные.
x |
0 |
400 |
800 |
1200 |
1600 |
2000 |
2400 |
2800 |
3200 |
f>1>(x) |
0 |
80 |
100 |
110 |
120 |
180 |
210 |
230 |
260 |
f>2>(x) |
0 |
60 |
90 |
110 |
130 |
150 |
190 |
230 |
250 |
f>3>(x) |
0 |
30 |
40 |
70 |
110 |
180 |
200 |
240 |
250 |
f>4>(x) |
0 |
40 |
60 |
80 |
130 |
160 |
180 |
210 |
240 |
f>5>(x) |
0 |
50 |
70 |
90 |
110 |
150 |
170 |
200 |
220 |
f>6>(x) |
0 |
70 |
80 |
110 |
140 |
160 |
200 |
250 |
270 |
f>1>(x) доход от перевозки груза первого рода;
f>2>(x) доход от перевозки груза второго рода;
f>3>(x) доход от перевозки груза третьего рода;
f>4>(x) доход от перевозки груза четвёртого рода;
f>5>(x) доход от перевозки груза пятого рода;
f>6>(x) доход от перевозки груза шестого рода;
x количество груза.
Программа.
%Исходные данные
x=[0 400 800 1200 1600 2000 2400 2800 3200];
f1=[0 80 100 110 120 180 210 230 260];
f2=[0 60 90 110 130 150 190 230 250];
f3=[0 30 40 70 110 180 200 240 250];
f4=[0 40 60 80 130 160 180 210 240];
f5=[0 50 70 90 110 150 170 200 220];
f6=[0 70 80 110 140 160 200 250 270];
F=[f1;f2;f3;f4;f5;f6];
plot(x,F),grid
%Решение
FF=[];
J=1;
for XR=1:9;
I=1:XR;
L=F(J,I)+F(J+1,XR-I+1);
[Lopt,I]=max(L);
x1=I*400-400;
x2=(XR-I)*400;
Pacn=[Lopt;x1;x2;x1+x2];
FF=[FF Pacn];
end
D=FF(1,:);
PP=[];
RRR=[];
for J=2:5;
DD=[];
RR=[];
for XR=1:9;
I=1:XR;
L=D(I)+F(J+1,XR-I+1);
[Lopt,I]=max(L);
x1=I*400-400;
x2=(XR-I)*400;
Pacn=[Lopt;x1;x2;x1+x2];
DD=[DD Pacn(1,:)];
RR=[RR Pacn];
end
PP=[PP;DD(1,:)];
RRR=[RRR RR];
D=DD;
end
RRR=[FF RRR]
pause
plot(x,RRR(1,37:45)),grid
Результат.
RRR =
Columns 1 through 6
0 80 140 170 190 210
0 400 400 400 400 400
0 0 400 800 1200 1600
0 400 800 1200 1600 2000
Columns 7 through 12
240 270 310 0 80 140
2000 400 400 0 400 800
400 2400 2800 0 0 0
2400 2800 3200 0 400 800
Columns 13 through 18
170 200 220 260 320 350
800 1200 1600 400 800 1200
400 400 400 2000 2000 2000
1200 1600 2000 2400 2800 3200
Columns 19 through 24
0 80 140 180 210 240
0 400 800 800 1200 1600
0 0 0 400 400 400
0 400 800 1200 1600 2000
Columns 25 through 30
270 320 360 0 80 140
800 2800 2800 0 400 800
1600 0 400 0 0 0
2400 2800 3200 0 400 800
Columns 31 through 36
190 230 260 290 320 370
800 1200 1600 2000 2400 2800
400 400 400 400 400 400
1200 1600 2000 2400 2800 3200
Columns 37 through 42
0 80 150 210 260 300
0 400 400 800 1200 1600
0 0 400 400 400 400
0 400 800 1200 1600 2000
Columns 43 through 45
330 360 390
2000 2400 2800
400 400 400
2400 2800 3200
В результате получаем матрицу, в которой:
1 строка доход от перевозки i грузов;
2 строка количества грузов;
3 строка количество i-ого груза;
4 строка суммарное количество грузов.
Вывод.
Таким образом получена оптимальная зависимость распределения груза с наибольшим доходом от перевозки. Для наглядности по полученным значениям построен график.
Оптимизация режима движения судна
Цель работы.
Распределить скорость движения судна по четырём участкам трассы так, чтобы суммарный расход топлива был минимальным.
Программа.
%Подготовка исходных данных
delt=0.07;
tmin=[5.86 2.73 1.6 3.3967]; tmax=[7.47 3.71 2.37 4.5167];
t=[tmin; tmax]; tb=[tmax-tmin];
G1=[967.42 941.39 912 892.29 878.02 846.11 823.73 798.51 775.22 ...
764.2 741.28 719.36 706.85 678.15 673.74 659.91 645.65 ...
630.98 623 610.9 598.95 590.07 577.2 571.46];
G2=[521.73 491.12 463.51 437.33 415.2 392.7 377.45 358.23 346.86 ...
328.98 316.25 305.38 295.48 285.86 277.11];
G3=[281.47 255.5 231.07 210.41 192.31 177.55 166.97 157.77 ...
149.86 144.48 140.91 139.23];
G4=[590.60 561.90 535.10 510.20 487.06 465.67 445.94 427.82 ...
411.23 396.12 382.42 370.06 358.99 349.13 340.42 332.80 325.41];
%Формирование векторов t1, t2, t3, t4
t1=t(1,1):delt:t(2,1);
t2=t(1,2):delt:t(2,2);
t3=t(1,3):delt:t(2,3);
t4=t(1,4):delt:t(2,4);
%Пригонка данных
[a1,H2]=polyfit(t1,G1,3);
[a2,H3]=polyfit(t2,G2,3);
[a3,H3]=polyfit(t3,G3,3);
[a4,H4]=polyfit(t4,G4,3);
a=[a1;a2;a3;a4];
%Апроксимация исходных зависимостей
N=25;
deltM=tb./(N-1);
%Моделирование
TM=[];Gm=[];
for i=1:4;
tm=t(1,i):deltM(i):t(2,i);
TM=[TM;tm];
gm=polyval(a(i,:),tm);
Gm=[Gm;gm];
end
deltt=deltM;
%Оптимизация распределения времени движения
GG=[];
F=Gm;
for xr=1:N;
I=1:xr;
L=Gm(1,I)+Gm(2,xr-I+1);
[Lopt,I]=min(L);
X1=5.86+I*deltt(1)-deltt(1);
X2=2.73+(xr-I)*deltt(2);
Pacn=[Lopt.*0.001;X1;X2;X1+X2];
GG=[GG Pacn];
end
D=GG(1,:);
C=GG(4,:);
PP=[];RRR=[];
for J=2:3;
DD=[];RR=[];CC=[];
for xr=1:N;
I=1:xr;
L=D(I)+0.001.*F(J+1,xr-I+1);
[Lopt,I]=min(L);
X1=C(I);
X2=TM(J+1,1)+(xr-I)*deltt(J+1);
Pacn=[Lopt;X1;X2;X1+X2];
DD=[DD Pacn(1,:)];
RR=[RR Pacn];
CC=[CC Pacn(4,:)];
end
PP=[PP;DD(1,:)];
RRR=[RRR RR];
D=DD;
C=CC;
end
RRR=[GG RRR];
R12=RRR(:,1:N)
R23=RRR(:,N+1:2*N)
R34=RRR(:,2*N+1:3*N)
plot(R34(1,:),R34(4,:)),grid
Результат.
R12 =
Columns 1 through 7
1.4899 1.4647 1.4402 1.4164 1.3934 1.3710 1.3494
5.8600 5.9271 5.9942 6.0613 6.1283 6.1954 6.2625
2.7300 2.7300 2.7300 2.7300 2.7300 2.7300 2.7300
8.5900 8.6571 8.7242 8.7912 8.8583 8.9254 8.9925
Columns 8 through 14
1.3285 1.3083 1.2889 1.2703 1.2522 1.2343 1.2172
6.3296 6.3967 6.4638 6.5308 6.5308 6.5979 6.5979
2.7300 2.7300 2.7300 2.7300 2.7708 2.7708 2.8117
9.0596 9.1267 9.1937 9.2608 9.3017 9.3688 9.4096
Columns 15 through 21
1.2001 1.1838 1.1675 1.1521 1.1367 1.1220 1.1075
6.6650 6.7321 6.7321 6.7992 6.7992 6.8663 6.8663
2.8117 2.8117 2.8525 2.8525 2.8933 2.8933 2.9342
9.4767 9.5437 9.5846 9.6517 9.6925 9.7596 9.8004
Columns 22 through 25
1.0936 1.0799 1.0668 1.0538
6.9333 6.9333 7.0004 7.0004
2.9342 2.9750 2.9750 3.0158
9.8675 9.9083 9.9754 10.0162
R23 =
Columns 1 through 7
1.7720 1.7468 1.7223 1.6985 1.6754 1.6530 1.6314
8.5900 8.6571 8.7242 8.7912 8.8583 8.9254 8.9925
1.6000 1.6000 1.6000 1.6000 1.6000 1.6000 1.6000
10.1900 10.2571 10.3242 10.3912 10.4583 10.5254 10.5925
Columns 8 through 14
1.6105 1.5904 1.5710 1.5523 1.5342 1.5164 1.4992
9.0596 9.1267 9.1937 9.2608 9.3017 9.3688 9.4096
1.6000 1.6000 1.6000 1.6000 1.6000 1.6000 1.6000
10.6596 10.7267 10.7937 10.8608 10.9017 10.9688 11.0096
Columns 15 through 21
1.4821 1.4658 1.4496 1.4341 1.4187 1.4040 1.3895
9.4767 9.5437 9.5846 9.6517 9.6925 9.7596 9.8004
1.6000 1.6000 1.6000 1.6000 1.6000 1.6000 1.6000
11.0767 11.1437 11.1846 11.2517 11.2925 11.3596 11.4004
Columns 22 through 25
1.3756 1.3619 1.3488 1.3358
9.8675 9.9083 9.9754 9.9754
1.6000 1.6000 1.6000 1.6321
11.4675 11.5083 11.5754 11.6075
R34 =
Columns 1 through 7
2.3626 2.3374 2.3129 2.2892 2.2661 2.2437 2.2221
10.1900 10.2571 10.3242 10.3912 10.4583 10.5254 10.5925
3.3967 3.3967 3.3967 3.3967 3.3967 3.3967 3.3967
13.5867 13.6538 13.7209 13.7879 13.8550 13.9221 13.9892
Columns 8 through 14
2.2012 2.1810 2.1616 2.1422 2.1236 2.1051 2.0870
10.6596 10.7267 10.7267 10.7937 10.8608 10.8608 10.9017
3.3967 3.3967 3.4434 3.4434 3.4434 3.4900 3.4900
14.0563 14.1234 14.1700 14.2371 14.3042 14.3509 14.3917
Columns 15 through 21
2.0691 2.0514 2.0343 2.0172 2.0004 1.9841 1.9678
10.9688 10.9688 11.0096 11.0767 11.0767 11.1437 11.1846
3.4900 3.5367 3.5367 3.5367 3.5834 3.5834 3.5834
14.4588 14.5055 14.5463 14.6134 14.6600 14.7271 14.7679
Columns 22 through 25
1.9518 1.9363 1.9209 1.9057
11.1846 11.2517 11.2925 11.2925
3.6300 3.6300 3.6300 3.6767
14.8146 14.8817 14.9225 14.9692
В результате получаем матрицы, в которых:
1 строка расход топлива на участках;
2 строка время движения по предыдущим участкам;
3 строка время движения по i-тому участку;
4 строка суммарное время движения по участкам.
R12 результаты для двух участков;
R23 результаты для трёх участков;
R34 результаты для четырёх участков;
Вывод.
В качестве вывода приведена графическая зависимость расхода топлива (ось абсцисс) от времени прохождения всех участков (ось ординат).
Оптимальные режимы работы судовых генераторных агрегатов
Цель работы.
Найти оптимальное распределение мощности между дизель-генераторами.
Программа.
%Исходные данные
delt=10;
P1=0:delt:50;
P2=0:delt:70;
P3=0:delt:80;
F1=(0.03*(P1.^2)+2*P1+80);
F2=(0.015*(P2.^2)+1.45*P2+100);
F3=(0.01*(P3.^2)+0.95*P3+120);
%Решение
for T=1:2;
r1=size(F1);
r2=size(F2);
if r1(2)<=r2(2)
N=r1(2);M=r2(2);
else
N=r2(2);M=r1(2);
end
[x,y]=meshgrid(F1,F2);
z=x+y;
M
N
X=rot90(z,3);
XX=[];IM=[];IM3=[];
for cc=-(N-1):(M-1);
[v,I]=min(diag(X,cc));
XX=[XX v];
if cc<=-1
IM3=[IM3 abs(cc-I)];
else
IM=[IM I];
end
IMM=[IM3 IM];
end
X1=rot90(XX,2);
IM1=rot90(IMM,2);
Opt1=[X1;IM1.*delt-delt];
r=size(X1);
v1=1:r(2);
P=v1.*delt;
Opt2=[Opt1;P-delt];
Opt=[Opt2(1,:);Opt2(2,:);Opt2(3,:)-Opt2(2,:);Opt2(3,:)]
F2=Opt(1,:);
F1=F3;
end
Результат.
M =
8
N =
6
Opt =
180 196 215 237 260 285 313 342 373 407 442 483 530
0 0 0 0 10 10 10 20 20 20 30 40 50
0 10 20 30 30 40 50 50 60 70 70 70 70
0 10 20 30 40 50 60 70 80 90 100 110 120
M =
13
N =
9
Opt =
Columns 1 through 7
300.0000 310.5000 323.0000 337.5000 353.5000 370.0000 388.5000
0 10.0000 20.0000 30.0000 30.0000 40.0000 50.0000
0 0 0 0 10.0000 10.0000 10.0000
0 10.0000 20.0000 30.0000 40.0000 50.0000 60.0000
Columns 8 through 14
407.5000 428.0000 450.0000 472.5000 495.5000 520.0000 545.0000
50.0000 60.0000 60.0000 70.0000 70.0000 80.0000 80.0000
20.0000 20.0000 30.0000 30.0000 40.0000 40.0000 50.0000
70.0000 80.0000 90.0000 100.0000 110.0000 120.0000 130.0000
Columns 15 through 21
573.0000 602.0000 633.0000 667.0000 702.0000 743.0000 790.0000
80.0000 80.0000 80.0000 80.0000 80.0000 80.0000 80.0000
60.0000 70.0000 80.0000 90.0000 100.0000 110.0000 120.0000
140.0000 150.0000 160.0000 170.0000 180.0000 190.0000 200.0000
Также существует второй метод решения этой задачи, который представлен в программе ниже.
Программа.
%Исходные данные
delt=10;
P1=0:delt:50;
P2=0:delt:70;
P3=0:delt:80;
F1=(0.03*(P1.^2)+2*P1+80);
F2=(0.015*(P2.^2)+1.45*P2+100);
F3=(0.01*(P3.^2)+0.95*P3+120);
%Решение
FA=F1; FB=F2;
for j=1:2;
e1=size(FA); N=e1(2);
e2=size(FB); M=e2(2);
[x,y]=meshgrid(FA,FB);
z=x+y
Dmin=[]; D1min=[]; D2min=[];
Im=[]; I1m=[]; I2m=[];
for k=1:M+N-1;
if k<=N
DD=[];
for i=k:-1:1;
g=z(i,k-i+1);
DD=[DD g];
end
[L,I]=min(DD);
Dmin=[Dmin L];
Im=[Im I];
elseif (N<k)&(k<=M)
DD1=[];
for i1=k:-1:k-N+1;
g1=z(i1,k-i1+1);
DD1=[DD1 g1];
end
[L1,I1]=min(DD1);
D1min=[D1min L1];
I1m=[I1m I1];
elseif (M<k)&(k<=M+N-1)
DD2=[];
for i2=M:-1:k-N+1;
g2=z(i2,k-i2+1);
DD2=[DD2 g2];
end
[L2,I2]=min(DD2);
D2min=[D2min L2];
I2m=[I2m k-M+I2];
end
end
F12=[Dmin D1min D2min]
I11=[Im I1m I2m];
r=size(F12);
v=1:r(2);
P=v.*delt;
Opt=[F12;I11.*delt-delt;P-delt];
Optim12=[Opt(1,:);Opt(2,:);Opt(3,:)-Opt(2,:);Opt(3,:)]
FB=Optim12(1,:);
FA=F3;
end
Результат.
z =
180 203 232 267 308 355
196 219 248 283 324 371
215 238 267 302 343 390
237 260 289 324 365 412
262 285 314 349 390 437
290 313 342 377 418 465
321 344 373 408 449 496
355 378 407 442 483 530
F12 =
180 196 215 237 260 285 313 342 373 407 442 483 530
Optim12 =
180 196 215 237 260 285 313 342 373 407 442 483 530
0 0 0 0 10 10 10 20 20 20 30 40 50
0 10 20 30 30 40 50 50 60 70 70 70 70
0 10 20 30 40 50 60 70 80 90 100 110 120
z =
Columns 1 through 7
300.0000 310.5000 323.0000 337.5000 354.0000 372.5000 393.0000
316.0000 326.5000 339.0000 353.5000 370.0000 388.5000 409.0000
335.0000 345.5000 358.0000 372.5000 389.0000 407.5000 428.0000
357.0000 367.5000 380.0000 394.5000 411.0000 429.5000 450.0000
380.0000 390.5000 403.0000 417.5000 434.0000 452.5000 473.0000
405.0000 415.5000 428.0000 442.5000 459.0000 477.5000 498.0000
433.0000 443.5000 456.0000 470.5000 487.0000 505.5000 526.0000
462.0000 472.5000 485.0000 499.5000 516.0000 534.5000 555.0000
493.0000 503.5000 516.0000 530.5000 547.0000 565.5000 586.0000
527.0000 537.5000 550.0000 564.5000 581.0000 599.5000 620.0000
562.0000 572.5000 585.0000 599.5000 616.0000 634.5000 655.0000
603.0000 613.5000 626.0000 640.5000 657.0000 675.5000 696.0000
650.0000 660.5000 673.0000 687.5000 704.0000 722.5000 743.0000
Columns 8 through 9
415.5000 440.0000
431.5000 456.0000
450.5000 475.0000
472.5000 497.0000
495.5000 520.0000
520.5000 545.0000
548.5000 573.0000
577.5000 602.0000
608.5000 633.0000
642.5000 667.0000
677.5000 702.0000
718.5000 743.0000
765.5000 790.0000
F12 =
Columns 1 through 7
300.0000 310.5000 323.0000 337.5000 353.5000 370.0000 388.5000
Columns 8 through 14
407.5000 428.0000 450.0000 472.5000 495.5000 520.0000 545.0000
Columns 15 through 21
573.0000 602.0000 633.0000 667.0000 702.0000 743.0000 790.0000
Optim12 =
Columns 1 through 7
300.0000 310.5000 323.0000 337.5000 353.5000 370.0000 388.5000
0 10.0000 20.0000 30.0000 30.0000 40.0000 50.0000
0 0 0 0 10.0000 10.0000 10.0000
0 10.0000 20.0000 30.0000 40.0000 50.0000 60.0000
Columns 8 through 14
407.5000 428.0000 450.0000 472.5000 495.5000 520.0000 545.0000
50.0000 60.0000 60.0000 70.0000 70.0000 80.0000 80.0000
20.0000 20.0000 30.0000 30.0000 40.0000 40.0000 50.0000
70.0000 80.0000 90.0000 100.0000 110.0000 120.0000 130.0000
Columns 15 through 21
573.0000 602.0000 633.0000 667.0000 702.0000 743.0000 790.0000
80.0000 80.0000 80.0000 80.0000 80.0000 80.0000 80.0000
60.0000 70.0000 80.0000 90.0000 100.0000 110.0000 120.0000
140.0000 150.0000 160.0000 170.0000 180.0000 190.0000 200.0000
Вывод.
В итоге работы получены одинаковые результаты решения данной задачи при помощи двух методов её решения. Цель работы выполнена.
Разложение периодической функции в ряд Фурье
Цель работы.
Разложить имеющийся периодический сигнал в ряд Фурье.
Исходные данные.
Исходным является сигнал представлен на рисунке.
Программа.
U1=[];U2=[];U3=[];
U4=[];U5=[];U6=[];
for Wt=0:0.002*pi:2*pi;
Um=50;a=pi/2;
uu=Um+(4*Um/(a*pi))*(sin(a)*sin(Wt)+(1/9)*sin(3*a)*sin(3*Wt)+(1/25)*sin(5*a)*sin(5*Wt)+(1/49)*sin(7*a)*sin(7*Wt));
U6=[U6 uu];
if 0<=Wt & Wt<pi/2;
u=50+(50/(pi/2))*Wt;
U1=[U1 u];
elseif (pi/2)<=Wt & Wt<(3/2)*pi;
u=50+50-(50/(pi/2))*(Wt-pi/2);
U2=[U2 u];
else
u=50-50+(50/(pi/2))*(Wt-(3/2)*pi);
U3=[U3 u];
end
U=[U1 U2 U3];
U6;
end
Wt=0:0.002*pi:2*pi;
plot(Wt,U,Wt,U6),grid
Результат.
Вывод.
В работе выполнено разложение исходного сигнала в сумму гармоник, график которой представлен в результатах.
Разложение периодической функции в ряд Фурье
Цель работы.
Разложить имеющийся периодический сигнал в ряд Фурье.
Исходные данные.
Исходным является сигнал представлен на рисунке.
Программа.
F=[];
for k=1:2:21;
Im=60;
wt=0:0.02:7;
i=(4*Im/pi)*((1/k)*sin(k*(wt-pi/4)));
F=[F i'];
end
F1=F';
d=size(F1);
d(1);
F2=sum(F1);
plot(wt,F2,'b'),grid
Результат.
Программа.
F=[];
for k=1:2:2001;
Im=60;
wt=0:0.02:7;
i=(4*Im/pi)*((1/k)*sin(k*(wt-pi/4)));
F=[F i'];
end
F1=F';
d=size(F1);
d(1);
F2=sum(F1);
plot(wt,F2,'b'),grid
Результат.
Вывод.
В данной работе выполнено разложение исходного сигнала на сумму гармоник. В работе показано, что при увеличении числа гармоник их сумма гармоник наиболее приближена к исходному сигналу.
Введение
В последнее время на фоне развития грузопассажирского флота и создании высокопроизводительных судов наблюдается непрерывное стремление по направлению повышения эффективности энергетической установки с целью увеличения экономичности, надёжности и безопасности перевозок.
Судовая энергетическая установка является сложным комплексом различных механизмов, устройств и систем, обеспечивающим движение судна, работу механизмов машинного отделения и палубных механизмов, выработку электроэнергии и т.д.
В связи с развитием электронно-вычислительной техники возможно решение задач экономии топливных ресурсов, оптимизации управления режимами движения судов при различных условиях (ветро-волновое сопротивление, перепады глубин и т.п.) не только технологическим совершенствованием судовой энергетической установки, но и при помощи компьютерных программ.
В данном отчёте приведены примеры программ, составленные в оболочке MATLAB, решающие некоторые вышеуказанные проблемы.
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ВОДНЫХ КОММУНИКАЦИЙ
Отчёт о выполнении лабораторных работ по дисциплине
“Оптимизация режимов движения судов”.
Группа: СЭ-51
Выполнил: Жданов Д. А.
Проверил: Сахаров В. В.
Санкт-Петербург
2001