2022全國大學生數學建模A題的思路與解法
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 =跟單網gendan5.com 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()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2918877/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2018全國大學生數學建模競賽論文釋出
- 2017年高教社杯全國大學生數學建模競賽題目-A題 CT系統引數標定及成像
- 2020年數學建模國賽B題解題思路
- 2020“數維杯”國際大學生數學建模競賽賽題分析
- 數學建模習題3.3
- 數學建模習題6.4
- 數學建模習題3.2
- 數學建模習題7.3
- 數學建模習題8.4
- 數學建模習題7.7
- 數學建模習題7.10
- 數學建模
- 2017年美國大學生數學建模競賽C題優秀論文解讀
- 數學建模例題2.27 陣列元素的索引示例陣列索引
- 數學建模例題2.17 匯入模組示例
- 數學建模作業
- Python小白的數學建模課-07 選址問題Python
- 數學建模例題2.19sorted()使用示例
- 數學建模例題2.25 陣列生成示例1陣列
- 數學建模例題2.28 矩陣合併示例矩陣
- 數學建模例題例 2.29 矩陣分割示例矩陣
- Python小白的數學建模課-06 固定費用問題Python
- 數學建模例題例 2.21 map()函式使用示例函式
- 數學建模例題例 2.24 zip()函式使用示例函式
- 數學建模例題2.23 過濾重複值
- 數學建模例題2.30 矩陣元素求和示例矩陣
- 數學建模例題2.20 enumerate()函式使用示例函式
- 數學建模例題例 2.22 filter()函式使用示例Filter函式
- 數學建模例題例 2.26 陣列生成示例2陣列
- 2017年全國大學生資訊保安競賽-填數遊戲遊戲
- 遊戲數學建模工程手冊遊戲
- [全程建模]UML設計類中的實現與方法數量問題
- 專案管理的三角難題與解法(轉)專案管理
- topK問題解法TopK
- Python小白的數學建模課-19.網路流優化問題Python優化
- [轉載]2016美國數學建模MCM F題(政策)翻譯:難民移入政策建模
- LeetCode 連結串列專題 19 刪除倒數第n個數 java 遞迴解法 幾乎雙百 思路簡單LeetCodeJava遞迴
- 2024年中國研究生數學建模競賽D題