2022全国大学生数学建模A题的思路与解法

Posted River Chandler

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022全国大学生数学建模A题的思路与解法相关的知识,希望对你有一定的参考价值。

题目回顾与写在前面

  • 首先,我们队在历经了千辛万苦之后,光荣得获得了  省三......
  • 队伍构成 物理*2 + 计算机*1
  • 队伍分工  计算机-->受力分析  物理-->数值计算
  • 总评:图一乐,狠乐!物理系,计算机系嘛,不怎么看建模的啦!
    • 如果只是考虑力学问题的话,我们分析得肯定还不太到位,但是这个题肯定很好分析
    • 所以,这个题主要在数值计算上

 思路

基本假设

1.海水是无粘及无旋的。

2.浮子在线性周期微幅波作用下会受到波浪激励力(矩)、附加惯性力(矩)、兴波阻尼力(矩)和静水恢复力(矩)。

3.忽略中轴、底座、隔层及 PTO的质量和各种摩擦。

4.初始浮子和振子平衡于静水中。

问题一的求解

 

问题一浮子振子整体的受力分析

问题一振子在浮子参考系下的受力分析

数值求解

4级显式Runge-Kutta方法

求解过程的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import matplotlib

matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False

def runge_kutta4(df, a, b, h, y0):
    num = len(y0)
    x = np.arange(a, b+h, h)
    w = np.zeros( (x.size, num) )
    w[0, :] = y0
    for i in range(x.size - 1):
        s0 = df(x[i], w[i, :],i*h)
        s1 = df(x[i] + h/2., w[i, :] + h * s0 / 2.,i*h)
        s2 = df(x[i] + h/2., w[i, :] + h * s1 / 2.,i*h)
        s3 = df(x[i+1], w[i, :] + h * s2,i*h)
        w[i+1,:] = w[i,:] + h * (s0 + 2*(s1+s2) + s3) / 6.
    return x, w

def df(x, variables,i):
    th1, th2, om1, om2 = variables
    
    A = np.zeros((2, 2))
    b = np.zeros(2)
    
    A[0, 0] = 2433+6201.535
    A[0, 1] = 2433
    A[1, 0] = 2433
    A[1, 1] = 2433
    
    b[0] = 6250*np.cos(1.4005*i)-10045*4*np.arctan(1)*th1*(th1<=0.999989731)-10045*4*np.arctan(1)*0.999989731*(th1>0.999989731)-656.3616*om1
    b[1] = -80000*th2-10000*om2
    dom1, dom2 = np.linalg.solve(A,b)
    return np.array([om1,om2,dom1,dom2])

a, b = 0.0,180.0
h = 0.01

th10 = 0.1
th20 = 0.1
om10 = 0.1
om20 = 0.1

y0 = np.array([th10, th20, om10, om20])

# 计算求解
t, w = runge_kutta4(df, a, b, h, y0)

th1 = w[:, 0]
th2 = w[:, 1]
om1 = w[:, 2]
om2 = w[:, 3]

plt.plot([h*i for i in range(len(th1))],th1,label="x1")
plt.plot([h*i for i in range(len(th2))],th2,label="x2")
#plt.plot([i*h for i in range(len(om1))],om1,label="x1'")
#plt.plot([i*h for i in range(len(om2))],om2,label="x2'")
plt.xlabel("时间/s")
plt.ylabel("位移/m",rotation=True)
#plt.ylabel("速度/m*s^-1",rotation=True)
plt.legend()

plt.title("x1 x2 随时间的变化量;求解步长 -m1"+str(h))
plt.savefig("x1 x2 随时间的变化量 求解步长 -m1"+str(h)+".jpg")
plt.show()


#plt.title("x1' x2' 随时间的变化量;求解步长 "+str(h))
#plt.savefig("x1' x2' 随时间的变化量 求解步长 "+str(h)+".jpg")
#plt.show()

import xlsxwriter as xls
#th1 = np.array(th1[::20])
#th2 = np.array(th2[::20])
#om1 = np.array(om1[::20])
#om2 = np.array(om2[::20])

th1 = np.array(th1)
th2 = np.array(th2)
om1 = np.array(om1)
om2 = np.array(om2)


workbook = xls.Workbook("1-1-000-m1.xlsx")
worksheet = workbook.add_worksheet("Sheet1")
headings = ["x1","x2","v1","v2"]
worksheet.write_row("A1",headings)
worksheet.write_column("A2",th1)
worksheet.write_column("B2",om1)

worksheet.write_column("C2",th1+th2)
worksheet.write_column("D2",om1+om2)
workbook.close()

问题二

变步长搜索法

矩形法数值积分

问题二解法

60秒-80秒

80秒-100秒

100秒-120秒

 

最大平均功率/瓦特

290.141018

282.3656312

285.2766

289.2045

291.1627

291.2182

Beta值

38130

37850

37940

37970

37970

37970

Alpha值

0.098

0.1

0.1

0.1

0.1

0.1

 

问题三

 

数值解(类似一,二的解法)

物理量 \\ 时间

10s

20s

40s

60s

100s

浮子垂荡位移

-0.685529938

-0.604544566

0.195435534

-0.156064651

0.142943636

浮子垂荡速度

0.5487404

-0.698097309

0.922311628

-0.867269801

-0.917710776

浮子纵摇角位移

0.0293679

0.001331413

-0.000590353

-0.002998229

-0.015015832

浮子纵摇角速度

-0.115251745

0.020961283

-0.03312735

0.042788285

0.051748796

振子垂荡位移

-0.764772476

-0.657517866

0.199876278

-0.159952226

0.168056577

振子垂荡速度

0.565213931

-0.788403868

1.017008287

-0.952503212

-0.997533033

振子纵摇角位移

0.030535835

0.001439153

-0.000618481

-0.003153401

-0.015074399

振子纵摇角速度

-0.117325818

0.019228743

-0.031151057

0.046614327

0.056193417

 

 问题四

 我们的优化模型:

小结

  • 这道题受力分析的成分要更大一点哈
  • 分析完了就数值计算
  • 受力分析不完整,我们就不放出来了,以后再完善吧。

以上是关于2022全国大学生数学建模A题的思路与解法的主要内容,如果未能解决你的问题,请参考以下文章

2022年全国大学生数学建模竞赛A题思路

2022年全国大学生数学建模竞赛C题思路

2022年全国大学生数学建模竞赛C题思路

2022高教社杯全国大学生数学建模-波浪能最大输出功率设计点评

2022年全国大学生数学建模竞赛B题思路

2022年全国大学生数学建模竞赛B题思路