2016年全国大学生数学建模竞赛A题CT系统参数标定及成像(含word论文和源代码资源)

一、部分题目

2016年高教社杯全国大学生数学建模竞赛题目

A题 系泊系统的设计

近浅海观测网的传输节点由浮标系统、系泊系统和水声通讯系统组成(如图1所示)。某型传输节点的浮标系统可简化为底面直径2m、高2m的圆柱体,浮标的质量为1000kg。系泊系统由钢管、钢桶、重物球、电焊锚链和特制的抗拖移锚组成。锚的质量为600kg,锚链选用无档普通链环,近浅海观测网的常用型号及其参数在附表中列出。钢管共4节,每节长度1m,直径为50mm,每节钢管的质量为10kg。要求锚链末端与锚的链接处的切线方向与海床的夹角不超过16度,否则锚会被拖行,致使节点移位丢失。水声通讯系统安装在一个长1m、外径30cm的密封圆柱形钢桶内,设备和钢桶总质量为100kg。钢桶上接第4节钢管,下接电焊锚链。钢桶竖直时,水声通讯设备的工作效果最佳。若钢桶倾斜,则影响设备的工作效果。钢桶的倾斜角度(钢桶与竖直线的夹角)超过5度时,设备的工作效果较差。为了控制钢桶的倾斜角度,钢桶与电焊锚链链接处可悬挂重物球。

系泊系统的设计问题就是确定锚链的型号、长度和重物球的质量,使得浮标的吃水深度和游动区域及钢桶的倾斜角度尽可能小。

请建立数学模型解决以下问题

问题1 某型传输节点选用II型电焊锚链22.05m,选用的重物球的质量为1200kg。现将该型传输节点布放在水深18m、海床平坦、海水密度为1.025×103kg/m3的海域。若海水静止,分别计算海面风速为12m/s和24m/s时钢桶和各节钢管的倾斜角度、锚链形状、浮标的吃水深度和游动区域。

问题2 在问题1的假设下,计算海面风速为36m/s时钢桶和各节钢管的倾斜角度、锚链形状和浮标的游动区域。请调节重物球的质量,使得钢桶的倾斜角度不超过5度,锚链在锚点与海床的夹角不超过16度。

问题3 由于潮汐等因素的影响,布放海域的实测水深介于16m~20m之间。布放点的海水速度最大可达到1.5m/s、风速最大可达到36m/s。请给出考虑风力、水流力和水深情况下的系泊系统设计,分析不同情况下钢桶、钢管的倾斜角度、锚链形状、浮标的吃水深度和游动区域。

二、部分论文

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、部分源代码

1

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define MAXN 1005
#define g 9.8
#define pi 3.14159
double INF=99999;
double L=1,Rfb=1,rou=1025,Mfb=1000;
double Ffengx,Ffengy,Ffu,h,Vf,Vs;
double theat[MAXN],jiao[MAXN];
double x[10];
double y[10];
double T[MAXN];
double Xj,Yj;
double Theat;
double Fx[MAXN],Fy[MAXN];
double sum=0;
double ans;
double windj;
double Abs(double a)
{
    if(a>0)
        return a;
    return -a;
}
void fb()
{
    Vf=12;
    double S=(2-h)*2*cos(windj)+pi*1*1*sin(windj);
    Ffengx=0.625*S*Vf*Vf*cos(windj);
    Ffengy=0.625*S*Vf*Vf*sin(windj);
    Ffu=rou*g*pi*Rfb*Rfb*h;
    double Gfb=1000*g;
    x[1]=Ffengx;
    y[1]=Ffu-Gfb-Ffengy;
}
void steel()
{
    double G=10*g-rou*g*pi*0.025*0.025*L;
    for(int i=2;i<=5;i++)
    {
        y[i]=y[i-1]-G;
        x[i]=x[i-1];
        theat[i-1]=atan((y[i-1]*L-G*L/2)/(x[i-1]*L))/pi*180;
        //cout<<theat[i-1]<<endl;
        sum+=L*sin(theat[i-1]/180*pi);
    }
    double Gg=1200*g;
    double Gt=100*g-rou*g*pi*0.15*0.15*L;
    Yj=y[5]-Gg-Gt;
    Xj=x[5];
    Theat=atan((y[5]*L-Gt*L/2)/(x[5]*L))/pi*180;
    sum+=L*sin(Theat/180*pi);
    //cout<<Theat<<endl;
}
void chain()
{
    Fx[0]=Xj;
    Fy[0]=Yj;
    double l=0.105;
    double G=7*l*g;
    //cout<<G<<endl;
    for(int i=1;i<=210;i++)
    {
        Fy[i]=Fy[i-1]-G;
        Fx[i]=Fx[i-1];
        jiao[i]=atan((Fy[i-1]*l-G*l/2)/(Fx[i-1]*l))/pi*180;
        //cout<<jiao[i]<<endl;
        if(jiao[i]<=0)
            break;
        sum+=l*sin(jiao[i]/180*pi);
    }
}
int main()
{
    for(double i=0;i<=90;i++)
    {
        windj=i/180*pi;
        INF=99999;
        h=0;
        while(1)
        {
            if(h>2)
                break;
            sum=0;
            h=h+0.001;
            fb();
            steel();
            chain();
            if(Abs(sum-18)<INF)
            {
                INF=Abs(sum-18);
                ans=h;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

2

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define MAXN 1005
#define g 9.8
#define pi 3.14159
double L=1,Rfb=1,rou=1025,Mfb=1000;
double Ffengx,Ffengy,Ffu,h,Vf,Vs;
double theat[MAXN],jiao[MAXN];
double x[10];
double y[10];
double T[MAXN];
double Xj,Yj;
double Theat;
double Fx[MAXN],Fy[MAXN];
double sum=0;
double sum2;
double ans;
double windj;
double gball=2228;
double Abs(double a)
{
    if(a>0)
        return a;
    return -a;
}
void fb()
{
    Vf=36;
    double S=(2-h)*2*cos(windj)+pi*1*1*sin(windj);
    Ffengx=0.625*S*Vf*Vf*cos(windj);
    Ffengy=0.625*S*Vf*Vf*sin(windj);
    Ffu=rou*g*pi*Rfb*Rfb*h;
    double Gfb=1000*g;
    x[1]=Ffengx;
    y[1]=Ffu-Gfb-Ffengy;
}
void steel()
{
    double G=10*g-rou*g*pi*0.025*0.025*L;
    cout<<"四根钢管夹角:"<<endl;
    for(int i=2;i<=5;i++)
    {
        y[i]=y[i-1]-G;
        x[i]=x[i-1];
        theat[i-1]=atan((y[i-1]*L-G*L/2)/(x[i-1]*L))/pi*180;
        cout<<theat[i-1]<<endl;
        sum2+=L*cos(theat[i-1]/180*pi);
    }
    double Gg=gball*g;
    double Gt=100*g-rou*g*pi*0.15*0.15*L;
    Yj=y[5]-Gg-Gt;
    Xj=x[5];
    Theat=atan((y[5]*L-Gt*L/2)/(x[5]*L))/pi*180;
    sum2+=L*cos(Theat/180*pi);
    cout<<"钢桶夹角:"<<endl;
    cout<<Theat<<endl;
}
void chain()
{
    Fx[0]=Xj;
    Fy[0]=Yj;
    double l=0.105;
    double G=7*l*g;
    cout<<"锚链夹角:"<<endl;
    for(int i=1;i<=210;i++)
    {
        Fy[i]=Fy[i-1]-G;
        Fx[i]=Fx[i-1];
        jiao[i]=atan((Fy[i-1]*l-G*l/2)/(Fx[i-1]*l))/pi*180;
        if(jiao[i]<=0)
        {
            cout<<0<<endl;
            sum2+=l;
            continue;
        }
        cout<<jiao[i]<<endl;
        sum2+=l*cos(jiao[i]/180*pi);
    }
}
int main()
{
    windj=0;
    h=1.082;
    fb();
    steel();
    chain();
    cout<<sum2<<endl;
    return 0;
}

3

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<ctime>
using namespace std;
#define MAXN 1005
#define g 9.8
#define pi 3.14159
double INF=99999;
double L=1,Rfb=1,rou=1025,Mfb=1000;
double Ffengx,Ffengy,Ffu,h,Vf,Vs;
double theat[MAXN],jiao[MAXN];
double x[10];
double y[10];
double T[MAXN];
double Xj,Yj;
double Theat;
double Fx[MAXN],Fy[MAXN];
double sum=0,sum2=0;
double ans;
double windj;
double Fw,Vw,weigh;
double type[10][5];
double Ds[10];
int Type,number;
void fb()
{
    double S=(2-h)*2*cos(windj)+pi*1*1*sin(windj);
    Ffengx=0.625*S*Vf*Vf*cos(windj);
    Ffengy=0.625*S*Vf*Vf*sin(windj);
    Fw=374*2*h*Vw*Vw;
    Ffu=rou*g*pi*Rfb*Rfb*h;
    double Gfb=1000*g;
    x[1]=Ffengx+Fw;
    y[1]=Ffu-Gfb-Ffengy;
}
void steel()
{
    double G=10*g-rou*g*pi*0.025*0.025*L;
    for(int i=2;i<=5;i++)
    {
        Fw=374*Vw*Vw*0.05;
        theat[i-1]=atan((y[i-1]*L-G*L/2)/(x[i-1]*L+Fw*L/2))/pi*180;
        y[i]=y[i-1]-G;
        x[i]=x[i-1]+Fw;
        sum+=L*sin(theat[i-1]/180*pi);
        sum2+=L*cos(theat[i-1]/180*pi);
        //cout<<theat[i-1]<<endl;
    }
    double Gg=weigh*g;
    double Gt=100*g-rou*g*pi*0.15*0.15*L;
    Fw=374*Vw*Vw*0.3;
    Theat=atan((y[5]*L-Gt*L/2)/(x[5]*L+Fw*L/2))/pi*180;
    Yj=y[5]-Gg-Gt;
    Xj=x[5]+Fw;
    sum+=L*sin(Theat/180*pi);
    sum2+=L*cos(Theat/180*pi);
    //cout<<Theat<<endl;
}
void chain()
{
    Fw=Ds[Type]*374*Vw*Vw;
    Fx[0]=Xj;
    Fy[0]=Yj;
    double l=type[Type][1];
    double G=type[Type][2]*l*g;
    for(int i=1;i<=number;i++)
    {
        Fy[i]=Fy[i-1]-G;
        Fx[i]=Fx[i-1]+Fw;
        jiao[i]=atan((Fy[i-1]*l-G*l/2)/(Fx[i-1]*l+Fw*l/2))/pi*180;
        if(jiao[i]<=0)
        {
            jiao[i]=0;
            sum+=0;
            sum2+=l;
            //cout<<jiao[i]<<endl;
            continue;
        }
        sum+=l*sin(jiao[i]/180*pi);
        sum2+=l*cos(jiao[i]/180*pi);
        //cout<<jiao[i]<<endl;
    }
}
void initial()
{
    type[1][1]=0.078;
    type[1][2]=3.2;
    type[2][1]=0.105;
    type[2][2]=7;
    type[3][1]=0.120;
    type[3][2]=12.5;
    type[4][1]=0.150;
    type[4][2]=19.5;
    type[5][1]=0.180;
    type[5][2]=28.12;
    Ds[1]=0.0017;
    Ds[2]=0.0032;
    Ds[3]=0.0049;
    Ds[4]=0.0076;
    Ds[5]=0.0109;
}
double hmin=99999,hmax=-1;
double Rmin=99999,Rmax=-1;
double Abs(double a)
{
    if(a>0)
        return a;
    return -a;
}
int main()
{
    INF=99999;
    srand(time(NULL));
    initial();
    cout<<"请输入风的速度(m/s):"<<endl;
    cin>>Vf;
    cout<<"请输入风向与水平面的夹角(°):"<<endl;
    cin>>windj;
    cout<<"请输入海水流速(m/s):"<<endl;
    cin>>Vw;
    for(int i=1;i<=1000;i++)
    {
        cout<<i<<endl;
        Type=rand()%5+1;
        weigh=500+rand()%2500;
        number=60+rand()%500;//存疑
        h=0;
        while(1)
        {
            if(h>2)
                break;
            sum=0;
            sum2=0;
            h=h+0.01;
            fb();
            steel();
            chain();
            if(sum+h>=16&&sum+h<=20&&Theat>=85&&jiao[number]<=16&&jiao[number]>=0)
            {
                if(h<hmin)
                    hmin=h;
                if(h>hmax)
                    hmax=h;
                if(sum2<Rmin)
                    Rmin=sum2;
                if(sum2>Rmax)
                    Rmax=sum2;
            }
        }
    }
    cout<<hmin<<' '<<Rmin<<endl;
    cout<<hmax<<' '<<Rmax<<endl;
    return 0;
}

四、完整word论文和源代码

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦是远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值