大气科学:数值模拟理论与方法导论

版权申诉
0 下载量 29 浏览量 更新于2024-07-02 收藏 3.36MB PDF 举报
"大气数值模拟理论与方法课件:lec01_Introduction.pdf" 这篇课件主要探讨了大气数值模拟的基本概念、重要性以及核心方程。大气数值模拟是气象学和气候学研究中的关键技术,它通过数学模型来预测和解释大气现象。 1.1 重要性 of Models 在大气科学中,模型扮演着至关重要的角色,因为观测数据有限且不连续,而理论往往过于简化。模型结合了动力学、物理学和化学原理,以数值方式解决复杂的气象方程。这使得科学家能够预测天气系统的行为,如台风、飑线等极端天气事件,并理解大气湍流和热对流等现象。 1.2 什么是 Model 一个大气模型包含动力学、方程、数值方法、数据库、代码、观测参数化、数据同化以及评估和展示。动力学描述了大气运动的基本规律;方程组包括质量、动量和能量守恒定律;数值方法用于将这些连续方程离散化并求解;数据库用于存储观测数据;代码是实现模型计算的程序;观测参数化处理小尺度过程;数据同化则整合观测数据以改进模型预报。 1.3 方程组 大气动力学的基本方程组包括: - 质量守恒(连续性方程):描述气体流动的连续性,确保没有物质的净损失或增加。 - 动量方程:描述风速在不同方向上的变化,受重力、科里奥利力、压力梯度力等作用。 - 能量方程(热力学方程):涉及温度、内能和潜热的变化,以及地表辐射和对流的能量交换。 这些方程在实际应用中需要考虑理想气体定律和其他物理过程的参数化,例如湍流、边界层效应和云微物理过程。 课程还展示了中山大学大气科学学院的实例,如飑线入侵广州的数值模拟和热对流的大涡模拟,这表明大气数值模拟在具体气象事件研究中的实用性。此外,课件还提及了模型的评估和呈现,这是确保模型预测准确性和可靠性的关键步骤。 通过这门课程,学生可以深入理解大气数值模拟的基础理论,学习如何构建和应用这些模型,以提高天气预报的精度和对气候变化的理解。同时,了解模型的局限性和不确定性也是至关重要的,因为这有助于推动模型的持续改进和发展。
2023-07-10 上传

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.preprocessing import OneHotEncoder,LabelEncoder from sklearn.model_selection import cross_val_score from sklearn.model_selection import GridSearchCV df = pd.read_csv('mafs(1).csv') df.head() man = df['Gender']=='M' woman = df['Gender']=='F' data = pd.DataFrame() data['couple'] = df.Couple.unique() data['location'] = df.Location.values[::2] data['man_name'] = df.Name[man].values data['woman_name'] = df.Name[woman].values data['man_occupation'] = df.Occupation[man].values data['woman_occupaiton'] = df.Occupation[woman].values data['man_age'] = df.Age[man].values data['woman_age'] = df.Age[woman].values data['man_decision'] = df.Decision[man].values data['woman_decision']=df.Decision[woman].values data['status'] = df.Status.values[::2] data.head() data.to_csv('./data.csv') data = pd.read_csv('./data.csv',index_col=0) data.head() enc = OneHotEncoder() matrix = enc.fit_transform(data['location'].values.reshape(-1,1)).toarray() feature_labels = enc.categories_ loc = pd.DataFrame(data=matrix,columns=feature_labels) data_new=data[['man_age','woman_age','man_decision','woman_decision','status']] data_new.head() lec=LabelEncoder() for label in ['man_decision','woman_decision','status']: data_new[label] = lec.fit_transform(data_new[label]) data_final = pd.concat([loc,data_new],axis=1) data_final.head() X = data_final.drop(columns=['status']) Y = data_final.status X_train,X_test,Y_train,Y_test=train_test_split(X,Y,train_size=0.7,shuffle=True) rfc = RandomForestClassifier(n_estimators=20,max_depth=2) param_grid = [ {'n_estimators': [3, 10, 30,60,100], 'max_features': [2, 4, 6, 8], 'max_depth':[2,4,6,8,10]}, ] grid_search = GridSearchCV(rfc, param_grid, cv=9) grid_search.fit(X, Y) print(grid_search.best_score_) #最好的参数 print(grid_search.best_params_)

2023-05-10 上传
2023-02-06 上传