节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文提出了节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现,无需任何滤波器或限幅器。本公式旨在向CFD从业者介绍该方法,因此它意味着可读性而不是非常有效的实施。

该方法的基本思想是将平流方程离散化为一维节点不连续伽辽金方程,然后使用迭代方法求解该方程。

在一维情况下,平流方程可以写为:

∂u/∂t + c ∂u/∂x = 0

其中,u是要求解的变量,t是时间,x是空间坐标,c是平流速度。

为了将平流方程离散化为节点不连续伽辽金方程,我们首先将时间和空间离散化为有限的网格点。然后,我们使用中心差分方法来近似平流方程中的导数项。具体来说,我们使用以下公式来近似时间导数和空间导数:

∂u/∂t ≈ (u_i^n+1 - u_i^n) / Δt

∂u/∂x ≈ (u_i+1^n - u_i-1^n) / (2Δx)

其中,u_i^n表示在第n个时间步长和第i个空间节点处的变量值,Δt是时间步长,Δx是空间步长。

将这些近似代入平流方程,我们得到节点不连续伽辽金方程:

(u_i^n+1 - u_i^n) / Δt + c (u_i+1^n - u_i-1^n) / (2Δx) = 0

为了求解该方程,我们使用迭代方法,如迭代法或牛顿法。迭代方法的基本思想是将方程转化为一个求根问题,并通过迭代逼近根的解。

总之,节点不连续伽辽金方法是一种求解线性和非线性平流方程的一维实现方法,它不需要滤波器或限幅器。然而,由于其可读性和实施的简单性,它可能不是非常高效的方法。

📚2 运行结果

节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现),matlab,算法,机器学习

部分代码:

% Build 1d mesh
xgrid = mesh1d([0 2*pi],nE,'LGL',K);
dx = xgrid.elementSize; J = xgrid.Jacobian; 
x = xgrid.nodeCoordinates; w = xgrid.weights';
xc = xgrid.elementCenter;

% Load DG tools
tool = DGtools(xgrid.solutionPoints);
V = tool.Vandermonde2; 
invM = tool.nodalInvMassMatrix;
Dr = tool.nodalCoefDiffMatrix;

% Build Lift Operator
Emat = zeros(K+1,2); % array of element's shape function
Emat(1,1)=1; Emat(K+1,2)=1;
Lift = V*(V'*Emat);

% IC
u0 = IC(x,2);

% Set plot range
plotrange = [xgrid.range(1),xgrid.range(2),...
    min(min(min(0.9*u0)),min(min(1.1*u0))),1.1*max(max(u0))];

%% Solver Loop

% Set initial time & load IC
t=0; u=u0; it=0;

% Using a 3rd Order 3-stage SSPRK time integration
while t < tEnd
    uo = u;
    
    % update time
    dt = cfl*dx/max(max(abs(dflux(u)))); t = t+dt;
    
    % iteration counter
    it = it+1; 
           
    % 1st stage
    dF = residual(u,flux,dflux,Lift,Dr);
    u = uo-dt*dF/J;

    % 2nd Stage
    dF = residual(u,flux,dflux,Lift,Dr); 
    u = 0.75*uo+0.25*(u-dt*dF/J);

    % 3rd stage
    dF = residual(u,flux,dflux,Lift,Dr); 
    u = (uo+2*(u-dt*dF/J))/3;
    
    % build cell averages
    u_bar = w*u/2;
    
    % Plot u
    subplot(1,2,1); plot(x,u,x,u0,'-+'); axis(plotrange); grid off; 
    subplot(1,2,2); plot(xc,u_bar,'ro'); axis(plotrange); grid off; 
    
    %if rem(it,10) == 0
        drawnow;
    %end
end
%% Final Plot for IC 2
subplot(1,2,1); plot(x,u,x,u0,'-+'); axis(plotrange);
title('Nodal DG','interpreter','latex','FontSize',18);
xlabel('$\it{x}$','interpreter','latex','FontSize',14);
ylabel({'$\it{u(x)}$'},'interpreter','latex','FontSize',14);
subplot(1,2,2); plot(x,u0,'k-',xc,u_bar,'ro'); axis(plotrange);
title('Cell Averages','interpreter','latex','FontSize',18);
xlabel('$\it{x}$','interpreter','latex','FontSize',14);
ylabel({'$\it{u(x)}$'},'interpreter','latex','FontSize',14);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]陈长胜,纪立人,陈嘉滨,等.JFNK方法在求解全隐式一维非线性平流方程中的应用[J].大气科学, 2007, 31(5):10.DOI:10.3878/j.issn.1006-9895.2007.05.19.

[2]赵晓旭.勒让德-伽辽金法求解两类非线性积分微分方程[D].哈尔滨师范大学[2023-08-11].

[3]王俊.时域不连续伽辽金法在计算电磁学中的应用[D].西安电子科技大学,2015.DOI:10.7666/d.D01068543.文章来源地址https://www.toymoban.com/news/detail-657043.html

🌈4 Matlab代码实现

到了这里,关于节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法系列】非线性最小二乘求解-梯度下降法

    ·【算法系列】卡尔曼滤波算法 ·【算法系列】非线性最小二乘求解-直接求解法 ·【算法系列】非线性最小二乘求解-梯度下降法 ·【算法系列】非线性最小二乘-高斯牛顿法  ·【算法系列】非线性最小二乘-列文伯格马夸尔和狗腿算法  文章目录 系列文章 文章目录 前言 一、

    2024年02月16日
    浏览(33)
  • 【数学建模】Python+Gurobi求解非线性规划模型

    目录 1 概述 2 算例  2.1 算例 2.2 参数设置 2.3 Python代码实现 2.4 求解结果 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。 参考:(非线性规划Python)计及动态约束及节能减排环保要求的经济调度 2.1 算例 2.2 参数设置 求解NLP/非凸问题时,

    2024年02月09日
    浏览(35)
  • matlab实现牛顿迭代法求解非线性方程

    非线性方程是指含有未知数的方程,且方程中至少有一个未知数的次数大于一或者含有非一次幂的函数(如指数、对数、三角函数等)。例如,$f(x) = x^3 - 2x - 5 = 0$就是一个非线性方程。非线性方程通常没有显式的解析解,因此需要使用数值方法来近似求解。 牛顿迭代法(N

    2024年02月11日
    浏览(39)
  • 详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题

       本文中将详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题,结合给出的带约束的最优化问题示例,给出相应的完整的C++程序,并给出详细的解释和注释,以及编译规则等    一、Ipopt库的安装和测试    本部分内容在之前的文章《Ubuntu20.04安装Ipopt的流程介

    2024年02月08日
    浏览(45)
  • 【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 本文的

    2024年02月14日
    浏览(35)
  • 二次规划(QP)求解与序列二次规划(SQP)求解非线性规划问题

    二次规划(QP)是求解一种特殊的数学优化问题的过程——具体地说,是一个(线性约束)二次优化问题,即优化(最小化或最大化)多个变量的二次函数,并服从于这些变量的线性约束。二次规划是一种特殊的非线性规划。        序列二次规划(SQP,Sequental Quadratic Programming)算法是

    2024年02月02日
    浏览(31)
  • MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

    非线性方程的求根方法很多,常用的有牛顿迭代法,但该方法需要求原方程的导数,而在实际运算中这一条件有时 是不能满足的,所以又出现了弦截法、二分法等其他方法。 在 MATLAB 中,非线性方程的求解和最优化问题往往需要调用最优化工具箱来解决。优化工具箱提供了一

    2024年02月08日
    浏览(39)
  • 牛顿(Newton)迭代法求解非线性方程以及方程组的Matlab实现

    必做题目比较简单,写得有些随意,主要还是第二个拓展题目的难度比较高 传入题设数据有: 另附运行截图  

    2024年02月11日
    浏览(32)
  • 线性系统与非线性系统、定常系统和时变系统、连续系统和离散系统、单输入单输出系统与多输入多输出系统(自动控制原理)

    目录 线性系统与非线性系统 线性系统 线性系统 定常系统和时变系统 定常系统 时变系统 连续系统和离散系统 连续系统 离散系统 单输入单输出系统与多输入多输出系统 单输入单输出系统 多输入多输出系统(多变量系统)         组成系统元器件的特性均为线性的,可用一

    2024年02月09日
    浏览(31)
  • 6自由度并联机器人 运动学算法 正解 逆解6个耦合的非线性方程组求解

    6自由度并联机器人 运动学算法   正解  逆解 6个耦合的非线性方程组求解 正解快速收敛可用在机器人控制中 已实际使用 6自由度并联机器人运动学算法及其在机器人控制中的应用 随着社会科技的不断发展,机器人技术在工业自动化和服务业中的应用越来越广泛。其中,高自

    2024年04月28日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包