⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhuanxiangjigou.m

📁 通过对现在汽车前轮转向机构的分析
💻 M
字号:
amin=80;
amax=150;
bmin=250;
bmax=320;
emin=60;
emax=100;
K=1274;
T=2340;
M=624;
H=31;
Bxmin=42;
ABmax=28/180*pi;                                                                                            %已知条件
j=1;                                                                                                        %记录有效数据个数
for(i=1:1:1000000)                                                                                           %随机取数次数
    a=amin+(amax-amin)*rand(1,1);
    b=bmin+(bmax-bmin)*rand(1,1);
    e=emin+(emax-emin)*rand(1,1);                                                                           %随机取a,b,e    
    A1=K-M;
    B1=2*e;
    C1=-(((K-M)/2)^2+a^2+e^2-b^2)/a;                                                                        %求f0对应的参数  
    for(k=1:1:2)                                                                                            %f0有两解
        if(A1^2+B1^2-C1^2>=0)
            f0=2*atan((B1+(-1)^k*sqrt(A1^2+B1^2-C1^2))/(A1-C1));
            if(f0>=0)
                A2=2*a*((K-M)/2-H);
                B2=2*a*e;
                C2=b^2-e^2-a^2-((K-M)/2-H)^2;                                                               %求Amax对应的参数
                A3=2*a*((K-M)/2+H);
                B3=2*a*e;
                C3=b^2-e^2-a^2-((K-M)/2+H)^2;                                                               %求Bmax对应的参数
                for(m=1:1:2)                                                                                %Amax有两解
                    for(n=1:1:2)                                                                            %Bmax有两解
                        if((A2^2+B2^2-C2^2>=0)&&(A3^2+B3^2-C3^2>=0))
                            Amax=2*atan((B2+(-1)^m*sqrt(A2^2+B2^2-C2^2))/(A2-C2))-f0;
                            Bmax=f0-2*atan((B3+(-1)^n*sqrt(A3^2+B3^2-C3^2))/(A3-C3));
                            if ((Amax>0)&&(Bmax>0)&&(Bmax>Amax))                                            %右转的情况
                                if((Bmax>ABmax))                                                            %由28度控制行程
                                    Bmax=28/180*pi;
                                    H1=-(K-M)/2+a*cos(f0-Bmax)+sqrt(b^2-(a*sin(f0-Bmax)-e)^2);
                                    A5=2*a*((K-M)/2-H1);
                                    B5=2*a*e;
                                    C5=b^2-e^2-a^2-((K-M)/2-H1)^2;
                                    for(r=1:1:2)
                                        Amax1=2*atan((B5+(-1)^r*sqrt(A5^2+B5^2-C5^2))/(A5-C5))-f0;
                                        if((Amax1>0)&&(Amax1<Bmax))
                                            Amax=Amax1;
                                        end
                                    end                                    
                                    n=fix(Amax/pi*180);                                                                           
                                    rmin1=acos((a^2+b^2-e^2-((K-M)/2-H1)^2)/(2*a*b))/pi*180;
                                    rmin2=acos((a^2+b^2-e^2-((K-M)/2+H1)^2)/(2*a*b))/pi*180;
                                    smax=H1;
                                else                                                                        %行程控制角度
                                    n=fix(Amax/pi*180);
                                    rmin1=acos((a^2+b^2-e^2-((K-M)/2-H)^2)/(2*a*b))/pi*180;
                                    rmin2=acos((a^2+b^2-e^2-((K-M)/2+H)^2)/(2*a*b))/pi*180;
                                    smax=H;
                                end
                                Bx=a*cos(Amax+f0);                                
                                if((Bx>=Bxmin)&&(rmin1>=35)&&(rmin2>=35)&&(smax<=31))                       %干涉与传动条件
                                    for(v=1:1:2)                                                            %f有两解
                                        p1=0;                                                               %转角误差初始值 
                                        t=0;
                                        for(w=1:1:n)                                                        %角度离散化,步长为1                                                                               
                                            s=(K-M)/2-a*cos(w/180*pi+f0)-sqrt(b^2-(a*sin(w/180*pi+f0)-e)^2);                            
                                            A4=-2*a*((K-M)/2+s);
                                            B4=-2*a*e;
                                            C4=((K-M)/2+s)^2+a^2+e^2-b^2;                                   %求f的参数
                                            if(A4^2+B4^2-C4^2>=0)
                                                f=2*atan((B4+(-1)^v*sqrt(A4^2+B4^2-C4^2))/(A4-C4));
                                                if(f>=0)
                                                    g1=f0-f;
                                                    g2=acot(cot(w/180*pi)-K/T);
                                                    g=(g1-g2)/pi*180;
                                                    p1=p1+g^2;                                              %累加误差
                                                    t=t+1;
                                                end
                                            end                                          
                                        end
                                        if(t==n)                                                            %记录合理的有关数据
                                            p(j)=p1;
                                            a1(j)=a;
                                            b1(j)=b;
                                            e1(j)=e;
                                            f01(j)=f0;
                                            n1(j)=n; 
                                            maxa(j)=Amax;
                                            maxb(j)=Bmax;
                                            smax1(j)=smax;
                                            v1(j)=v;
                                            j=j+1;
                                        end
                                    end                                 
                                end
                            end
                        end
                    end
                end
            end
        end
    end
end
kk=size(p);
pp=p(1);
min1=1;
for(t=2:1:kk(1,2))                                                                                          %查找最小的误差
    if(pp>p(t))
        pp=p(t);
        min1=t;
    end
end
a=a1(min1);
b=b1(min1);
e=e1(min1);                                                                                                 %最优的a,b,e
f0=f01(min1);
Amax=maxa(min1)/pi*180;
Bmax=maxb(min1)/pi*180;
Smax=smax1(min1);                                                                                           %最优值对应的参数
n=n1(min1)/180*pi;
v=v1(min1);
i=1;
for(w=0.001:0.001:n)
s=(K-M)/2-a*cos(w+f0)-sqrt(b^2-(a*sin(w+f0)-e)^2);
A=-2*a*((K-M)/2+s);
B=-2*a*e;
C=((K-M)/2+s)^2+a^2+e^2-b^2;
f1=2*atan((B+(-1)^v*sqrt(A*A+B*B-C*C))/(A-C));
f2=f0-f1;
f(i)=f2-acot(cot(w)-K/T);
i=i+1;
end
w=[0.001:0.001:n];
plot(w/pi*180,f/pi*180,'r*');                                                                                %画误差曲线

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -