学习如何使用Live Script来教授一个关于热扩散的综合故事,以及使用傅里叶分析在1-dim中热方程的瞬态解:
第一部分:热扩散(故事)
大家好,今天我将演示如何使用Live Script熟练地求解热方程。在Live Script中,您可以用一些文本描述问题,用代码实现解决方案,然后立即运行以获得输出。文本、代码和输出将共同创造一个引人注目的故事。我们从故事中学习。如果您需要快速回顾Live Scripts功能,请观看文本中链接的视频。
现在让我们深入我们的讲座。有什么问题吗?它是一根细棒上的热扩散。图像可以帮助立即可视化问题:给定时间为0时杆上的初始温度,并将边界保持在相同的固定温度,我们想要计算温度如何因杆上的热传导而随时间而变化
通过深入研究热溶液的结构,我们就能发现瞬态会指数衰减到稳定平衡。时间衰减很大程度上取决于材料的热行为。扩散率将扮演一个关键角色:这个性质描述了一种材料传递热量的姿态,而不会升温过快。所有部分都可以组织到一个汇总表中,允许上下滚动或快速跳转到下一个部分。
为了提供更多的背景知识,我们回顾一下傅立叶的关键发现。傅里叶分析是一个很棒的想法,它可以表示每个函数,即使有跳变,也可以表示为谐波的和。我们会看到如何计算杆的初始温度的傅里叶系数。请注意,任何方程都可以从插入选项卡中轻松添加,然后单击方程打开方程编辑器,在那里您可以选择许多符号:和,导数或积分。
傅里叶定律是热流速率与温度梯度的比例关系,其负号证实了热量总是不可逆地从热流向冷的普遍经验。热方程是傅里叶定律,热力学和能量守恒的惊人集中,其中扩散率作为关键参数出现,这是我们想一起解决的主要方程。
最后,我们有两个重要的比值需要强调:首先,D和k的关系。请不要混淆:电导率k只告诉我们传热速率,而扩散率D也考虑了传热过程中发生的温度变化。所以更大的扩散率需要更小的热容。另一个显著的比值是瞬态的时间衰减。所以当改变材料时,记住:扩散系数越大,时间衰减越小。这意味着瞬态衰变得更快。
到了练习的时候了,我们想要探索扩散率的真实数值。所以使用这个外部页面,我找到了不同材料的值,我把它们放在一个表格中,并保存到一个垫子文件中。加载包含这个名为materials的表的mat文件。我们可以创建一个变量,将材料名称直接映射到其相应的扩散系数值。例如,我们可以取铁的扩散率,23 (mm^2/s)为了帮助选择材料名称,我们可以打开表格,复制名称列。然后转到插入选项卡,点击控制,选择下拉菜单,粘贴材料列表。现在每个人都可以滚动这个列表,选择任何材料,而不用输入名称,例如铁、钢、铜或热解石墨。所以,我们有一个快速的方法来确定这个列表中任何物质的扩散率。我们最好保存这个信息以备将来使用。
现场脚本还可以帮助理解热方程背后的物理。能量守恒是出发点。看单位,因为它们可以告诉我们能量平衡是什么:热能的时间变化是由于传入的热流。这个平衡的单位是瓦特,或瓦特每体积的微分形式。热力学和傅里叶定律允许用温度来表示能量和通量。通过将这些定律嵌入到能量平衡中,热量方程立即得到。现在我们可以看到扩散系数是怎么来的了。
作为练习。你可以尝试用方程编辑器再次推导热方程。在另一个练习中,我们可以学习如何使用符号变量并在输出中可视化地分配单位。这样,就可以验证扩散比的单位了。你也可以定义偏导数方程。检查它们是否一致,也就是两个元素的单位相同。
我们已经完成了关于故事的第一部分和一些关键事实。现在我们已经准备好开始第二部分,有更多的代码来可视化瞬态结构,构建热解决方案,最后模拟不同材料中的热扩散。我们走吧。为了解决瞬态问题,我们关注齐次边界条件,这意味着边界在0开尔文度保持不变。我们将这些BC冷冻成一般的热结构。解结构为时空阱“SEPARATED”序列,正弦和指数为微分算子的特征向量;边界条件因lambda值而满足;负指数衰减为零,扩散率越大,衰减越快。现在我们来形象化一下这个解。
我们开始写分离的乘积sin(x)* exp(-t),这实际上是x t n上的一个函数句柄,Lambda和b也是新的函数句柄,只依赖于n,现在,我们可以猜测b的任何表达式,之后我们将用某个傅里叶系数替换b。现在,固定n = 1,我们得到了一个新的函数句柄只依赖于x和t,所以这是一个我们很容易想象的曲面。使用简单的for循环,我们可以为不同的n值重叠多个项。这对于熟悉单个项很有用。我们可以复制粘贴代码因为我想知道它们和的形状。所以我们只需要累积每一项的贡献就能得到最终的热结构。为了泛化N个项,我们可以插入一个Slider控件来改变我们想要求和的项的数量。当你点击,你会得到热表面,drawnow函数会创建这个漂亮的动画。
我们也可以用符号的方法来建立热结构。复制前面的函数句柄,让我们看看将它们转换为符号函数的技巧:只需将参数列表从右移动到左。我们必须定义所需的符号变量,以及符号函数。让我把b重新定义为一个变量,而不是一个函数,让我们做一个可以简化的假设来计算傅里叶系数n为整数,L和D为正。运行时,符号输出很好。注意符号对象既可以是符号变量,也可以是符号函数。现在为了重用这段代码,我们最好把它放在Live Script末尾的一个局部函数中。你只需输入函数,给出一个名称,定义热结构作为输出。现在我们有了一个快速的方法来建立符号热结构用你喜欢的名字只要在任何需要的时候调用这个局部函数。
在确定某些值之前,我们无法将符号热对象可视化。现在,用任何值替换符号变量都很容易。但是如果L已经被用来存储数值呢?以前的语法不能工作,因为我们必须将L重新定义为一个Symbol,所以现在我们还可以用数字L代替符号L。我们可以用一个命令嵌入多个参数,如D和b_n。但这仍然是一个依赖于n的函数。为了固定n = 3,我们不需要subs操作符,只需将3作为函数输入,最后我们得到只依赖于空间和时间的曲面。最后我们可以把它形象化。但是热量在哪里呢?热量是这些项的和。为了得到热量,我们可以计算n = 1,2,3时前三项的和,我们可以重复使用相同的代码来可视化这个和,可能会增加时间持续时间,所以我们已经学会了如何将数值参数嵌入到一般的热量结构中。
现在我们想要了解热结构的由来和原因。我们将验证分析方法,以证明热结构不仅是A解,而且是问题的解。在这个小练习中,我们验证热结构满足热方程。MATLAB会为我们计算偏导数。当我们运行时,输出显示热结构确实是一个解。假设我们已经定义了热问题,但我们想要寻找一个解决方案。第一步是分离变量只考虑边界条件;第二步是傅里叶分析,也包括初始条件。
分离变量是指解是两个分离函数的乘积,每个函数都依赖于一个变量。我们把这个乘积代入方程和边界条件。Live Script将立即显示输出。我们可以进一步分离方程,把所有与时间有关的项放在左边,与空间有关的项放在右边。对于任意x和t,两边相等的唯一方法是它们是常数,一个负常数以避免平凡解,所以我把它写成-²。金宝搏官方网站
我们得到两个分离的ode,一阶时间,二阶空间,这就是指数和正弦出现的地方!我们把两边分开等于-²。然后利用左边的边界条件和合适的常数分别求解ode。现在轮到右边界条件了它迫使依赖于杆的长度。MATLAB可以确定谱是/ l的任意整数倍,所以,我们代入,将所有常数重命名为b_n,取最终的乘积,我们证明了热解必须具有这种结构。那么bn呢?这些都不满足初始条件。知道bn是怎么选的吗?
在时间0时,热结构可以归结为一系列正弦函数,但是怎样才能使它等于初始温度呢?Bn仍然是自由自由度。在开始时,我们回顾了傅里叶分析,将任何函数表示为谐波的和。但是后面是什么呢?这个神奇的想法就是正交性。很简单,每个元素乘以sin,然后求积分。现在我们来计算这个积分它是两个谐波的内积。当索引不同时,输出显示为0。所以,谐波是正交的!宾果! To satisfy the initial condition we have this beautiful formula by taking the integral inner product and making a projection along the harmonics. Let’s do some examples.
让我们从简单的函数开始,假设(x) = x然后重复神奇的傅里叶公式,(x)乘以谐波,然后从0到L的积分,一些因子要归一化,这些是系数。为了更直观地理解它们的行为,我们可以先计算一些值并将它们转换为双值,这样我们就可以创建一个条形图来查看它们是递减的,并使用交替符号。
我们也可以用前N次谐波画出整个傅立叶级数并从1到N求符号和,通过这个for循环,我们增加要求和的谐波数然后在原始上重叠来感受它们是如何越来越接近的。我们可以添加一个按钮来运行,重复循环,并快速试验任何其他初始函数。如果初始条件是一个中间有跳跃的方波,会发生什么?更有趣的是,傅立叶级数甚至可以近似跳跃。作为最后一个例子,锯齿怎么样?傅里叶级数在这种情况下也表现得很好,不管有多少跳变。很神奇,不是吗?
现在,我们回顾计算最终解的所有步骤。首先,我们计算初始条件的傅里叶系数。然后,通过重用我们之前定义的局部函数来定义热结构。结构满足边界条件。现在,嵌入傅里叶系数来满足初始条件,我们也嵌入长度和扩散率。最后,为了得到热解,我们取从1到N的项的和。
当然,我们可以改变长度或任何其他参数。例如,我们可以取一个从10度跳到40度的初始条件。当你运行时,所有的计算都将被更新。我们也可以改变材料的扩散率或者增加项的数量。为了可视化最终的表面,我们还固定了一个时间持续时间,时间衰减可能是一种选择。这是热溶液。如果我们改变初始条件,热表面是响应的。为了创建表面的动画,我们最好使用数值方法,其中我们定义一个网格,并在每个时间步骤重新计算数值热矩阵。
第四部分:最终模拟
为了有效地模拟,我们将创建一个更灵活的函数来管理所有问题输入,可视化解决方案,或在特定时间内启用动画,30分钟或2小时,这取决于材料。回到前一节,我们复制解决问题的4个步骤,并向下滚动到一个新的局部函数,在那里以更紧凑和可重用的方式粘贴它们。所以这里我们有了一个很好的综合我们学过的解热方程的方法。热解是输出参数的一部分。值得注意的是,该函数可以通过重用开始构建的地图容器来计算材料扩散率,并提供适当的单位校正。它还小心地将给定的持续时间转换为秒。最后,它可以启用动画检查最后的输入。
测试一个函数是基本的:如果我们用两个输入运行,我们会遇到麻烦,为什么?我们需要4个输入来计算热解。所以,我们可以快速纠正。现在没问题了。4个输入呢?它确实有用,但是系数有点奇怪。我们最好添加一个断点并进入函数。我们一步一步地执行,继续到下一个断点,直到我们发现n不是一个整数。因此,我们停止调试并进行修正。顺便说一下,“Oranges”还通知了缺少分号的两行。 Now test again another syntax with graphic, … check b, and test animation. Now the function is ready for simulation.
我们灵活的界面可以提供很多帮助,但仍然需要很多输入。更改每个控件的值可能很耗时,但Live控件可以加快这一任务。我们已经在最开始创建了这样一个控件来选择材质。我们使用了一个下拉列表来收集整个材料列表。请注意,当您单击一个控件时,它可以运行整个部分,但在这种情况下,我执行Nothing。举个例子,铁。有不同类型的控件,对于杆的长度,我们可以使用编辑框输入一个双值。假设是1米。对于初始条件,我们只写出表达式,而滑动器是选择傅里叶项个数的完美选择。我们为持续时间添加了另一个编辑框……和一个下拉框来选择时间单位。
我们还可以添加一个按钮来开始模拟,当我们准备好了。我们看到铁的扩散系数很小,大约在3小时内达到平衡。所以,模拟说改变时间尺度从分钟到小时来捕捉瞬态。我们可以尝试一个跳跃的初始条件并增加项的数量。或者选择另一种材料,比如铜,它的扩散率更大,大约100,所以瞬态衰减在30分钟内更快。最后,热解石墨在许多应用中是非常重要的材料,因为它的扩散系数大于1000,并在3分钟内达到平衡。减少长度,时间刻度变成偶数秒。最后,我们可以以不同的格式导出任何图形或整个Live Script。例如,我们可以看到关于热方程的最后一讲导出为pdf文件。所以,我希望你喜欢,你现在可以使用Live Script来传播你的想法。 Thanks for watching
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。