Python气象辐射光谱能量平衡模型

🎯要点

  1. 根据温室模型,计算不同情景下辐射通量和评估能量平衡,构建复杂温室模型计算
  2. 计算和绘图大气、海洋、陆地表面和海冰复合模型数据
  3. 建立简单能量平衡情景模型,并根据模型计算释放温度和时滞,计算并绘制地面辐射和吸收光谱
  4. 计算和模拟非散射辐射传输,求解史瓦西微分方程
    在这里插入图片描述
    在这里插入图片描述

🍇Python微分方程

如果因变量具有恒定的变化率:
d y d t = C \frac{d y}{d t}=C dtdy=C
其中 C C C 是某个常数,您可以在 f f f 函数中提供微分方程,然后使用以下代码使用此模型计算答案。该代码假设 0 和 10 之间有 100 个均匀间隔的时间, y y y 的初始值为 6 ,变化率为 1.2 :

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotterdef f(t, y, c):dydt = [c[0]]return dydttspan = np.linspace(0, 10, 100)
yinit = [6]
c = [1.2]sol = solve_ivp(lambda t, y: f(t, y, c), [tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)state_plotter(sol.t, sol.y, 1)

如果因变量的变化率是时间的函数,则可以轻松编码。例如,如果微分方程是某个二次函数,如下所示:
d y d t = α t 2 + β t + γ \frac{d y}{d t}=\alpha t^2+\beta t+\gamma dtdy=αt2+βt+γ
您可以使用此模型通过以下代码计算答案,假设 y y y 的初始值 0 到 4 之间有 20 个均匀间隔的时间 𝑦 是 6,多项式由向量 [2, -6, 3] 定义:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotterdef f(t, y, c):dydt = np.polyval(c, t)return dydttspan = np.linspace(0, 4, 20)
yinit = [6]
c = [2, -6, 3]sol = solve_ivp(lambda t, y: f(t, y, c), [tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)state_plotter(sol.t, sol.y, 1)

对于增长型,变化率取决于数量以及一些比例常数:
d y d t = C ⋅ y \frac{d y}{d t}=C \cdot y dtdy=Cy
其中 C C C 又是某个常数。以下代码将计算上述模型的 3 秒内 25 个点的增长量,初始为 10,比例常数为 1.02:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotterdef f(t, y, c):dydt = [c[0] * y[0]]return dydttspan = np.linspace(0, 3, 25)
yinit = [10]
c = [1.02]sol = solve_ivp(lambda t, y: f(t, y, c), [tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)state_plotter(sol.t, sol.y, 1)

通过确保微分函数返回每个变量的值,可以解决多变量系统。例如,在以下系统中,第一个变量的变化率仅取决于时间,而第二个变量则取决于时间和第一个变量:
d y 0 d t = α cos ⁡ ( β t ) d y 1 d t = γ y 0 + δ t \frac{d y_0}{d t}=\alpha \cos (\beta t) \quad \frac{d y_1}{d t}=\gamma y_0+\delta t dtdy0=αcos(βt)dtdy1=γy0+δt
该系统的微分函数 f 将有一个 2 元素列表作为输出。另外,如果您的系统具有多个因变量,请务必将初始条件放入列表中。例如,系统定义为:
d y 0 d t = 4 cos ⁡ ( 3 t ) d y 1 d t = − 2 y 0 + 0.5 t \frac{d y_0}{d t}=4 \cos (3 t) \quad \frac{d y_1}{d t}=-2 y_0+0.5 t dtdy0=4cos(3t)dtdy1=2y0+0.5t
您可以使用以下脚本来求解 y 0 y_0 y0 y 1 y_1 y1;代码假设 y 0 y_0 y0 从 0 开始, y 1 y_1 y1 从 -3 开始

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotterdef f(t, y, c):dydt = [c[0]*np.cos(c[1]*t), c[2]*y[0]+c[3]*t]return dydttspan = np.linspace(0, 5, 100)
yinit = [0, -3]
c = [4, 3, -2, 0.5]sol = solve_ivp(lambda t, y: f(t, y, c), [tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)state_plotter(sol.t, sol.y, 1)

系统必须仅以一阶微分方程的形式来写出。要求解具有高阶导数的系统,您首先要编写一个简单的一阶方程级联系统,然后在微分函数中使用它们。例如,假设您有一个以恒定抖动为特征的系统:
j = d 3 y d t 3 = C j=\frac{d^3 y}{d t^3}=C j=dt3d3y=C
首先要做的是写出三个一阶微分方程来表示三阶方程:
y 0 = y d y 0 d t = d y d t = y 1 ⟶ d y 0 d t = y 1 d y 1 d t = d 2 y 0 d t 2 = d 2 y d t 2 = y 2 ⟶ d y 1 d t = y 2 d y 2 d t = d 2 y 1 d t 2 = d 3 y 0 d t 3 = d 3 y d t 3 = j = C ⟶ d y 2 d t = C \begin{aligned} & y_0=y \\ & \frac{d y_0}{d t}=\frac{d y}{d t}=y_1 \quad \longrightarrow \quad \frac{d y_0}{d t}=y_1 \\ & \frac{d y_1}{d t}=\frac{d^2 y_0}{d t^2}=\frac{d^2 y}{d t^2}=y_2 \quad \longrightarrow \quad \frac{d y_1}{d t}=y_2 \\ & \frac{d y_2}{d t}=\frac{d^2 y_1}{d t^2}=\frac{d^3 y_0}{d t^3}=\frac{d^3 y}{d t^3}=j=C \quad \longrightarrow \quad \frac{d y_2}{d t}=C \end{aligned} y0=ydtdy0=dtdy=y1dtdy0=y1dtdy1=dt2d2y0=dt2d2y=y2dtdy1=y2dtdy2=dt2d2y1=dt3d3y0=dt3d3y=j=Cdtdy2=C
请注意导数如何级联,以便现在可以将恒定加加速度方程写为一组三个一阶方程。请注意,在该系统中, y [ 0 ] y[0] y[0] 表示位置, y [ 1 ] y[1] y[1] 表示速度, y [ 2 ] y[2] y[2] 表示加速度。这种类型的级联系统在运动方程建模时经常出现。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotterdef f(t, y, c):dydt = [y[1], y[2], c[0]]return dydttspan = np.linspace(0, 8, 50)
yinit = [6, 2, -4]
c = [1.3]sol = solve_ivp(lambda t, y: f(t, y, c), [tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)state_plotter(sol.t, sol.y, 1)

👉参阅、更新:计算思维 | 亚图跨际

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT】系统-下

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻QTheadrun() 👉🏻QMutex👉🏻QWaitCondition👉🏻Q…

洛汗2游戏辅助攻略:VMOS云手机带你体会游戏新体验!自动搬砖辅助攻略!

在《洛汗2》游戏中,使用VMOS云手机能极大地提升你的游戏体验。VMOS云手机提供《洛汗2》专属定制版的云手机,内置游戏安装包,玩家不需要再次下载安装游戏,这大大简化了游戏的启动过程。最棒的是,它支持免费的辅助工具运…

音乐项目,总结

今天的写的思路都挺简单的但是比较繁琐&#xff0c;这个查找&#xff0c;传文件的话可以了&#xff0c;但是没有用分片传送&#xff0c;然后在写音乐播放的处理&#xff0c;<歌单&#xff0c;二级评论&#xff0c;歌曲歌词滚轮播放>三个还没有实现&#xff0c;时间挺紧张…

Kafka3.8.0+Centos7.9的安装参考

Kafka3.8.0Centos7.9的安装参考 环境准备 操作系统版本&#xff1a;centos7.9 用户/密码&#xff1a;root/1qazXSW 主机名 IP地址 安装软件 下载地址 k1 192.168.207.131 jdk1.8zookeeper3.9.2kafka_2.13-3.8.0efak-web-3.0.1 1&#xff09; Java Downloads | Oracle …

Java代码调用https(SSL证书验证问题)

Java代码调用https接口SSL证书验证问题 现有一个https接口&#xff0c;如下 Test public void test1() {String url "https://iservericloudhx.yndk.cn:32613/iserver/services/map-mongodb-C_YGYX_530000_2022/wms111/C_YGYX_530000_2022";RestTemplate restTemp…

Docker 里面按照ifconfig

1. 进入Docker 容器内部 docker exec -it xxx bash2. 安装 net-tools iputils-ping apt-get update && apt-get install -y net-tools apt-get update && apt-get install -y iputils-ping 3. 执行ifconfig 执行ping

[Linux]Vi和Vim编辑器

Vi和Vim编辑器 Linux系统会内置vi文本编辑器, 类似于windows中的记事本 Vim具有程序编辑的能力, 可以看作是Vi的增强版本, 可以进行语法检查, 代码补全,代码编译和错误调整等功能 Vi和Vim的模式 快速入门 使用vim开发一个Hello.java程序 通过Xshell连接Linux系统命令行输入…

【Qt | QAction】Qt 的 QAction 类介绍

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

【Taro】初识 Taro

笔记来源&#xff1a;编程导航。 概述 Taro 官方文档&#xff1a;https://taro-docs.jd.com/docs/ &#xff08;跨端开发框架&#xff09; Taro 官方框架兼容的组件库&#xff1a; taro-ui&#xff1a;https://taro-ui.jd.com/#/ &#xff08;最推荐&#xff0c;兼容性最好&…

7.搭建个人金融数据库之快速获取股票列表和基本信息!

前边我们提过&#xff0c;免费的数据一般来自于爬虫&#xff0c;获取难度和维护成本都比较高&#xff0c;其实不太适合小白用户。所以非必要情况下&#xff0c;我们尽量不用这种方式来获取数据。 我自己用的比较多的是tushare&#xff0c;一般来说有它也就够了&#xff0c;大…

Python自动化-操作Excel

在数据处理和报表生成过程中&#xff0c;Excel是一个经常使用的工具。Python中的openpyxl库可以让您通过编程方式读取、写入和操作Excel文件&#xff0c;从而实现自动化的数据处理和报表生成。本文将介绍openpyxl库的基本用法和常见操作&#xff0c;帮助您快速上手使用Python处…

猿大师办公助手在线编辑Office为什么要在客户端电脑安装插件微软Office或金山WPS?

猿大师办公助手作为一款专业级的网页编辑Office方案&#xff0c;与在线云文档方案&#xff08;飞书、腾讯文档等&#xff09;不同&#xff0c;需要在客户端电脑安装猿大师办公助手插件及微软Office或者金山WPS软件&#xff0c;很多客户不理解为什么要这么麻烦&#xff0c;能否客…

Android RecyclerView 实现 GridView ,并实现点击效果及方向位置的显示

效果图 一、引入 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30 二、使用步骤 1.Adapter public class UnAdapter extends BaseQuickAdapter<UnBean.ResultBean, BaseViewHolder> {private int selectedPosition RecyclerView.NO_POSITIO…

VMWare虚拟机安装CentOS-7-x86_64-DVD-1611操作系统

VMWare虚拟机安装CentOS7操作系统 1、虚拟机准备打开VMware单机创建新的虚拟机典型与自定义安装选择虚拟机硬件兼容性选择安装程序光盘映射文件(iso)选择客户机操作系统命名虚拟机处理器配置内存配置网络连接类型I/O类型选择磁盘类型选择磁盘指定磁盘的最大磁盘大小磁盘名称我们…

SpringBoot权限认证-Sa-Token的使用与详解

本文详细介绍了Sa-Token在Java项目中的使用方法&#xff0c;包括Sa-Token的基本概念、与其他权限框架的比较、基本语法和高级用法&#xff0c;并通过实例讲解了如何在项目中集成和使用Sa-Token。作为一款轻量级Java权限认证框架&#xff0c;Sa-Token在简化权限管理、提高开发效…

战神5/战神:诸神黄昏/God of War Ragnarok(容量175GB)百度网盘下载

版本介绍 v1.0.612.4312|容量175GB|官方简体中文|支持键盘.鼠标.手柄|赠单板学习补丁 配置要求 战神5/战神&#xff1a;诸神黄昏/God of War Ragnarok 游戏介绍 不灭的北欧传奇 由Santa Monica Studio出品、Jetpack Interactive负责PC移植的佳作《God of War Ragnark》将带您…

【原创】java+swing+mysql仓库管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片&#xff0c;希望和大家…

SpringBootWeb响应

2. 响应 前面我们学习过HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09; 那么Controller程序呢&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 2.1 ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了…

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…

对接阿里asr和Azure asr

1&#xff1a;对接阿里asr 1.1&#xff1a;pom <dependency><groupId>com.alibaba.nls</groupId><artifactId>nls-sdk-recognizer</artifactId><version>2.2.1</version> </dependency>1.2&#xff1a;生成token package c…