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…

Python 类class的用法详解

Python 是一门支持面向对象编程的语言&#xff0c;类&#xff08;class&#xff09;是面向对象编程的基本概念之一。通过类&#xff0c;我们可以封装数据和方法&#xff0c;实现代码的模块化、可重用和可维护。本文将详细介绍 Python 中类的用法&#xff0c;包括类的定义、继承…

Graph Clustering和Community Detection(附代码) 图谱

本次我们聚焦算法的部分。这篇论文的算法之所以效果高于其他组别,核心思想就在于:1)从多个角度加权计算了用户之间的相似度;2)根据两两之间的相似度进行了Graph Clustering。最终的效果就是有相同偏好的用户被聚在了同一组,那么既然大家兴趣类似,你喜欢的自然大概率也是…

【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;兼容性最好&…

组件封装有哪些注意事项—面试常问优美回答

组件封装有哪些注意事项—面试常问优美回答 关键点及回答建议与代码案例 组件设计原则 关键点&#xff1a;高内聚低耦合、接口清晰、职责单一。回答建议&#xff1a; “在设计组件时&#xff0c;我遵循高内聚低耦合的原则&#xff0c;确保组件内部逻辑紧密相关&#xff0c;同…

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

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

Python自动化-操作Excel

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

神经生物学精解【2】

文章目录 神经系统动物神经系统概述一、神经系统的基本组成二、神经系统的分类三、神经系统的功能四、神经系统的特殊能力 中枢神经系统组成一、中枢神经系统的构成1. 脑2. 脊髓 二、各部分功能、性质1. 大脑2. 间脑3. 小脑4. 脑干5. 脊髓 三、例题 神经系统可塑性一、定义与概…

猿大师办公助手在线编辑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…

SQL Server全方位指南:从入门到高级详解

本文将分为三大部分&#xff0c;逐步深入SQL Server的基础知识、进阶技巧和高级特性&#xff0c;旨在帮助从初学者到经验丰富的开发人员深入理解和使用SQL Server。 一、入门篇 1.1 什么是SQL Server&#xff1f; SQL Server 是由微软开发的关系型数据库管理系统&#xff08…

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

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

ClickHouse在AI领域的结合应用

文章目录 引言1.1 人工智能与大数据的融合1.2 ClickHouse在大数据平台中的地位2.1 BI与AI的融合从传统BI到智能BIAI赋能BI融合的优势实际应用案例 2.2 异构数据处理的重要性数据多样性的挑战异构数据处理的需求技术实现实际应用案例 2.3 向量检索与AIOps技术向量检索的背景AIOp…