首页 > 其他分享 >1 数值方法A 续

1 数值方法A 续

时间:2024-10-29 15:03:14浏览次数:2  
标签:frac cdot 数值 dx delta dT 方法 lambda

1 数值方法A 续

下一步是用中心差分法近似\(\frac{dT}{dx}\)。

首先,对温度函数\(T(x)\)用泰勒展开,其中由于2阶以上项计算复杂、对结果影响小,故忽略。

假设在节点之间温度线性变化。

\[T(x)=T(x_i)+(x-x_i)\frac{dT}{dx}|_{x_i}+\frac{(x-x_i)^2}2\frac{d^2T}{dT^2}|_{x_i} \]

\[T(x_{P})=T(x_{e})-(\delta x)_{e^{-}}\cdot(-\frac{dT}{dx})|_{x_{e}}+\frac{(\delta x)_{e^{-}}^2}{2}\cdot(\frac{d^2T}{dT^2})|_{x_{e}} \]

\[T(x_E)=T(x_e)-(\delta x)_{e^+}\cdot (\frac{dT}{dx})|_{x_e}+\frac{(\delta x)_{e^+}^2}2 \cdot(\frac{d^2T}{dT^2})|_{x_e} \]

令e为P、E中点,则有\((\delta x)_{e^-}=(\delta x)_{e^+}=\frac{1}{2} (\delta x)_e\),故:

\[\frac{dT}{dx}|_{x_e}=\frac{T(x_E)-T(x_P)}{(\delta x)_e} \]

回代入公式\((\lambda \frac{dT}{dx})_e-(\lambda \frac{dT}{dx})_w+\bar{S} \Delta x=0\)得:

\[(\lambda \frac{dT}{dx})_e=\lambda_e \cdot \frac{T_E-T_P}{(\delta x)_e} \]

\[(\lambda \frac{dT}{dx})_w=\lambda_w \cdot \frac{T_P-T_W}{(\delta x)_w} \]

另有:

\[\bar{S}=S_p \cdot T_P+S_c \]

把源项在控制体积内的均值\(\bar{S}\)线性化,其中\(S_P\)为线性系数(或斜率),\(S_c\)为常数项(或截距),二者均应当为常数。

那么,将我们得到的这三个公式组合起来,可以得到最终的线性化方程:

\[a_w T_w +a_p T_p+a_ET_E=b \]

其中,代表三个节点(当前控制节点左边一个、它本身、右边一个)的系数,以及右边一项b,分别是:

\[\quad a_W=-\frac{\lambda_w}{\delta x_w}\quad a_P=\frac{\lambda_w}{\delta x_w}+\frac{\lambda_e}{\delta x_e}-S_P\Delta x\quad a_E=-\frac{\lambda_e}{\delta x_e}\quad b=S_C\Delta x \]

注意,这个式子只能用于内部控制体积,不适用于边界节点。

对于边界条件:

  • 已知温度:(\(T(x=0)=T_a\text,~T(x=L)=T_b\))

    \[a_PT_P+a_ET_E=b,~a_P=1,~a_E=0,~b=T_a\\a_WT_W+a_PT_P=b,~a_P=1,~a_W=0,~b=T_b \]

  • 已知温度随空间变化的导数,描述热流边界条件:
    image如图,定义热通量\(q_B=-\lambda \frac{dT}{dx}\)。

    \[(\lambda\frac{dT}{dx})_i-\left(\lambda\frac{dT}{dx}\right)_B+\bar{S}\Delta x_B=0 \]

    这里可以把\(-\left(\lambda\frac{dT}{dx}\right)_B\)这一项用\(q_B\)代替,于是可推出最后的线性化方程:

    \[a_PT_P+a_ET_E=b,~a_P=\frac{\lambda_e}{\delta x_e}-S_p\Delta x_B,~a_E=-\frac{\lambda_e}{\delta x_e},~\mathrm{b}=S_p\Delta x_B+q_B \]

image

如图,最后得到了一个三对角矩阵。每个节点只影响其左侧一个和右侧一个节点。

求解线性方程组

判断解的稳定性
  • 解是否有边界?

  • 边界条件是否被遵守?

  • 结果如何与理论解或实验数据比较,以验证数值解的正确性?

  • 残差误差:

    \[R=\frac{|B-A\cdot T|}{|diag(A)\cdot T|}<tol \]

    其中,\(|B-A\cdot T|\)是残差,表示实际计算的结果\(A\cdot T\)与理论上应当得到的结果B之间的差;
    \(diag(A)\cdot T\)是矩阵A的对角线部分与T的乘积,用于对残差进行非量纲化,使得残差大小与系统的尺度保持一致。
    若R小于某个预设的容差tol,可认为解的精读是能接受的。

  • 能量平衡:能量守恒必须在每个控制体中保持。有时源项\(\bar{S}=0\),则控制体内的流入和流出热量\(q_w - q_e = 0\)。

  • 网格收敛性:若网格细化,节点间距减半,误差应减少4倍。这种收敛特性在已知精确解时表现最好,通常通过对数-对数图(log-log plot)来评估收敛行为。

直接求解:高斯消元法

对如下矩阵:

\[\begin{bmatrix}a_{1,1}&a_{1,2}&a_{1,3}&...&a_{1,n}\\a_{2,1}&a_{2,2}&a_{2,3}&...&a_{2,n}\\\vdots&\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&a_{n,3}&...&a_{n,n}\end{bmatrix}\times\begin{bmatrix}T_1\\T_2\\\vdots\\T_n\end{bmatrix}=\begin{bmatrix}b_1\\b_2\\\vdots\\b_n\end{bmatrix} \]

  1. 前向消元:将第i行减去第1行的某个倍数,使得\(a_{i,~1}=0\),这样就能消去除了\(a_{1,~1}\)以外,矩阵A第1列的所有数;
    重复直到矩阵A变成上三角矩阵。
    image

  2. 回代:从最后一行开始,最后一行相当于解:

    \[a_{n,~n}^{(N-1)}\cdot T_n = b_n^{(N-1)} \]

    倒数第2行相当于解:

    \[a_{n-1,n-1}^{(N-1)}T_{n-1}+a_{n-1,n}^{(N-1)}T_n=b_{n-1}^{(N-1)} \]

    最后得到的通项公式为:

    \[T_i=\frac{b_i^{(N-1)}-\sum_{k=i+1}^na_{i,k}^{(N-1)}T_k}{a_{i,i}^{(N-1)}} \]

迭代求解:高斯-赛德尔法

通项公式:

\[T_i^{(m)}=\frac{b_i}{a_{i,i}}-\sum_{j=1}^{i-1}\frac{a_{i,j}}{a_{i,i}}T_j^{(m)}-\sum_{j=i+1}^n\frac{a_{i,j}}{a_{i,i}}T_j^{(m-1)}\\ =\frac{1}{a_{i,~i}}(b_i-\sum_{j=1}^{i-1}a_{i,j}T_j^{(m)}-\sum_{j=i+1}^na_{i,j}T_j^{(m-1)}) \]

其中:

  • \(T_i^{(m)}\)表示第m次迭代中,第i个未知数的近似值;

  • \(T_j^{(m)}\)表示第m次迭代中,第j个未知数近似值,j<i时,这些值在本次迭代中已更新;

  • \(T_j^{(m-1)}\)表示第m次迭代中,第j个未知数近似值,j>i时,这些值在本次迭代中未更新;

  • \(a_{i,~i}\):矩阵A第i行i列元素;

  • \(b_i\):矩阵b第i行元素;

  • \[\sum_{j=1}^{i-1}a_{i,j}T_j^{(m)} \]

    这一项对在第i行中,i之前的未知数项求和(已迭代)

  • \[\sum_{j=i+1}^na_{i,j}T_j^{(m-1)} \]

    这一项对在第i行中,i之后的未知数项求和(未迭代)。

该法的物理意义为:通过\(b_i\)减掉加权求和,意为扣除已知部分,剩余未知数项的影响;除以\(a_{i,~i}\)则解出未知数。

标签:frac,cdot,数值,dx,delta,dT,方法,lambda
From: https://www.cnblogs.com/yukibvvd/p/18513261/1-numerical-method-a-continuation-n0s1t

相关文章

  • 1-1.2 数值方法B 续
    1-1.2数值方法B续求解非线性方程一般地,对一个方程求解,就是令\(f(x)=0\)。那么,解方程就意味着找到方程的根(root)。有很多求解非线性方程的方法,它们一般有两种分类;区间法/夹逼法:选择一个区间,该区间的两端函数值的符号相反,然后逐步缩小区间以逼近根。这种方法总能收敛,但收敛速......
  • 1-1 数值方法B
    1-1数值方法B非稳态扩散方程主体公式\[\frac{\partial(\rhoc_pT)}{\partialt}=\frac{\partial}{\partialx}\Big(\lambda\frac{\partialT}{\partialx}\Big)+S(x,t,T)\]该式左边为时间导数,表示某一点的能量随时间的变化;右边为空间变化,描述热在空间扩散的过程。其边界条......
  • 7.1 在区间[0,10]上等间距取1000个点Xi(i为下标,i=1,2,3,...,1000),并计算在这些点Xi处函
    importnumpyasnpimportscipy.interpolateasspiimportscipy.integrateasspi_integratedefg(x):return((3x**2+4x+6)*np.sin(x))/(x**2+8*x+6)x_values=np.linspace(0,10,1000)y_values=g(x_values)spline=spi.CubicSpline(x_values,y_v......
  • UE 设置高精度DEM的方法(UE中地形呈阶梯状的解决办法)
    使用UE创建地形,不可避免要使用dem作为地形,来创建数字孪生项目。可是,会碰到一个问题:使用png导入的地形,有明显的阶梯状,如下图所示:阶梯状DEM所以是什么原因呢?答:DEM数据本就如此。1、常规非涉密的DEM,是大于等于30米,也就是30米×30米的一个方形,变成一个值,还保留int类型,自然会有至少......
  • FPGA图像处理仿真:生成数据源的方法
    免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。读者在使用本文信息时,应自行验......
  • zblog获取tag列表函数GetTagList参数和使用方法介绍说明
    函数位置:zblogphp.php文件,大约2641行。函数参数:$select:数组,获取指定数据。$where:数组,数据获取限制规则。$order:数组,数据获取排序规则。$limit:数组,获取数据数量限制。$option:数组,附加限制选项,可用来获取指定范围内的数据。函数输出:输出一个数组。示例:{......
  • 强化学习的数学原理-05蒙特卡洛方法
    目录MCBasicMCExploringStartsMCEpsilon-GreedyMCBasic从\(model\:base\:\)的\(Reinforcement\:learning\:\)过渡到\(model\:free\:\)的\(\:Reinforcement\:learning\:\)最难以理解的是怎么在没有模型的情况下去估计一些量。这里面就有一个重要的\(\:idea......
  • 帝国CMS隔色换色列表页样式加分隔线实现方法
    隔行换色使用默认的列表循环代码,并在每个列表项中添加不同的样式类。[!--empirenews.listtemp--]<liclass="a"><!--list.var1--></li><li><!--list.var2--></li>[!--empirenews.listtemp--]设置每次显示的参数为2,以实现隔行换色。隔5行加分隔线在每5个列......
  • PyTorch 中常用的函数方法
    文章目录一、张量操作二、神经网络构建和训练三、其他常用函数和方法示例代码一、张量操作二、神经网络构建和训练三、其他常用函数和方法PyTorch是一个广泛使用的深度学习框架,它提供了丰富的函数和方法来处理张量、构建和训练神经网络。以下是一些PyTorch中常用的......
  • SAP-ABAP开发-按钮的三种调用方法
    1、自己创建调用在程序包中右击创建GUI状态,创建使用自己需要的按钮。注意的是,这里调用后会覆盖掉原来的系统的按钮。2、不覆盖系统的情况下加上自己创建的按钮并调用        右键GUI状态点击创建到界面后,点转到---》调整模板 。这里调整模板是指在系统基础上调整,......