我的编程空间,编程开发者的网络收藏夹
学习永远不晚

A7.2022年全国数学建模竞赛A题-波浪能最大输出功率设计-赛题分析与讨论

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

A7.2022年全国数学建模竞赛A题-波浪能最大输出功率设计-赛题分析与讨论

2022年数学建模国赛(A题/B题/C题)评阅要点

文章目录


1. 2022年A题(波浪能最大输出功率设计)

A题 波浪能最大输出功率设计

随着经济和社会的发展,人类面临能源需求环境污染双重挑战,发展可再生产业已成为世界各国的共识。
波浪能作一种重要海洋可再生源,分布广泛储量丰富,具有可观的应用前景。 波浪能装置量转换效率是规模化利关键问题之一。

在这里插入图片描述



2. 算法讨论

2.1 基本分析:阻尼问题,考虑用微分方程求解。

参考例程:
Python小白的数学建模课-09.微分方程模型09.微分方程模型
Python小白的数学建模课-11.偏微分方程数值解法11.偏微分方程数值解法


2.2 基本问题:常微分方程还是偏微分方程

(1)常微分方程初值问题,可以表达为对 t 或对 x 的导数;
(2)常微分方程边值问题,可以表达为 y 对 x 的导数;
(3)偏微分方程,一般是既包括对 t 的导数,又包括对 x 的导数,当然还有其它特殊形式,就不讨论了。
(4)对于偏微分方程,可以在 t0 或 x0 作为常微分方程讨论,分析和求解。
问题如果涉及 10s, 20s, t 显然是自变量了。
问题如果求某一时刻位移,这当然就是 y(t) 了。
问题如果求某一时刻的速度,可以表示为 y(t) 的一阶导数。


2.3 基本问题:一维问题还是二维问题

(1)中轴,圆柱体,往复运动,垂荡运动,这些都是提示,而且都是必要的。
(2)纵摇,这意味着什么?注意坐标系的选择。推荐参考:
Python小白的数学建模课-11.偏微分方程数值解法11.偏微分方程数值解法


2.4 基本问题:一阶问题还是二阶问题

(1)弹簧-阻尼系统的微分方程,不论串联,并联,串并联,都比较容易列出微分方程。详见“弹簧质量阻尼器的动力学”。
(2)壳体如何处理?取决于坐标系的选择。


2.5 基本问题:无源问题还是有源问题

这个问题很明显,激励力和激励频率都给出了。
有源激励的微分方程,激励函数如何表达与编程,可以参考:
Python小白的数学建模课-09.微分方程模型09.微分方程模型


2.6 能不能不用微分方程求解?

其实是可以的,但难度可能更大,就不讨论了。



3. 微分方程例程 — 与题目无关

3.1 例题:求二阶 RLC 振荡电路的数值解

高阶常微分方程,必须做变量替换,化为一阶微分方程组,再用 odeint 求数值解。

零输入响应的 RLC 振荡电路可以由如下的二阶微分方程描述:

{ d 2 u d t 2 + R L ∗ d u d t + 1 L C ∗ u = 0 u ( 0 ) = U 0 u ′ ( 0 ) = 0 \begin{cases} \begin{aligned} &\frac{d^2 u}{dt^2} + \frac{R}{L} * \frac{du}{dt} + \frac{1}{LC}*u = 0\\ &u(0) = U_0\\ &u'(0)= 0 \end{aligned} \end{cases} dt2d2u+LRdtdu+LC1u=0u(0)=U0u(0)=0

α = R / 2 L \alpha = R/2L α=R/2L ω02 = 1 / L C \omega_0^2=1/LC ω02=1/LC,在零输入响应 us = 0 u_s=0 us=0 时上式可以写成:

{ d 2 u d t 2 + 2 α d u d t + ω 0 2 u = 0 u ( 0 ) = U 0 u ′ ( 0 ) = 0 \begin{cases} \begin{aligned} &\frac{d^2 u}{dt^2} + 2 \alpha \frac{du}{dt} + \omega_0^2 u = 0\\ &u(0) = U_0\\ &u'(0)= 0 \end{aligned} \end{cases} dt2d2u+2αdtdu+ω02u=0u(0)=U0u(0)=0
对二阶微分方程问题,引入变量 v = du / dt v = {du}/{dt} v=du/dt,通过变量替换就把原方程化为如下的微分方程组:

{ d u d t = v d v d t = − 2 α v − ω 0 2 u u ( 0 ) = U 0 v ( 0 ) = 0 \begin{cases} \begin{aligned} &\frac{du}{dt} = v \\ &\frac{dv}{dt} = -2\alpha v - \omega_0^2 u\\ &u(0)=U_0\\ &v(0)=0 \end{aligned} \end{cases} dtdu=vdtdv=2αvω02uu(0)=U0v(0)=0

这样就可以用上节求解微分方程组的方法来求解高阶微分方程问题。


3.2 二阶微分方程问题的编程步骤

以RLC 振荡电路为例讲解 scipy.integrate.odeint() 求解高阶常微分方程初值问题的步骤:

  1. 导入 scipy、numpy、matplotlib 包;

  2. 定义导数函数 deriv(Y, t, a, w)

    注意 odeint() 函数中定义导数函数的标准形式是 f ( y , t ) f(y,t) f(y,t) ,本问题中 y 表示向量,记为 Y = [ u , v ] Y=[u,v] Y=[u,v]

    导数定义函数 deriv(Y, t, a, w) 编程如下,其中 a, w 分别表示方程中的参数 α 、 ω \alpha、\omega αω

# 导数函数,求 Y=[u,v] 点的导数 dY/dtdef deriv(Y, t, a, w):    u, v = Y  # Y=[u,v]    dY_dt = [v, -2*a*v-w*w*u]    return dY_dt
  1. 定义初值 Y 0 = [ u 0 , v 0 ] Y_0=[u_0,v_0] Y0=[u0,v0] Y Y Y 的定义区间 [ t 0 ,   t ] [t_0,\ t] [t0, t]

  2. 调用 odeint() 求 Y = [ u , v ] Y=[u,v] Y=[u,v] 在定义区间 [ t 0 ,   t ] [t_0,\ t] [t0, t] 的数值解。

    例程中通过 args=paras 将参数 (a,w) 传递给导数函数 deriv(Y, t, a, w) 。本例要考察不同参数对结果的影响,这种参数传递方法使用非常方便。


3.3 二阶微分方程问题 Python 例程

# 3. 求解二阶微分方程初值问题(scipy.integrate.odeint)# Second ODE by scipy.integrate.odeintfrom scipy.integrate import odeint  # 导入 scipy.integrate 模块import numpy as npimport matplotlib.pyplot as plt# 导数函数,求 Y=[u,v] 点的导数 dY/dtdef deriv(Y, t, a, w):    u, v = Y  # Y=[u,v]    dY_dt = [v, -2*a*v-w*w*u]    return dY_dtt = np.arange(0, 20, 0.01)  # 创建时间点 (start,stop,step)# 设置导数函数中的参数 (a, w)paras1 = (1, 0.6)  # 过阻尼:a^2 - w^2 > 0paras2 = (1, 1)  # 临界阻尼:a^2 - w^2 = 0paras3 = (0.3, 1)  # 欠阻尼:a^2 - w^2 < 0# 调用ode对进行求解, 用两个不同的初始值 W1、W2 分别求解Y0 = (1.0, 0.0)  # 定义初值为 Y0=[u0,v0]Y1 = odeint(deriv, Y0, t, args=paras1)  # args 设置导数函数的参数Y2 = odeint(deriv, Y0, t, args=paras2)  # args 设置导数函数的参数Y3 = odeint(deriv, Y0, t, args=paras3)  # args 设置导数函数的参数# W2 = (0.0, 1.01, 0.0)  # 定义初值为 W2# track2 = odeint(lorenz, W2, t, args=paras)  # 通过 paras 传递导数函数的参数# 绘图plt.plot(t, Y1[:, 0], 'r-', label='u1(t)')plt.plot(t, Y2[:, 0], 'b-', label='u2(t)')plt.plot(t, Y3[:, 0], 'g-', label='u3(t)')plt.plot(t, Y1[:, 1], 'r:', label='v1(t)')plt.plot(t, Y2[:, 1], 'b:', label='v2(t)')plt.plot(t, Y3[:, 1], 'g:', label='v3(t)')plt.axis([0, 20, -0.8, 1.2])plt.legend(loc='best')plt.title("Second ODE by scipy.integrate.odeint")plt.show()

3.4 二阶方程问题 Python 例程运行结果

在这里插入图片描述

结果讨论:

RLC串联电路是典型的二阶系统,在零输入条件下根据 α \alpha α ω \omega ω 的关系,电路的输出响应存在四种情况:

  1. 过阻尼: α 2 − ω 2 >0 \alpha^2 - \omega^2>0 α2ω2>0 ,有 2 个不相等的负实数根;
  2. 临界阻尼: α 2 − ω 2 =0 \alpha^2 - \omega^2 = 0 α2ω2=0,有 2 个相等的负实数根;
  3. 欠阻尼: α 2 − ω 2 <0 \alpha^2 - \omega^2 <0 α2ω2<0,有一对共轭复数根;
  4. 无阻尼: R=0 R=0 R=0,有一对纯虚根。

例程中所选择的 3 组参数分别对应过阻尼、临界阻尼和欠阻尼的条件,微分方程的数值结果很好地体现了不同情况的相应曲线。


4. 参考文献

[1]赖锦涛. 基于波浪能发电阵列的最优功率调度弹性控制的研究[D].深圳大学,2020.

[2]张增宝. 振荡浮子式波浪能发电系统捕能功率预测与多目标优化[D].山东大学,2020.

[3]王淑婧. 振荡浮子式波浪能发电装置的设计及功率计算分析[D].中国海洋大学,2013.

来源地址:https://blog.csdn.net/youcans/article/details/126827616

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

A7.2022年全国数学建模竞赛A题-波浪能最大输出功率设计-赛题分析与讨论

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录