python gamma分布飞机作业前中后

news/2024/10/5 13:28:18

数据:

 目标做雨滴谱gamma分布,作业中、作业后1h、作业后2h

代码如下:

#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: Suyue
@file: raincontent.py
@time: 2024/05/23
@desc:
"""
import numpy as np
import pandas as pd
import xlwt
import math
from scipy.special import gamma
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
matplotlib.rc("font",family='YouYuan')df1 = pd.read_excel('数据.xlsx')N_ing = df1['作业中']
N_aft1 = df1['作业后1h']
N_aft2 = df1['作业后2h']
d = df1['直径']
# 直径平方,2可以理解为2阶矩
d_2 = pow(d,2)
# 直径3次方,3可以理解为3阶矩
d_3 = pow(d,3)
# 直径4次方,4可以理解为4阶矩
d_4 = pow(d,4)delta_d = df1['变化直径']
# 计算2阶矩
D2_ing = N_ing*d_2*delta_d
D2_aft1 = N_aft1*d_2*delta_d
D2_aft2 = N_aft2*d_2*delta_ddf2_ing = pd.DataFrame(D2_ing)
df2_aft1 = pd.DataFrame(D2_aft1)
df2_aft2 = pd.DataFrame(D2_aft2)D_sum_2_ing = df2_ing.sum()
D_sum_2_aft1 = df2_aft1.sum()
D_sum_2_aft2 = df2_aft2.sum()# 计算3阶矩
D3_ing = N_ing*d_3*delta_d
D3_aft1 = N_aft1*d_3*delta_d
D3_aft2 = N_aft2*d_3*delta_ddf3_ing = pd.DataFrame(D3_ing)
df3_aft1 = pd.DataFrame(D3_aft1)
df3_aft2 = pd.DataFrame(D3_aft2)D_sum_3_ing = df3_ing.sum()
D_sum_3_aft1 = df3_aft1.sum()
D_sum_3_aft2 = df3_aft2.sum()# 计算4阶矩
D4_ing = N_ing*d_4*delta_d
D4_aft1 = N_aft1*d_4*delta_d
D4_aft2 = N_aft2*d_4*delta_ddf4_ing = pd.DataFrame(D4_ing)
df4_aft1 = pd.DataFrame(D4_aft1)
df4_aft2 = pd.DataFrame(D4_aft2)D_sum_4_ing = df4_ing.sum()
D_sum_4_aft1 = df4_aft1.sum()
D_sum_4_aft2 = df4_aft2.sum()# 求μ
u_ing = (3*D_sum_4_ing*D_sum_2_ing-4*D_sum_3_ing*D_sum_3_ing)/(D_sum_3_ing*D_sum_3_ing-D_sum_4_ing*D_sum_2_ing)
u_aft1 = (3*D_sum_4_aft1*D_sum_2_aft1-4*D_sum_3_aft1*D_sum_3_aft1)/(D_sum_3_aft1*D_sum_3_aft1-D_sum_4_aft1*D_sum_2_aft1)
u_aft2 = (3*D_sum_4_aft2*D_sum_2_aft2-4*D_sum_3_aft2*D_sum_3_aft2)/(D_sum_3_aft2*D_sum_3_aft2-D_sum_4_aft2*D_sum_2_aft2)# 计算雨水含量W
pi = math.pi
p = 1
W_ing = (pi*p*D_sum_3_ing)/(6000)
W_aft1 = (pi*p*D_sum_3_aft1)/(6000)
W_aft2 = (pi*p*D_sum_3_aft2)/(6000)# 计算雨滴的质量加权平均直径Dm
Dm_ing = D_sum_4_ing/D_sum_3_ing
Dm_aft1 = D_sum_4_aft1/D_sum_3_aft1
Dm_aft2 = D_sum_4_aft2/D_sum_3_aft2# 计算斜率参数Lambda
Lam_ing = (D_sum_3_ing*(u_ing+4))/D_sum_4_ing
Lam_aft1 = (D_sum_3_aft1*(u_aft1+4))/D_sum_4_aft1
Lam_aft2 = (D_sum_3_aft2*(u_aft2+4))/D_sum_4_aft2# 计算截距N0
N0_ing = (D_sum_2_ing*pow(Lam_ing,u_ing+3))/gamma(u_ing+3)
N0_aft1 = (D_sum_2_aft1*pow(Lam_aft1,u_aft1+3))/gamma(u_aft1+3)
N0_aft2 = (D_sum_2_aft2*pow(Lam_aft2,u_aft2+3))/gamma(u_aft2+3)# 输出形状因子u,截距N0和斜率参数L
# print(u_aft2,N0_aft2,Lam_aft2)# 建立雨滴谱gamma分布
# 建立x的值,生成从0.3到8的值,步长为0.01
x = np.arange(0.3,8,0.01)
# 得把u,N0,Lam变成array才能进行加减乘除计算
x1_ing = np.array(x)
x1_aft1 = np.array(x)
x1_aft2 = np.array(x)La_ing = np.array(Lam_ing)
La_aft1 = np.array(Lam_aft1)
La_aft2 = np.array(Lam_aft2)N_0_ing = np.array(N0_ing)
N_0_aft1 = np.array(N0_aft1)
N_0_aft2 = np.array(N0_aft2)u1_ing = np.array(u_ing)
u1_aft1 = np.array(u_aft1)
u1_aft2 = np.array(u_aft2)eLx_ing = np.exp(-La_ing*x1_ing)
eLx_aft1 = np.exp(-La_aft1*x1_aft1)
eLx_aft2 = np.exp(-La_aft2*x1_aft2)x1_u_ing = np.power(x1_ing,u1_ing)
x1_u_aft1 = np.power(x1_aft1,u1_aft1)
x1_u_aft2 = np.power(x1_aft2,u1_aft2)r_ing = np.multiply(x1_u_ing,eLx_ing)
r_aft1 = np.multiply(x1_u_aft1,eLx_aft1)
r_aft2 = np.multiply(x1_u_aft2,eLx_aft2)y_ing = np.multiply(N_0_ing,r_ing)
y_aft1 = np.multiply(N_0_aft1,r_aft1)
y_aft2 = np.multiply(N_0_aft2,r_aft2)
# print(y_aft2)# 绘制折线图
plt.plot(x1_ing, y_ing, ls="-", alpha=0.5, linewidth=1, label='abc')
plt.plot(x1_aft1, y_aft1, ls="-", alpha=0.5, linewidth=1, label='abc')
plt.plot(x1_aft2, y_aft2, ls="-", alpha=0.5, linewidth=1, label='abc')# 设置X轴刻度间隔和标签旋转角度
plt.xlim(0,9)plt.legend
plt.xlabel('直径')
plt.ylabel('数浓度')
plt.legend(['作业中','作业后1h','作业后2h'])plt.show()

结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44140.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

国产2米高分遥感数据超分辨率(到0.5米)

​国产2米数据,包括高分一号PMS,高分六号PMS等等,应该是使用最为广泛的光学遥感数据了,主要是因为这几种数据幅宽大,组网访问频次也高,因此在全国各个自然资源、交通、水利等单位是应用最为广泛的数据源。但是这个数据有一个很大的缺陷,就是2米分辨率用来看一般的地物基…

Python 调整PDF页面尺寸大小

在处理PDF文件时,我们可能会遇到这样的情况:原始PDF文档不符合我们的阅读习惯,或者需要适配不同显示设备等。这时,我们就需要及时调整PDF文档中的页面尺寸,以满足不同应用场景的需求。 利用Python语言的高效性和灵活性,再结合Spire.PDF for Python 库的强大功能,我们可以…

redis集群报错

数据不一致, 通过./redis-cli --cluster check 10.12.120.19:7001 -a 123456 解决了.无聊我就学英语

腾讯云CVM主机在原分区(主分区)上增加磁盘空间

#现有环境: vdb 1000G- vdb1 500G - 剩余500G需要加在vdb1上# 1、安装- yum install -y cloud-utils-growpart- 一般系统都自带# 2、执行以下命令,使用 growpart 工具扩容分区- growpart /dev/vdb 1 # 1 表示是第一个分区:vdb1- 返回结果如下 图-1所示,则表示…

【Linux驱动设备开发详解】14.Linux网络设备架构

1.Linux网络设备驱动的结构 与字符设备和块设备不同,网络设备并不对应于/dev目录下的文件,应用程序最终使用套接字完成与网络设备的接口。 Linux系统对网络设备驱动定义了4个层次,这4个层次为:网络协议接口层:向网络层协议提供同一的数据包收发接口,无论是IP还是ARP,都是…

振动电阻式传感器测量模块的传感器接口

振动电阻式传感器测量模块的传感器接口 RM502模块采用了高精度模拟信号驱动和采集技术,能够驱动和测量对电阻精度要求较高的传感器。它采用恒流驱动和实时电流测量,有效避免了环境温度变化引起的测量误差。同时,它具有高精度差分AD转换和可编程增益放大功能,能够对小信号具…

微服务全链路追踪

随着现代应用微服务化,客户端的请求往往需要服务器端多个组件的协调工作。 事务的处理是由分布式的服务架构完成,在这个过程中,问题的定位变得较为困难,我们需要梳理组件之间的依赖,并准确定位到问题所在。 这时候我们需要借助一些手段实现问题的定位和跟踪。 通常的做法有…

C语言中的数据类型及其转换

目录计算机中的数据类型整型数据之间的转换相同字长之间的转换小字长转大字长大字长转小字长int、float、double之间的转换float->doubledouble->floatfloat/double->intint->floatint->double 计算机中的数据类型 计算机中的数据以二进制的形式存储在寄存器或存…