2023 年 亞太賽 APMCM ABC題 國際大學生數學建模挑戰賽 |數學建模完整代碼+建模過程全解全析

當大家面臨著復雜的數學建模問題時,你是否曾經感到茫然無措?作為2022年美國大學生數學建模比賽的O獎得主,我為大家提供了一套優秀的解題思路,讓你輕松應對各種難題。
在這里插入圖片描述
以五一杯 A題為例子,以下是咱們做的一些想法呀!
?

問題1:

(1)建立數學模型:

無人機投放模型在這個問題中的作用是建立數學模型來描述無人機投放爆炸物的過程,并且可以通過該模型來優化無人機投放的策略,從而提高命中率和效率。具體來說,該模型可以通過考慮無人機的飛行高度、飛行速度、俯沖角度、發射速度等因素來確定最佳的發射距離和發射時機,以確保物體能夠準確地命中目標。此外,該模型還可以考慮外部因素,如風速和風向等,來調整無人機的飛行軌跡和姿態,以提高投放精度和穩定性。

對于本題的模型,有:

其中 ρ 為空氣密度,S 為物資橫截面積, 為物資的阻力系數, g 為重力加速度,F 為無人機與物資之間的牽引力。

當無人機投放物資時,物資與無人機之間斷開連接,牽引力 F取0,上式可以化簡為:

其中為重力加速度。

(2)在無人機的飛行高度為 300m,飛行速度為 300km/h,風速為 5m/s,風向與水平面平行的情況下,使用代碼解決:

import

 math# 定義常量
v0 = 300      # 飛行速度,單位km/h
vw = 5        # 風速,單位m/s
h = 300       # 飛行高度,單位m
r = 0.2       # 球形物資半徑,單位m
m = 50        # 球形物資質量,單位kg
g = 9.8       # 重力加速度,單位m/s^2# 計算投放距離
d0 = v0**2/g * math.sin(0*2*math.pi/360) + vw*v0/g * math.cos(0*2*math.pi/360)
d180 = v0**2/g * math.sin(180*2*math.pi/360) + vw*v0/g * math.cos(180*2*math.pi/360)
d90 = v0**2/g * math.sin(90*2*math.pi/360) + vw*v0/g * math.cos(90*2*math.pi/360)# 輸出結果
print(f"無人機飛行方向與風向相同時,投放距離為:{d0:.1f}m")
print(f"無人機飛行方向與風向相反時,投放距離為:{d180:.1f}m")

問題2:
假設無人機在水平飛行過程中到達距離目標點的水平距離為 x ,飛行高度為 ? ,飛行速度為v ,俯沖角度為 α ,發射速度為 u 。則無人機發射炸彈的軌跡可以分解為水平方向和豎直方向兩個分量。

在水平方向上,無人機在 秒到達目標點,發射炸彈的時間為 秒。發射炸彈時無人機的水平速度為vcos?α ,炸彈的水平初速度為 ucos?α。

在豎直方向上,炸彈自由落體運動,豎直初速度為 usin?α ,豎直加速度為g 。設炸彈飛行的時間為 秒,則有:

將 t3 的值代入到水平方向上的運動中,則可以求得無人機與目標點之間的距離 x1 :

假設無人機發射炸彈的距離為 d ,則需要滿足 1000≤d≤3000 。為了使無人機在發射炸彈時仍能保持安全的飛行高度,假設無人機的飛行高度為 800m ,則有 ?≥300m 。

為了使發射策略可行,需要選擇合適的俯沖角度 α 和發射速度u。假設 α 為定值,可以根據上述模型求出發射速度u與發射距離d的關系,并繪制出其圖像,如下圖所示。

由圖像可知,當俯沖角度為 30° 時,發射速度最小,約為 426.8m/s ,此時發射距離為d≈1716.2m

問題3:
無人機的飛行穩定性可以用無人機的俯仰角和偏航角的變化率來描述,即:

其中, θ表示俯仰角, 表示偏航角。這個數值越小,說明無人機的飛行越穩定。

無人機的命中精度可以用命中目標的距離來描述,與無人機的飛行穩定性呈反比關系,即:

在實際應用中,可以通過無人機的傳感器數據來計算無人機的俯仰角和偏航角的變化率,并根據上述公式來評估無人機的飛行穩定性和命中精度。

import numpy as np
import matplotlib.pyplot as pltdef dynamic_equation(x, u):# 狀態方程A = np.array([[1, 0, 0, dt, 0, 0],[0, 1, 0, 0, dt, 0],[0, 0, 1, 0, 0, dt],[0, 0, 0, 1-0.5*rho*Cd*S/m*dt, 0, 0],[0, 0, 0, 0, 1-0.5*rho*Cd*S/m*dt, 0],[0, 0, 0, 0, 0, 1-0.5*rho*Cd*S/m*dt]])# 輸入方程B = np.array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, -0.5*rho*S*vx0**2/m*dt],[0, 0, 0, -0.5*rho*S*vx0**2/m*dt],[0, 0, 0, -0.5*rho*S*vx0**2/m*dt]])# 狀態更新x_new = np.dot(A, x) + np.dot(B, u)return x_new# 定義無人機飛行過程的仿真函數
def simulate_flight(x0, u, t):# 初始化狀態和控制輸入x = x0u = u.reshape(-1, 1)# 初始化狀態列表和控制輸入列表x_list = [x]u_list = [u]# 循環仿真for i in range(len(t)):# 計算下一個狀態x = dynamic_equation(x, u)# 記錄狀態和控制輸入x_list.append(x)、、模糊處理 完整版看文章下面~u_list.append(u)# 將列表轉換為數組x_array = np.array(x_list)u_array = np.array(u_list)return x_array, u_array# 無人機和環境參數設置
h = 800  # 飛行高度,單位:m
v0 = 300  # 無人機飛行速度,單位:km/h
v = np.linspace(300, 400, 101) / 3.6  # 無人機相對地面速度,單位:m/s
vw = np.array([6, 0])  # 風速,單位:m/s
gamma = np.deg2rad(45)  # 俯沖角,單位:rad
g = 9.8  # 重力加速度,單位:m/s^2# 計算無人機穩定性
S = 2 * np.pi * (0.5 ** 2)  # 球形爆炸物的參考面積
Cd = 0.5  # 球形爆炸物的阻力系數
m = 50  # 球形爆炸物的質量,單位:kg
rho = 1.2  # 空氣密度,單位:kg/m^3
K = 0.5 * rho * S * Cd / m  # 阻力系數
u = np.sqrt(v ** 2 + (v0 * np.sin(gamma)) ** 2)  # 爆炸物相對空氣速度
D = K * u ** 2  # 阻力大小
H = h - np.sqrt((h ** 2) / (np.tan(gamma) ** 2 + 1))  # 爆炸物發射高度
t = (H - 300) / (v0 * np.cos(gamma))  # 爆炸物發射時間
x0 = v0 * t  # 無人機前進距離
x = x0 + (v + vw[0]) * t  # 爆炸物水平位移距離
y = H - (v0 * np.sin(gamma) + (g + vw[1]) * t) * t / 2  # 爆炸物垂直位移距離
delta_x = 20 / 2  # 爆炸物命中誤差,單位:cm
sigma = delta_x / 3  # 標準差
P = 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-(x - delta_x) ** 2 / (2 * sigma ** 2))  # 命中概率密度函數
hit_rate = np.trapz(P, x)  # 命中率# 可視化結果
plt.plot(v, P)
plt.xlabel('Horizontal displacement (m)')
plt.ylabel('Probability density')
plt.title('Hit probability density')
plt.show()print('The hit rate is %.2f%%.' % (hit_rate * 100))

cs數模團隊在亞太賽 APMCM前為大家提供了許多資料的內容呀!!
具體可以看看我的下方名片!里面包含有亞太賽一手資料與分析!
另外在賽中,我們也會陪大家一起解析亞太賽APMCM的一些方向
關注 CS數模 團隊,數模不迷路~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160498.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vue】自定義指令

自定義指令 自定義指令就是自己定義的指令,是對 DOM 元素進行底層操作封裝 ,程序化地控制 DOM,拓展額外的功能 全局定義 Vue.directive(指令名字, definition) 指令名:不包括v-前綴,使用時候包括v-,v-指令名defini…

CUTLASS 1.3.3中的 Volta884_h884gemm

CUTLASS 是 CUDA C 模板抽象的集合,用于在 CUDA 內的所有級別和規模上實現高性能矩陣-矩陣乘法 (GEMM) 和相關計算。它采用了類似于 cuBLAS 和 cuDNN 中實現的分層分解和數據移動策略。 CUTLASS 最新版本為3.3,相比1.3.3變動較大。然而重溫一下1.3.3仍然…

生產問題 Recv-Q101

生產上服務端口 Recv-Q101 新請求到服務器的失敗,幸好及時發現,通過重啟服務之后得到解決,具體原因等待排查 目前覺得的原因是:某些請求暫用時間比較久

Linux超簡單部署個人博客

1 安裝halo 1.1 切換到超級用戶 sudo -i 1.2 新建halo文件夾 mkdir ~/halo && cd ~/halo 1.3 編輯docker-compose.yml文件 vim ~/halo/docker-compose.yml 英文輸入法下,按 i version: "3"services:halo:image: halohub/halo:2.10container_…

2017年全國碩士研究生入學統一考試管理類專業學位聯考數學試題——解析版

文章目錄 2017 級考研管理類聯考數學真題解析一、問題求解(本大題共 5 小題,每小題 3 分,共 45 分)下列每題給出 5 個選項中,只有一個是符合要求的,請在答題卡上將所選擇的字母涂黑。真題(2017-…

Python 提高篇學習筆記(一):深拷貝和淺拷貝

文章目錄 一、什么是對象的引用二、深拷貝和淺拷貝2.1 淺拷貝(Shallow Copy)2.2 深拷貝(Deep Copy)2.3 copy.copy和copy.deepcopy的區別 一、什么是對象的引用 在 Python 中,對象的引用是指變量指向內存中某個對象的地址或標識符。當你創建一個新的對象(比如一個整…

[技術雜談]計算機系統硬件類名稱

在各種編程語言都可以見到利用WMI查詢計算機硬件信息,因此知道有哪些計算機硬件名稱非常有必要,下面列舉了所有計算機硬件名稱可以查詢。 本文內容 冷卻設備類輸入設備類大容量存儲類主板、控制器和端口類 顯示另外 6 個 計算機系統硬件類別將表示硬…

git修改遠程分支名稱

先拉取old_branch最新代碼到本地 git checkout old_branchgit pull origin old_branch本地修改后并推送 git branch -m old_branch new_branch # 修改分支名稱git push --delete origin old_branch # 刪除在遠程的老分支推送新分支 git push origin new_branch本地分支與遠…

除自身以外數組的乘積[中等]

優質博文:IT-BLOG-CN 一、題目 給你一個整數數組nums,返回數組answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘積。題目數據保證數組nums之中任意元素的全部前綴元素和后綴的乘積都在32位整數范圍內。請不要使用除法&#xff0…

【Qt開發流程】之富文本處理

描述 Scribe框架提供了一組類,用于讀取和操作結構化的富文本文檔。與Qt中以前的富文本支持不同,新的類集中在QTextDocument類上,而不是原始文本信息。這使開發者能夠創建和修改結構化的富文本文檔,而不必準備中間標記格式的內容。…

【數據結構】A : A DS圖_傳遞信息

A : A DS圖_傳遞信息 Description 小明在和他的小伙伴們玩傳消息游戲,游戲規則如下: 有n名玩家,所有玩家編號分別為0~n-1,其中小明編號為0;每個玩家都有固定的若干個可傳信息的其他玩家(也可能沒有)。傳消息的關系是…

busybox制作根文件系統2

上篇內容使用busybox制作好了根文件系統,接下來需要進行一些測試和功能的完善! 根文件系統的測試 測試根文件系統的時候不是直接燒寫到EMMC里面,這樣測試效率太低了,Ubuntu的rootfs目錄已經保存了根文件系統,只需要在…

向量數據庫,展望AGI時代

無論是向量數據庫,還是大模型,歸根結底,大家在追捧它時的心態,焦慮大于需求。 向量數據庫的熱潮,在一定程度上“外化”了人們的焦慮。 但這并不能否定向量數據庫的實際價值,甚至更長遠來看,向…

【C++】linux下的gdb程序調試

目錄 【C】Linux 下的 GDB 程序調試1. 安裝 GDB2. 編譯程序3. 啟動 GDB4. 設置斷點5. 執行程序6. 調試命令7. 調試崩潰8. 結束調試 【C】Linux 下的 GDB 程序調試 在開發 C 程序時,出現 bug 是常見的。調試是找出程序錯誤的關鍵步驟之一。在 Linux 環境下&#xff…

RedisTemplate使用詳解

RedisTemplate介紹StringRedisTemplate介紹RedisConnectionFactory介紹RedisConnectionFactory源碼解析 RedisOperations介紹RedisOperations源碼解析 RedisTemplate使用連接池配置RedisTemplate連接池連接池配置 RedisTemplate應用場景RedisTemplate主要特點RedisTemplate使用…

redis運維(十六) 有序集合

一 有序集合 把握一點: 各種redis 命令都提供各種語言對應的API 接口,后續API是關鍵 ① 概念 1、sorted set --> 有序集合2、redis有序集合也是集合類型的一部分,所以它保留了集合中元素不能重復的特性3、但是不同的是,有序集合給每個元素多設置…

什么是數字孿生?

數字孿生是指通過數字化技術手段,將現實世界中的實體物理系統或過程與其數字化模型相連接,實現實體物理系統或過程的虛擬仿真、監測、預測和優化等功能的一種技術。數字孿生技術可以將物理系統的運行狀態、性能參數、故障信息等實時反饋到數字模型中&…

轉型做視頻了,博客就是稿子,繼續堅持寫博客,同時發布視頻,能寫博客說明思路清晰了,能再講明白,理解就更透徹了,緊跟上時代發展。

1,今天特別記錄下,B站給開通了《合集》功能 最近使用視頻制作了幾個視頻。播放量還不錯,最好的已經到了 2.6K了。 然后粉絲也漲到了 200個。 添加鏈接描述 緊跟時代:從寫博客到錄視頻,粉絲大漲,突破200個&…

vue開發一、在Vue中引入ElementUI二、在Vue中使用阿里圖標庫

目錄 一、在Vue中引入ElementUI1. 安裝ElementUI2. 引入ElementUI3. 使用ElementUI組件 二、在Vue中使用阿里圖標庫1. 在阿里圖標庫中選擇圖標2. 下載圖標3. 引入圖標4. 使用圖標 總結 一、在Vue中引入ElementUI ElementUI是一種基于Vue的第三方UI庫,提供了許多常用…

接口自動化測試 —— 工具、請求與響應

一、工具: 1.工具介紹 postman :很主流的API測試工具,也是工作里面使用最廣泛的研發工具。 JMeter: ApiPost: 2.安裝postman: 安裝好直接打開,不用注冊。 二、通信模式: 1、…