数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 3681|回复: 8

哪位人兄有95年飞行管理题编程过程,急需,谢谢!

[复制链接]
发表于 2003-8-28 23:57:55 | 显示全部楼层 |阅读模式
谢谢谢谢!
发表于 2003-9-10 07:44:29 | 显示全部楼层
疯丫头就是厉害啊!!
这么长的程序看一便都很费脑子,何况编出来
在下实在佩服!!!
发表于 2003-8-29 17:52:35 | 显示全部楼层
k=0;
x=[150,85,150,145,130,0];
y=[140,85,155,50,150,0];
v=[243,236,220.5,159,230,52];
for i=1:5
for j=i+1:6
   a=x(i)-x(j);
   b=y(i)-y(j);
   p(i)=v(i)*3.14/180;
   p(j)=v(j)*3.14/180;
   c=800*(cos(p(i))+sin(p(i))*i);
   d=800*(cos(p(j))+sin(p(j))*i);
   if a==0
      t=pi/2;
   else
      t=atan(b/a);
   end
   
      
   e(i,j)=atan((sin(p(i)-t)-sin(p(j)-t))/(cos(p(i)-t)-cos(p(j)-t)));
   e(j,i)=e(i,j);
  % f=e-atan(b/a);
  h(i,j)=asin(8/sqrt(a*a+b*b));
  h(j,i)=h(i,j);
  if abs(e(i,j))<h(i,j)
     k=k+1;
     l=[i,j];
  end
  
end
end
if k>0
   y0=[0.01,0.01,0.01,0.01,0.01,0.01];
options(1)=0;
y=constr('fun',y0)
end













function [f,g]=fun(y)
h=[      0    0.0941    0.5625    0.0889    0.3659    0.0390
    0.0941         0    0.0838    0.1154    0.1014    0.0666
    0.5625    0.0838         0    0.0762    0.3985    0.0371
    0.0889    0.1154    0.0762         0    0.0792    0.0522
    0.3659    0.1014    0.3985    0.0792         0    0.0403
    0.0390    0.0666    0.0371    0.0522    0.0403         0];
e=[      0   -1.2367    0.9012    0.4202   -0.1231    0.2513
   -1.2367         0   -1.5531   -0.7390    1.5285    0.1558
    0.9012   -1.5531         0    0.2161   -1.0280    0.0042
    0.4202   -0.7390    0.2161         0    0.1025   -0.0625
   -0.1231    1.5285   -1.0280    0.1025         0    0.0322
    0.2513    0.1558    0.0042   -0.0625    0.0322         0];
f=y(1)*y(1)+y(2)*y(2)+y(3)*y(3)+y(4)*y(4)+y(5)*y(5)+y(6)*y(6);
g(1)=h(1,2)^2-2*((y(1)+y(2))/2)*e(1,2)-((y(1)+y(2))/2)^2-e(1,2)^2;
g(2)=h(1,3)^2-2*((y(1)+y(3))/2)*e(1,3)-((y(1)+y(3))/2)^2-e(1,3)^2;
g(3)=h(1,4)^2-2*((y(1)+y(4))/2)*e(1,4)-((y(1)+y(4))/2)^2-e(1,4)^2;
g(4)=h(1,5)^2-2*((y(1)+y(5))/2)*e(1,5)-((y(1)+y(5))/2)^2-e(1,5)^2;
g(5)=h(1,6)^2-2*((y(1)+y(6))/2)*e(1,6)-((y(1)+y(2))/2)^2-e(1,6)^2;
g(6)=h(2,3)^2-2*((y(2)+y(3))/2)*e(2,3)-((y(2)+y(3))/2)^2-e(2,3)^2;
g(7)=h(2,4)^2-2*((y(2)+y(4))/2)*e(2,4)-((y(2)+y(4))/2)^2-e(2,4)^2;
g(8)=h(2,5)^2-2*((y(2)+y(5))/2)*e(2,5)-((y(2)+y(5))/2)^2-e(2,5)^2;
g(9)=h(2,6)^2-2*((y(2)+y(6))/2)*e(2,6)-((y(2)+y(6))/2)^2-e(2,6)^2;
g(10)=h(3,4)^2-2*((y(3)+y(4))/2)*e(3,4)-((y(3)+y(4))/2)^2-e(3,4)^2;
g(11)=h(3,5)^2-2*((y(3)+y(5))/2)*e(3,5)-((y(3)+y(5))/2)^2-e(3,5)^2;
g(12)=h(3,6)^2-2*((y(3)+y(6))/2)*e(3,6)-((y(3)+y(6))/2)^2-e(3,6)^2;
g(13)=h(4,5)^2-2*((y(4)+y(5))/2)*e(4,5)-((y(4)+y(5))/2)^2-e(4,5)^2;
g(14)=h(4,6)^2-2*((y(4)+y(6))/2)*e(4,6)-((y(4)+y(6))/2)^2-e(4,6)^2;
g(15)=h(5,6)^2-2*((y(5)+y(6))/2)*e(5,6)-((y(5)+y(6))/2)^2-e(5,6)^2;
g(16)=y(1)^2-(30*pi/180)^2;
g(17)=y(2)^2-(30*pi/180)^2;
g(18)=y(3)^2-(30*pi/180)^2;
g(19)=y(4)^2-(30*pi/180)^2;
g(20)=y(5)^2-(30*pi/180)^2;
g(21)=y(6)^2-(30*pi/180)^2;


发表于 2003-8-29 17:53:57 | 显示全部楼层
n=input('输入飞机的架数')
k=0;
x(n)=input('请输入新飞入的飞机的横坐标')
y(n)=input('请输入新飞入的飞机的纵坐标')
v(n)=input('请输入新飞入的飞机的飞行角度')
for i=1:n-1
   x(i)=input('请输入飞机i的横坐标')
   y(i)=input('请输入飞机i的纵坐标')
   v(i)=input('请输入飞机i的飞行角度')
   a=x(i)-x(n);
   b=y(i)-y(n);
   p(i)=v(i)*3.14/180;
   p(n)=v(n)*3.14/180;
   c=800*(cos(p(i))+sin(p(i))*i);
   d=800*(cos(p(n))+sin(p(n))*i);
   e=atan((sin(p(i)-atan(b/a))-sin(p(n)-atan(b/a)))/(cos(p(i)-atan(b/a))-cos(p(n)-atan(b/a))));
  % f=e-atan(b/a);
   g=asin(8/sqrt(a*a+b*b));
   if abs(e)<g
      l(i)=i
      k=k+1
      if k>0
         disp('该飞机将会与新飞入的飞机碰撞,需要调整角度')
      end
   end
end

%此程序判断新飞入的飞机是否会与其他飞机相碰即k>0

附录2
k=0;
x=[150,85,150,145,130,0];
y=[140,85,155,50,150,0];
v=[243,236,220.5,159,230,52];
for i=1:5
for j=i+1:6
   a=x(i)-x(j);
   b=y(i)-y(j);
   p(i)=v(i)*3.14/180;
   p(j)=v(j)*3.14/180;
   c=800*(cos(p(i))+sin(p(i))*i);
   d=800*(cos(p(j))+sin(p(j))*i);
if a==0
   t=pi/2
else
   t=atan(b/a)
end

   e(i,j)=atan((sin(p(i)-t)-sin(p(j)-t))/(cos(p(i)-t)-cos(p(j)-t)));
   e(j,i)=e(i,j);
  % f=e-atan(b/a);
  h(i,j)=asin(8/sqrt(a*a+b*b));
h(j,i)=h(I,j)
  
  end
  
end
end
h
e
%此程序计算出飞机相对速度 =e(I,j) 及碰撞角 =h是否会与其他飞机相碰
function [f,g]=fun(y)

f=y(1)*y(1)+y(2)*y(2)+y(3)*y(3)+y(4)*y(4)+y(5)*y(5)+y(6)*y(6)
e =input('请输入飞机飞行的相对速度与圆心连线的夹角')
h= input('请输入飞机飞行的碰撞角')
g(1)=h(1,2)^2-2*((y(1)+y(2))/2)*e(1,2)-((y(1)+y(2))/2)^2-e(1,2)^2;
g(2)=h(1,3)^2-2*((y(1)+y(3))/2)*e(1,3)-((y(1)+y(3))/2)^2-e(1,3)^2;
g(3)=h(1,4)^2-2*((y(1)+y(4))/2)*e(1,4)-((y(1)+y(4))/2)^2-e(1,4)^2;
g(4)=h(1,5)^2-2*((y(1)+y(5))/2)*e(1,5)-((y(1)+y(5))/2)^2-e(1,5)^2;
g(5)=h(1,6)^2-2*((y(1)+y(6))/2)*e(1,6)-((y(1)+y(2))/2)^2-e(1,6)^2;
g(6)=h(2,3)^2-2*((y(2)+y(3))/2)*e(2,3)-((y(2)+y(3))/2)^2-e(2,3)^2;
g(7)=h(2,4)^2-2*((y(2)+y(4))/2)*e(2,4)-((y(2)+y(4))/2)^2-e(2,4)^2;
g(8)=h(2,5)^2-2*((y(2)+y(5))/2)*e(2,5)-((y(2)+y(5))/2)^2-e(2,5)^2;
g(9)=h(2,6)^2-2*((y(2)+y(6))/2)*e(2,6)-((y(2)+y(6))/2)^2-e(2,6)^2;
g(10)=h(3,4)^2-2*((y(3)+y(4))/2)*e(3,4)-((y(3)+y(4))/2)^2-e(3,4)^2;
g(11)=h(3,5)^2-2*((y(3)+y(5))/2)*e(3,5)-((y(3)+y(5))/2)^2-e(3,5)^2;
g(12)=h(3,6)^2-2*((y(3)+y(6))/2)*e(3,6)-((y(3)+y(6))/2)^2-e(3,6)^2;
g(13)=h(4,5)^2-2*((y(4)+y(5))/2)*e(4,5)-((y(4)+y(5))/2)^2-e(4,5)^2;
g(14)=h(4,6)^2-2*((y(4)+y(6))/2)*e(4,6)-((y(4)+y(6))/2)^2-e(4,6)^2;
g(15)=h(5,6)^2-2*((y(5)+y(6))/2)*e(5,6)-((y(5)+y(6))/2)^2-e(5,6)^2;
g(16)=y(1)^2-(30*pi/180);
g(17)=y(2)^2-(30*pi/180);
g(18)=y(3)^2-(30*pi/180);
g(19)=y(4)^2-(30*pi/180);
g(20)=y(5)^2-(30*pi/180);
g(21)=y(6)^2-(30*pi/180);
运行程序为
y0=[0.01,0.01,0.01,0.01,0.01,0.01];
options(1)=0;
y=constr('fun',y0)
%计算出飞机的调整角度



 楼主| 发表于 2003-9-10 05:12:53 | 显示全部楼层
谢谢,这是我的程序,大家看看哪里不对?
x=[150,85,150,145,130,0];
y=[140,85,155,50,150,0];
angle=(pi/180)*[243,236,220.5,159,230,52];

for i=1:6;
    for j=1:6;
        delx(i,j)=x(i)-x(j);
        dely(i,j)=y(i)-y(j);
    end;
end;

fval=10000;
m=1;
n=2;

for a1=m:n;
    for a2=m:n;
          aa=(pi/180)*[a1,a2];
          delx2=delx([1,2],[1,2]);
          dely2=dely([1,2],[1,2]);
                         for k=1:2;
                             for l=1:2;
                                 c2(k,l)=cos(aa(k))-cos(aa(l));
                                 s2(k,l)=sin(aa(k))-sin(aa(l));
                             end;
                         end;
                         D2=((delx2.*s2-dely2.*c2).^2)./(c2.^2+s2.^2);
                         if min(min(D2))<64;
                             continue;
                         else  
                               ftest=sum((aa-angle(1:2)).^2);
                            if ftest>fval;
                                continue;
                            else
                                fval=ftest;
                                aval=aa;
                            end;
                        end;
        
        for a3=m:n;
            ab=(pi/180)*[a1,a2,a3];
            delx3=delx([1,2,3],[1,2,3]);
            dely3=dely([1,2,3],[1,2,3]);
                         for k=1:3;
                             for l=1:3;
                                 c3(k,l)=cos(ab(k))-cos(ab(l));
                                 s3(k,l)=sin(ab(k))-sin(ab(l));
                             end;
                         end;
                         D2=((delx3.*s3-dely3.*c3).^2)./(c3.^2+s3.^2);
                         if min(min(D2))<64;
                             continue;
                         else  
                               ftest=sum((ab-angle(3)).^2);
                            if ftest>fval;
                                continue;
                            else
                                fval=ftest;
                                aval=ab;
                            end;
                        end;
            for a4=m:n;
                ac=(pi/180)*[a1,a2,a3,a4];
                delx4=delx([1,4],[1,4]);
                dely4=dely([1,4],[1,4]);
                         for k=1:4;
                             for l=1:4;
                                 c4(k,l)=cos(ac(k))-cos(ac(l));
                                 s4(k,l)=sin(ac(k))-sin(ac(l));
                             end;
                         end;
                         D2=((delx4.*s4-dely4.*c4).^2)./(c4.^2+s4.^2);
                         if min(min(D2))<64;
                             continue;
                         else  
                               ftest=sum((ac-angle(4)).^2);
                            if ftest>fval;
                                continue;
                            else
                                fval=ftest;
                                aval=ac;
                            end;
                        end;
                for a5=m:n;
                    ad=(pi/180)*[a1,a2,a3,a4,a5];
                    delx5=delx([1,5],[1,5]);
                    dely5=dely([1,5],[1,5]);
                         for k=1:5;
                             for l=1:5;
                                 c5(k,l)=cos(ad(k))-cos(ad(l));
                                 s5(k,l)=sin(ad(k))-sin(ad(l));
                             end;
                         end;
                         D2=((delx5.*s5-dely5.*c5).^2)./(c5.^2+s.^2);
                         if min(min(D2))<64;
                             continue;
                         else  
                               ftest=sum((ad-angle(5)).^2);
                            if ftest>fval;
                                continue;
                            else
                                fval=ftest;
                                aval=ad;
                            end;
                        end;
                     for a6=m:n;
                         a=(pi/180)*[a1,a2,a3,a4,a5,a6];
                         for k=1:6;
                             for l=1:6;
                                 c(k,l)=cos(a(k))-cos(a(l));
                                 s(k,l)=sin(a(k))-sin(a(l));
                             end;
                         end;
                         D2=((delx.*s-dely.*c).^2)./(c.^2+s.^2);
                         if min(min(D2))>=64;
                               ftest=sum((a-angle).^2);
                            if ftest<fval;
                                fval=ftest;
                                aval=a;
                                fval
                                aval
                            end;
                         end;
                     end;
                 end;
             end;
         end;
     end;
end;  


                        
                        
                        
                        

发表于 2003-9-12 05:21:30 | 显示全部楼层
不知道是真的还是假的哦  是不是乱写的啊
发表于 2003-9-14 02:16:55 | 显示全部楼层
是不是运行一下不就得了,用什么编写的呀!
发表于 2003-9-16 08:50:21 | 显示全部楼层
用MATLAB编的
发表于 2003-9-17 02:12:15 | 显示全部楼层
还不错吗!
恭喜你!
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-4-28 01:27 , Processed in 0.058840 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表