Python 机器学习求解 PDE 学习项目——PINN 求解一维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络(PINN)求解一维 Poisson 方程:

− Δ u = f in  Ω , u = 0 on  Γ : = ∂ Ω . \begin{align} -\Delta u &= f \quad & \text{in } \Omega,\\ u & =0 \quad & \text{on } \Gamma:=\partial \Omega. \end{align} Δuu=f=0in Ω,on Γ:=Ω.
其中 Ω = [ X a , X b ] \Omega = [X_a,X_b] Ω=[Xa,Xb] 是一段区间,一维情况 Δ u = u x x \Delta u = u_{xx} Δu=uxx.

在这里插入图片描述

完整代码及其注释如下:

import tensorflow as tf
#print(tf.__version__)
import numpy as np  
import math
# def is_log2_close_to_int(n, eps=1e-9):  
#     log_n = math.log2(n)  
#     return math.isclose(math.fmod(log_n, 1), 0, abs_tol=eps)  
  


# 定义Exact类,用于计算精确解  
class Exact:  
    def __init__(self, xa, xb):  
        # 初始化类,接受两个参数xa和xb,代表区间的两个端点  
        self.xa = xa  # 区间左端点  
        self.xb = xb  # 区间右端点  
  
    def u_exact(self, X):  
        # 计算并返回精确解u(X)  
        # 这里使用正弦函数作为精确解,其频率与区间长度(xb-xa)有关  
        u = np.sin(2*np.pi*X / (self.xb - self.xa))  
        return u  
  
  
# 定义Dataset类,用于生成数据  
class Dataset:  
    def __init__(self, x_range, N_res, N_b, xa, xb):  
        # 初始化类,接受多个参数  
        self.x_range = x_range  # 区间范围,例如[0, 1]  
        self.N_res = N_res      # 内部节点数,用于构建内部网格  
        self.N_b = N_b          # 边界条件点数(通常这里N_b为2,因为有两个边界)  
        self.xa = xa            # 区间左端点  
        self.xb = xb            # 区间右端点  
  
    def bc(self, X_b):  
        # 计算并返回边界条件上的精确解  
        # 创建一个Exact对象,用于计算精确解  
        U_bc = Exact(self.xa, self.xb)  
        u_bc = U_bc.u_exact(X_b)  # 计算边界条件X_b上的精确解  
        return u_bc  
  
    def build_data(self):  
        # 构建并返回数据集,包括内部网格点、边界网格点和区间端点  
        x0 = self.x_range[0]  # 区间左端点  
        x1 = self.x_range[1]  # 区间右端点  
  
        # 区间端点(最小值和最大值)  
        Xmin = np.array
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值