网站怎么做落款南京小程序设计制作

张小明 2026/1/8 3:22:37
网站怎么做落款,南京小程序设计制作,海珠建网站多少钱,大美工设计网站官网PINN静电场问题建模求解—平行金属板间电场 PINN 基础理论与最简示例#xff08;含Python代码#xff09;中介绍了最基础的微分方程的求解#xff0c;下面我们聚焦电磁场问题实际求解一下看看。 这个问题已经在Maxwell和C中求解过了#xff0c;可以看我之前的博客#x…PINN静电场问题建模求解—平行金属板间电场PINN 基础理论与最简示例含Python代码中介绍了最基础的微分方程的求解下面我们聚焦电磁场问题实际求解一下看看。这个问题已经在Maxwell和C中求解过了可以看我之前的博客平行金属板间电场在Maxwell中的求解和MFEMGMSH静电场问题建模求解—平行金属板间电场。下面我们看看如何在PINN中求解这个问题。目录PINN静电场问题建模求解---平行金属板间电场0、问题定义1、PINN求解1.1、明确方程与边界1.2、PINN 训练流程解析1.2.1、优化器与学习率调度1.2.2、物理常数与泊松方程常数项1.2.3、PDE 残差点在内部点上强制满足泊松方程1.2.4、边界条件损失两端点上强制电压为 1 V 和 0 V1.2.5、总损失PDE 边界 的加权和2、结果分析3、全部代码0、问题定义定义的问题如下左边金属平行板电压为1 V 1V1V右侧为0 V 0V0V中间填充物质介电常数为1 11电荷密度为1 0 − 8 C / m 2 {10^{ - 8}}C/{m^2}10−8C/m2。求解平行板之间的电压分布1、PINN求解1.1、明确方程与边界我们要求解以下一维泊松方程d 2 V ( x ) d x 2 − ρ v ϵ 0 ϵ r \frac{d^2 V(x)}{dx^2} -\frac{\rho_v}{\epsilon_0 \epsilon_r}dx2d2V(x)​−ϵ0​ϵr​ρv​​边界条件为V ( 0 ) 1 V , V ( d ) 0 V V(0) 1 \,\text{V}, \qquad V(d) 0 \,\text{V}V(0)1V,V(d)0V其中参数为电荷密度ρ v − 1 × 1 0 − 8 C/m 2 \rho_v -1 \times 10^{-8}\ \text{C/m}^2ρv​−1×10−8C/m2板间距d 0.08 m d 0.08\ \text{m}d0.08m相对介电常数ϵ r 1 \epsilon_r 1ϵr​1真空介电常数ϵ 0 8.854 × 1 0 − 12 F/m \epsilon_0 8.854 \times 10^{-12}\ \text{F/m}ϵ0​8.854×10−12F/m很好这样分段贴代码确实更适合写博客那我就按你给的结构把这一节整理一版「可直接放博客」的版本语气尽量教程风不啰嗦。1.2、PINN 训练流程解析接下来这段训练函数就是把上面的泊松方程和边界条件“翻译”成 loss然后用神经网络去拟合的全过程。1.2.1、优化器与学习率调度一开始先构建优化器和学习率调度器使用 Adam 作为优化器对model里全部参数做更新使用ReduceLROnPlateau当损失长时间降不下去时自动把学习率乘一个系数这里是 0.8。这个调度器的作用是前期用稍大的学习率快速下降后期当 loss 平稳时自动“刹车”避免在极小值附近乱跳。optimizeroptim.Adam(model.parameters(),lrlr)schedulertorch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,min,patience1000,factor0.8)# 自适应调整学习率1.2.2、物理常数与泊松方程常数项# 电荷密度和介电常数rho_v1e-8# 电荷密度 (C/m^2)epsilon_08.854e-12# 真空介电常数 (F/m)epsilon_r1# 填充物的相对介电常数# 计算泊松方程的常数项poisson_constant-rho_v/(epsilon_0*epsilon_r)# 计算常数项在训练函数里先把物理量写清楚电荷密度物理上是负的ρ v − 1 × 1 0 − 8 C/m 2 \rho_v -1\times 10^{-8}\ \text{C/m}^2ρv​−1×10−8C/m2代码中是通过rho_v 1e-8和poisson_constant -rho_v / (epsilon_0 * epsilon_r)这两个符号叠加来实现“带负号”的效果。真空介电常数ϵ 0 8.854 × 1 0 − 12 F/m \epsilon_0 8.854\times 10^{-12}\ \text{F/m}ϵ0​8.854×10−12F/m相对介电常数ϵ r 1 \epsilon_r 1ϵr​1目标 PDE 写成d 2 V ( x ) d x 2 − ρ v ϵ 0 ϵ r \frac{d^2 V(x)}{dx^2} -\frac{\rho_v}{\epsilon_0 \epsilon_r}dx2d2V(x)​−ϵ0​ϵr​ρv​​对应到代码里我们构造poisson_constant − ρ v ϵ 0 ϵ r \text{poisson\_constant} -\frac{\rho_v}{\epsilon_0 \epsilon_r}poisson_constant−ϵ0​ϵr​ρv​​后面在残差中使用u x x ( x ) poisson_constant ≈ 0 u_{xx}(x) \text{poisson\_constant} \approx 0uxx​(x)poisson_constant≈0也就是u x x ( x ) ≈ − poisson_constant ρ v ϵ 0 ϵ r u_{xx}(x) \approx -\text{poisson\_constant} \frac{\rho_v}{\epsilon_0 \epsilon_r}uxx​(x)≈−poisson_constantϵ0​ϵr​ρv​​和原始泊松方程是一致的注意这里的符号关系。1.2.3、PDE 残差点在内部点上强制满足泊松方程在每个 epoch 里首先会在区间 ([0,d]) 上随机采样一批内部点x_rtorch.rand(n_residual,1,requires_gradTrue)*0.08# 0~0.08mu_rmodel(x_r)这一步等价于从区间[ 0 , 0.08 ] [0, 0.08][0,0.08]随机取n_residual个点对应物理上的板间空间requires_gradTrue是为了后面能对x_r求导u_r model(x_r)就是网络给出的电势预测u θ ( x r ) ≈ V ( x r ) u_\theta(x_r) \approx V(x_r)uθ​(xr​)≈V(xr​)接着使用自动微分计算一阶、二阶导数u_xtorch.autograd.grad(outputsu_r,inputsx_r,grad_outputstorch.ones_like(u_r),create_graphTrue)[0]u_xxtorch.autograd.grad(outputsu_x,inputsx_r,grad_outputstorch.ones_like(u_x),create_graphTrue)[0]对应数学上一阶导u x d u θ d x u_x \frac{du_\theta}{dx}ux​dxduθ​​再求导得到二阶导u x x d 2 u θ d x 2 u_{xx} \frac{d^2 u_\theta}{dx^2}uxx​dx2d2uθ​​create_graphTrue的作用是保留计算图允许继续对梯度再求梯度即二阶导。然后构造 PDE 残差residualu_xxpoisson_constant loss_pdetorch.mean(residual**2)残差在数学上就是residual ( x ) u x x ( x ) poisson_constant \text{residual}(x) u_{xx}(x) \text{poisson\_constant}residual(x)uxx​(x)poisson_constant在所有内部点上做均方平均L PDE 1 N r ∑ i 1 N r ( residual ( x i ) ) 2 L_{\text{PDE}} \frac{1}{N_r} \sum_{i1}^{N_r} \left( \text{residual}(x_i) \right)^2LPDE​Nr​1​i1∑Nr​​(residual(xi​))2这就是PDE 残差 loss用来在整个区域内强制网络满足泊松方程。1.2.4、边界条件损失两端点上强制电压为 1 V 和 0 V然后是边界条件部分。根据题目要求左端板V ( 0 ) 1 V V(0) 1\ \text{V}V(0)1V右端板V ( d ) 0 V V(d) 0\ \text{V}V(d)0V代码中直接把边界点写死为x_bctorch.tensor([[0.0],[0.08]])# 边界点0 和 0.08mu_bcmodel(x_bc)target_bctorch.tensor([[1.0],[0.0]])# 目标边界值1V 和 0V用网络计算这两个点上的预测电压u θ ( 0 ) u_\theta(0)uθ​(0)、u θ ( d ) u_\theta(d)uθ​(d)再和真实值做 MSEloss_bctorch.mean((u_bc-target_bc)**2)*10先算出原始的边界 MSEL ~ ∗ BC 1 2 ( ( u ∗ θ ( 0 ) − 1 ) 2 ( u θ ( d ) − 0 ) 2 ) \tilde{L}*{\text{BC}} \frac{1}{2} \Big( \big(u*\theta(0) - 1\big)^2 \big(u_\theta(d) - 0\big)^2 \Big)L~∗BC21​((u∗θ(0)−1)2(uθ​(d)−0)2)然后乘以 10 相当于给边界条件一个放大的权重。后面在总损失里你又乘了 500相当于L BC 5000 ⋅ L ~ BC L_{\text{BC}} 5000 \cdot \tilde{L}_{\text{BC}}LBC​5000⋅L~BC​这样做的目的很直接不管 PDE 残差怎么折腾边界条件必须被牢牢“钉死”。1.2.5、总损失PDE 边界 的加权和有了 PDE 残差和边界条件两部分损失之后真正用来反向传播的是它们的加权和lossloss_pdeloss_bc*500loss.backward()optimizer.step()scheduler.step(loss)抽象一点写L L PDE λ BC L BC L L_{\text{PDE}} \lambda_{\text{BC}} L_{\text{BC}}LLPDE​λBC​LBC​在你的实现中λ BC \lambda_{\text{BC}}λBC​实际上非常大约 5000所以优化器会特别用力地把边界条件压到几乎没有误差同时尽量在内部满足 PDE。配合loss.backward()对总损失求梯度optimizer.step()按梯度更新网络参数scheduler.step(loss)根据最近一段时间 loss 的变化情况自动调整学习率整个训练过程不断重复这个循环网络就会学出一个函数u θ ( x ) u_\theta(x)uθ​(x)使得在内部点上d 2 u θ ( x ) d x 2 ≈ − ρ v ϵ 0 ϵ r \dfrac{d^2 u_\theta(x)}{dx^2} \approx -\dfrac{\rho_v}{\epsilon_0 \epsilon_r}dx2d2uθ​(x)​≈−ϵ0​ϵr​ρv​​在边界点上u θ ( 0 ) ≈ 1 , u θ ( d ) ≈ 0 u_\theta(0) \approx 1,\quad u_\theta(d) \approx 0uθ​(0)≈1,uθ​(d)≈0也就是我们想要的平行板间电压分布的近似解。2、结果分析最最最重要的是要调整方程和边界的误差权重不然不会收敛就是下面式子里面的λ \lambdaλL L PDE λ BC L BC L L_{\text{PDE}} \lambda_{\text{BC}} L_{\text{BC}}LLPDE​λBC​LBC​结果和平行金属板间电场在Maxwell中的求解和MFEMGMSH静电场问题建模求解—平行金属板间电场的一致3、全部代码importtorchimporttorch.nnasnnimporttorch.optimasoptimimportmathimportmatplotlib.pyplotasplt# 固定随机种子方便复现torch.manual_seed(0)# 定义 PINN 网络classPINN(nn.Module):def__init__(self,hidden_dim100,num_layers5):super().__init__()layers[]input_dim1output_dim1# 输入层layers.append(nn.Linear(input_dim,hidden_dim))layers.append(nn.Tanh())# 隐藏层for_inrange(num_layers-1):layers.append(nn.Linear(hidden_dim,hidden_dim))layers.append(nn.Tanh())# 输出层layers.append(nn.Linear(hidden_dim,output_dim))self.netnn.Sequential(*layers)defforward(self,x):returnself.net(x)# 定义训练函数deftrain(model,num_epochs10000,n_residual200,n_bc2,lr1e-4):optimizeroptim.Adam(model.parameters(),lrlr)schedulertorch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,min,patience1000,factor0.8)# 自适应调整学习率loss_history[]# 电荷密度和介电常数rho_v1e-8# 电荷密度 (C/m^2)epsilon_08.854e-12# 真空介电常数 (F/m)epsilon_r1# 填充物的相对介电常数# 计算泊松方程的常数项poisson_constant-rho_v/(epsilon_0*epsilon_r)# 计算常数项# 训练过程forepochinrange(num_epochs):optimizer.zero_grad()# 1. PDE 残差点内部点x_rtorch.rand(n_residual,1,requires_gradTrue)*0.08# 在0到8cm之间随机采样u_rmodel(x_r)# 计算 u_x 和 u_xxu_xtorch.autograd.grad(outputsu_r,inputsx_r,grad_outputstorch.ones_like(u_r),create_graphTrue)[0]u_xxtorch.autograd.grad(outputsu_x,inputsx_r,grad_outputstorch.ones_like(u_x),create_graphTrue)[0]# 计算 PDE 残差residualu_xxpoisson_constant# 使用正确的电荷密度loss_pdetorch.mean(residual**2)# 2. 边界条件x0 和 xdx_bctorch.tensor([[0.0],[0.08]])# 边界点0 和 8cmu_bcmodel(x_bc)target_bctorch.tensor([[1.0],[0.0]])# 边界条件1V 和 0V# 增加边界条件权重loss_bctorch.mean((u_bc-target_bc)**2)*10# 增加边界条件损失的权重# 总损失lossloss_pdeloss_bc*500loss.backward()optimizer.step()# 记录损失loss_history.append(loss.item())# 每 500 次打印一次if(epoch1)%5000:print(fEpoch{epoch1}/{num_epochs}| Loss:{loss.item():.4e})if(epoch1)%num_epochs0:print(fEnd)# 更新学习率scheduler.step(loss)returnloss_history# 模型初始化modelPINN(hidden_dim50,num_layers5)# 训练模型loss_historytrain(model,num_epochs10000)# 绘制训练损失曲线plt.plot(loss_history)plt.yscale(log)plt.xlabel(Epoch)plt.ylabel(Loss)plt.title(Training Loss History)plt.show()# 测试并绘制结果withtorch.no_grad():x_testtorch.linspace(0,0.08,100).view(-1,1)u_predmodel(x_test)# 绘制电势分布plt.plot(x_test.numpy(),u_pred.numpy(),labelPINN prediction)plt.xlabel(x (cm))plt.ylabel(Voltage (V))plt.title(Voltage Distribution between Plates)plt.grid(True)plt.legend()plt.show()
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

最新装修风格2021图片青岛seo推广公司

Origin数据分析软件与EmotiVoice语音结果可视化联动方案 在科研实验室的深夜,一位研究人员正盯着屏幕上密密麻麻的数据曲线。他已经连续分析了十几组实验数据,眼睛干涩、注意力下降——而最关键的结果可能就藏在某个不起眼的峰值里。如果这时系统能“开…

张小明 2026/1/8 16:56:24 网站建设

怎么做网站的浏览量建一个外贸网站多少钱

TrollInstallerX 是一款专为 iOS 14.0 至 16.6.1 系统设计的全能 TrollStore 安装工具,以其卓越的可靠性和用户友好性著称。无论您是技术新手还是资深玩家,都能通过本指南快速掌握这款神器的安装和使用技巧。 【免费下载链接】TrollInstallerX A TrollSt…

张小明 2026/1/6 17:26:57 网站建设

深圳论坛网站设计哪家公司好google app engine wordpress

Linly-Talker:当AI数字人点燃体育赛事解说的激情 在一场关键的足球决赛中,第89分钟,主队球员突入禁区、一脚劲射破门!全场沸腾。就在进球发生的瞬间,直播画面中一位神情激昂的虚拟解说员猛然站起,挥拳呐喊&…

张小明 2026/1/8 14:53:00 网站建设

视频网站是如何做的怎么查询域名

2025轻量AI革命:Gemma 3 270M如何用240MB内存重塑终端智能格局 【免费下载链接】gemma-3-270m-it-qat 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/gemma-3-270m-it-qat 导语 谷歌DeepMind推出的Gemma 3 270M模型以2.7亿参数、240MB内存占用的极…

张小明 2026/1/8 23:30:36 网站建设

做自己的网站挣钱公司网站如何做优化

OpenStack网络负载均衡与高级网络功能详解 1. 负载均衡服务(LBaaS)基础 负载均衡服务(LBaaS)为用户提供了通过Neutron API以编程方式扩展应用程序的能力。用户可以将流量均衡到由多个应用服务器组成的池,并通过智能健康监视器确保应用的高可用性。LBaaS v2 API甚至支持SS…

张小明 2026/1/6 17:20:52 网站建设

广州品牌型网站江门网站建设公司哪家好

UI-TARS:字节跳动开源的GUI智能体,重新定义界面自动化交互 【免费下载链接】UI-TARS-7B-DPO 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/UI-TARS-7B-DPO 导语 字节跳动开源的UI-TARS多模态模型,通过视觉语言模型与…

张小明 2026/1/6 17:16:45 网站建设