热传导方程

  • 一维问题
    • 问题背景
    • 问题抽象
    • 离散方法
      • 1 向前差分
        • 迭代格式
        • 初值设定
        • 取参数
        • C语言实现
        • fortran实现
        • 画图

hexo博客为啥用不了了,将就着先用这个博客吧

一维问题

问题背景

摘抄自网络 :在距离为L的两个半无限长壁面之间有传热的流体。假设整个流场初始时刻具有温度T=T1(常数,本题中取10摄氏度),并处于平衡状态(即:初始时刻壁面和流体的温度都为10摄氏度)。两个壁面的初始温度Tw1=Tw2=T1(本题中即为10摄氏度)。现假设在t=0时刻,右边的壁面温度突然增加到Tw2=T2并保持在T2(本题中取T2为20摄氏度),而左边的壁面温度保持在Tw1=T1(即10摄氏度)。求时间t1、t2和时间趋于无穷时壁面间流体温度的分布?

问题抽象

ut=α⋅∂2u∂x2初值:u(x,0)=u0(x)边值:u(0,t)=μ0(t),u(l,t)=μ1(t)u_t=\alpha\cdot \frac{\partial^2u}{\partial x^2} \\ 初值:u(x,0)=u_0(x)\\ 边值:u(0,t)=\mu_0(t),u(l,t)=\mu_1(t) ut​=α⋅∂x2∂2u​初值:u(x,0)=u0​(x)边值:u(0,t)=μ0​(t),u(l,t)=μ1​(t)

离散方法

1 向前差分

u(xi,t+Δt)−u(xi,t)Δt=α⋅u(xi+1,t)−2u(xi,t)+u(xi−1,t)Δx2\frac{u(x_i,t+\Delta t)-u(x_i,t)}{\Delta t}=\alpha\cdot\frac{u(x_{i+1},t)-2u(x_{i},t)+u(x_{i-1},t)}{\Delta x^2} Δtu(xi​,t+Δt)−u(xi​,t)​=α⋅Δx2u(xi+1​,t)−2u(xi​,t)+u(xi−1​,t)​

迭代格式

u(xi,t+Δt)=ru(xi+1,t)+(1−2r)u(xi,t)+u(xi−1,t)u(x_i,t+\Delta t)=ru(x_{i+1},t)+(1-2r)u(x_i,t)+u(x_{i-1},t)u(xi​,t+Δt)=ru(xi+1​,t)+(1−2r)u(xi​,t)+u(xi−1​,t)
其中r=aΔt(Δx)2r=\frac{a\Delta t}{(\Delta x)^2}r=(Δx)2aΔt​

初值设定

T1=10T2=20L=0.2mt=10sT_1=10\\ T_2=20\\ L=0.2m\\ t=10sT1​=10T2​=20L=0.2mt=10s

取参数

dx=0.01dt=0.001dx=0.01\\ dt=0.001dx=0.01dt=0.001

C语言实现
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{float dx,dt,t,L=0.2,a[100000],b[100000],alpha=1.42857*10e-3;/*dx表示delta(x),dt表示delta(t),alpha为热扩散率。由于数组大小随输入值而变化,所以取得比较大*/int i,n1,n2,n=0,total=1;FILE *F;//文件指针F=fopen("data.txt","w");dx=0.01;dt=0.001;t=10;n1=(int)(L/dx);n2=(int)(t/dt);//printf("n1=%d  n2=%d\n",n1,n2);for(i=0;i<n1;i++){     /*初始赋值*/if(i<n1-1){a[i]=10;}else a[i]=20;fprintf(F,"%8.4f",a[i]);//写入t=0时刻的温度}fprintf(F,"\n");    //换行while(n<n2){    /*时间到了,停止循环*/for(i=0;i<n1;i++){/*计算*/if(i==0){b[i]=10;a[i]=b[i];}     /*表示左壁面的温度始终保持在10摄氏度*/else if(i==n1-1){b[i]=20;a[i]=b[i];}     /*表示右壁面的温度始终保持在20摄氏度*/else{b[i]=a[i]+alpha*dt*(a[i+1]-2*a[i]+a[i-1])/(dx*dx);   /*差分方程的表达式*/a[i]=b[i];}n++;fprintf(F,"%8.4f",a[i]);//printf("%8.4f",a[i]);if(total%n1==0){             /*输出data文件*///printf("\n");fprintf(F,"\n");}total++;}}fclose(F);return 0;
}

输出结果为data.txt

fortran实现
program f1
implicit noneinteger::i,n1,n2,n,total,counreal::a(100000),b(100000)real::dx,dt,t,L,alphaopen(unit=1,file='data-f.txt')  !打开文件n=1total=0dx=0.01dt=0.001t=10 !时间L=0.2   !长度alpha=1.42857*10e-3n1=int(L/dx)n2=int(t/dt)do coun=1,n1        !类似于C语言的for循环if (coun<n1) thena(coun)=10      !赋初始值elsea(coun)=20end ifend dodo while(n<n2)!时间限制do i=1,n1if (i==1) thenb(i)=10         !表示左壁面的温度始终保持在10摄氏度a(i)=b(i)else if(i==n1) then     !表示右壁面的温度始终保持在20摄氏度b(i)=20a(i)=b(i)else                    !其他情况需要用差分方程计算b(i)=a(i)+alpha*dt*(a(i+1)-2*a(i)+a(i-1))/(dx*dx)a(i)=b(i)end ifwrite(1,"(F8.4)",advance='no')a(i)!advancce=n0使得每次读写结束,位置不会自动向下移动一行if(mod(n,n1)==0) thenwrite(1,*)                      !每一行够n1个之后换行end ifn=n+1end doend dodo coun=1,n1write(*,"(F8.4)")a(coun) !控制台输出t=10s的温度分布end doclose(unit=1)                   !关闭文件
end program

数据储存在文件data-f.txt中

画图

想画随时间变化的动图,不知道怎么画

一维的热传导方程向前差分法相关推荐

  1. 微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉

    微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉 五点差分,九点差分 差分格式,紧差分格式 直拍,只有pdf版方法说明 word版 ...

  2. 差分法数值求解热传导偏微分方程

    代码和推导文档可以在这里下载:差分法求解热传导偏微分方程Matlab代码 1.热传导偏微分方程 热传导方程,是传热数中,经典的数学方程.这里说的热传导方程,不仅仅是指传热学中的方程,而是指与热传导偏微 ...

  3. matlab做空间热扩散图,热扩散matlab实现

    (完整word版)MATLAB编辑一维热传导方程的模拟程序.doc_数学_自然科... 82 MATLAB; CrankNicolson 离散 A 中图分类号: 文献标识码: 许多工程问题需要研究热量 ...

  4. Udacity机器人软件工程师课程笔记(三十六) - GraphSLAM

    一.引入 GraphSLAM是解决完整的slam问题的slam算法.这意味着该算法将恢复整个路径和地图,而不仅仅是最近的姿势和地图.这种差异使它可以考虑当前姿势与先前姿势之间的依赖性.适用于我们的Gr ...

  5. 计算机控制考试试卷及答案,计算机控制系统A考试试卷带答案.doc

    *********** 2015-201 学年第学期 出题教师: []课程 试题 (卷) [闭卷考试] 姓名 学号 专业及班级 本试卷共有4道大题 题号一二三四总分得分阅卷人 一.填空题(共分,每空1 ...

  6. 什么叫显示动力学_什么叫显示动力学,什么叫隐式动力学分析!

    1.显式算法基于动力学方程,因此无需迭代:而静态隐式算法基于虚功原理,一般需要迭代计算 2.显式算法最大优点是有较好的稳定性. 动态显式算法采用动力学方程的一些差分格式,不用直接求解切线刚度,不需要进 ...

  7. 什么叫显示动力学,什么叫隐式动力学分析!

    1.显式算法基于动力学方程,因此无需迭代:而静态隐式算法基于虚功原理,一般需要迭代计算 2.显式算法最大优点是有较好的稳定性.         动态显式算法采用动力学方程的一些差分格式(如广泛使用的中 ...

  8. Pytorch中的repeat以及repeat_interleave用法

    repeat和repeat_interleave都是pytorch中用来复制的两种方法,但是二者略有不同,如下所示. 1.repeat torch.tensor().repeat()里面假设里面有3个 ...

  9. 什么叫显示动力学_ANSYS-什么叫显示动力学

    什么叫显示动力学,什么叫隐式动力学分析! 1 .显式算法基于动力学方程,因此无需迭代:而静态隐式算法基于虚功原理, 一般需要迭代计算 2 .显式算法最大优点是有较好的稳定性. 动态显式算法采用动力学方 ...

  10. matlab 二重傅里叶积分,傅里叶积分、傅里叶变换的matlab实现.doc

    傅里叶积分.傅里叶变换的matlab实现.doc PAGE PAGE 1 院 校: 物理与电子科学学院 班 级: 0801 班 姓 名: 目 录 1. 引言---------------------- ...

最新文章

  1. python对英语和数学的帮助-英语和数学都不好,但是我想学Python编程可以吗?
  2. UA MATH571B 试验设计 2k析因设计理论下
  3. 数据库-统计信息相关资料
  4. Centos DHCP服务搭建及测试
  5. 计算已经生活了多少天的小题目
  6. bootstrap组件
  7. 糖药病数据集分类_使用optuna和mlflow进行心脏病分类器调整
  8. SpringShell文档阅读笔记-SpringShell的基本使用
  9. java指定sql生成xml_通过generate解析SQL日志生成xml进行SQL回放
  10. STM32工作笔记0056---认识DB9接口
  11. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性...
  12. 模拟地与数字地(转)
  13. 编译器错误~写JS还是谨慎点好
  14. (bfs)广度优先 实现图的遍历
  15. 网络安全实验室CTF—基础关 writeup
  16. 天猫精灵通过私有云控制WiFi设备
  17. C#的DataTable详解
  18. Chapter3-线性模型线性模型
  19. 云服务器代理平台安装教程
  20. Android实现语音识别成中文

热门文章

  1. HTTP的请求连接过程
  2. 视频分辨率QCIF、CIF、2CIF、4CIF,D1~D5
  3. 欧若拉用计算机谱子,欧若拉简谱
  4. R语言的画图代码及差异性分析
  5. Linux系统搭建房卡游戏教程,2020年H5电玩房卡游戏源码合集运营级:超强后台控制+部署教程文档...
  6. 尚学堂 马士兵 struts_2视频教程 笔记心得 1——30课详解
  7. 游戏开发入门如何点亮技术树?
  8. 计算机网络需要解决什么问题,计算机网络故障的解决措施
  9. 软考软件设计师下午题目java设计模式(自用)
  10. php201534,PHP设计聊天室步步通4