差分、偏微分方程的解法

article/2025/8/27 16:30:41

这里写目录标题

  • 微分方程数值求解——有限差分法
  • matlab代码
    • 差分法的运用(依旧是连续变量——>离散网格点)
  • PDE求解思路
  • demo1
  • demo2

在这里插入图片描述

微分方程数值求解——有限差分法

差分方法又称为有限差分方法或网格法,是求偏微分方程定解问题的数值解中应用 最广泛的方法之一。它的基本思想是:先对求解区域作网格剖分,将自变量的连续变化 区域用有限离散点(网格点)集代替;将问题中出现的连续变量的函数用定义在网格点 上离散变量的函数代替;通过用网格点上函数的差商代替导数,将含连续变量的偏微分 方程定解问题化成只含有限个未知数的代数方程组(称为差分格式)。如果差分格式有 解,且当网格无限变小时其解收敛于原微分方程定解问题的解,则差分格式的解就作为 原问题的近似解(数值解)。因此,用差分方法求偏微分方程定解问题一般需要解决一下问题:

  • 选取网络;
    由于matlab数组下标从1开始,而离散变量的初值都是从0开始,因此除却初始条件,我们所求的矩阵区域对应的数组下标是 2~ N+1
    这点需要注意,像下文中的代码,实际意义上是将时域划分为了length(t)-1个区域,因为下标1对应的是初值,但只求了 2~ N
    我写代码时习惯于
dx=0.02;
x=0:dx:1;
dt=0.0001;%0.0001
t=0:dt:1;
n=length(x)+1,m=length(t)+1
u=zeros(n,m);
%在求解U(x,t)时的循环过程则为
for i=1:m-1-1
...
  • 对微分方程及定解条件选择差分近似,列出差分格式;

  • 求解差分格式;

  • 讨论差分格式解对于微分方程解的收敛性及误差估计

在这里插入图片描述
常微分方程用欧拉法

大部分,下标位置,上标时间
有热源或者是扩散源,连续的、分成很多份、离散地取值,有限多个数来近似一个函数
在这里插入图片描述
在这里插入图片描述

1,N+1
在这里插入图片描述
这里是说算法的尺比,每个算法尺比有要求,就是空间步长与时间步长的比
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
初始算出 1,1~ N+1,可得到2,2~N,通过 边界条件,可得到 2,1 ~ N+1,继续向上推

求解准备(对矩阵的构造)

在这里插入图片描述
左侧矩阵是u关于x的二阶导
左侧矩阵是u关于x的二阶导,但只是先后对于 2~ N的二阶导,要求得 1 ~ N+1 的二阶导,还需要借助边界条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
表达的式子是
在这里插入图片描述

matlab代码

改成简单的边界条件

m1=1+0.0*sin(t); %t的函数,两个边界条件
m2=2-0.0*sin(10*t);
clc,clear
a=1;
dx=0.02;
x=0:dx:1;
dt=0.0001;%0.0001
t=0:dt:1;
u=zeros(length(x),length(t));
%行数和x的个数一样
u(:,1)=sin(pi*x);%x的函数,初始函数,第一列
m1=1+0.0*sin(t); %t的函数,两个边界条件
m2=2-0.0*sin(10*t);
A=-2*eye(length(x))+diag(ones(1,length(x)-1),1)++diag(ones(1,length(x)-1),-1);
%eye 主对角线,单位矩阵
%diag(,1)对角矩阵往上挪1
for n=1:length(t)-1u(:,n+1)=u(:,n)+a^2*dt/dx^2*A*u(:,n);% a^2*(u关于x的二阶导)u(1,n+1)=m1(n+1); %边界条件u(end,n+1)=m2(n+1);end%plot(x,u(:,end),'-bp')[X,T]=meshgrid(t,x);surf(X,T,u)shading interp  

在这里插入图片描述
在这里插入图片描述

差分法的运用(依旧是连续变量——>离散网格点)

在这里插入图片描述
由于向前差分有误差,如果我们进行两次向前差分的话,计算的误差可能会增大,因此,第二次偏导我们选择向后差分。即我们混合向前差分、向后差分来近似代替两次偏导。

因此,第二次我们用向后差分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
该块内容来自博文

clc;
clear;
f1 = @(x)2 * log(1+x);
f2 = @(x)log((1+x).^2+1);
f3 = @(y)log(1+y.^2);
f4=  @(y)log(4+y.^2);
u=zeros(4);
m=4;% 总列数
n=4;% 总行数
h=1/3;
u(1,1:m)=feval(f3,0:h:(m-1)*h)';
u(n,1:m)=feval(f4,0:h:(m-1)*h)';
u(1:n,1)=feval(f1,0:h:(n-1)*h);
u(1:n,m)=feval(f2,0:h:(n-1)*h);
b = -[u(2,1)+u(1,2);u(4,2)+u(3,1);u(2,4)+u(1,3);u(3,4)+u(4,3)];
a = [-4,1,1,0;1,-4,0,1;1,0,-4,1;0,1,1,-4];
x=a\b;

PDE求解思路

古典解、广义解
对于PDE(偏微分方程)来说,如果存在一个函数u uu具有所需要的各阶连续偏导数,将它们带入方程时能使方程成为恒等式,则称这个函数为该方程的解 (这种解又称为古典解)。

用一个充分光滑的初值函数序列来逼近不够光滑的初值函数,前者所对应的解序列的极限就定义为后者所确定的解,称为问题的广义解。

求解ODE思路
求解常微分方程的办法,先求出方程的通解,再用定解条件去确定任意常数。现在,如能找出主方程的通解,再利用定解条件去确定任意函数。

求解PDE思路
求出PDE满足边界条件的足够数目的特解,再利用叠加原理,使之满足初始条件,从而得到混合方程的解。

在这里插入图片描述

工具箱求解

demo1

在这里插入图片描述
参考博文

demo2

在这里插入图片描述
在这里插入图片描述

%主函数
function main
clc,clear
m=0;
x=linspace(0,1,20); % 方程区间为(0,1)
t=linspace(0,2,10); % t 的范围可以随取,只需要大于0即可
sol=pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t); % 10x20的矩阵与t*x的维度一致
u = sol(:,:,1); %解向量 u 的第 1 个分量的近似值
surf(x,t,u) 
title('Numerical solution computed with 20 mesh points.')
xlabel('Distance x')
ylabel('Time t')figure
plot(x,u(end,:))% t=2时,u随x的变化曲线
title('Solution at t = 2')
xlabel('Distance x')
ylabel('u(x,2)')end
%PDE方程 
function [c,f,s]=pdex1pde(x,t,u,DuDx)c=pi^2;f=DuDx;s=0;end
%初始条件格式
function uo=pdex1ic(x)uo=sin(pi*x);
end
%边界条件
function [pl,ql,pr,qr]=pdex1bc(x1,u1,xr,ur,t)pl=u1; ql=0; pr=pi*exp(-t); qr=1; end

在这里插入图片描述

参考博文
matlab文档


http://chatgpt.dhexx.cn/article/YCjs3qee.shtml

相关文章

微分方程数值解法(2)——椭圆型方程的有限差分法

此处参考教材为李荣华的《微分方程数值解法》 使用工具:Matlab 1. 算法:矩形网格上5点差分格式 2. 算法 I.需要求解的函数 function [v,vx,vy,f,aa,bb,cc,dd]u2D(x,y,ft)% ft为方程编号,u1D为精确解函数u(t),注意与…

基础数学(8)——常微分方程数值解法

文章目录 期末考核方式基础知识解析解(公式法)解析解例题(使用公式法,必考)解析解的局限性 数值解数值解的基本流程 显示Euler法显示欧拉(差值理解)显示欧拉(Taylor展开理解&#xf…

微分方程数值解法(1)——常微分方程初值问题的数值解法

此处参考教材为李荣华的《微分方程数值解法》 使用工具:Matlab 1. 算法 注: 最后一行应为k4,上面为笔误 2. 算法 I.需要求解的函数 function ff1D(t,u,ft)% ft为方程编号,u1D为精确解函数u(t),注意与f1D对应右端项函数f(t,u(t))switch ftcase 1 %P10…

偏微分方程数值解法pdf_天生一对,硬核微分方程与深度学习的联姻之路

机器之心原创 作者:蒋思源 微分方程真的能结合深度神经网络?真的能用来理解深度神经网络、推导神经网络架构、构建深度生成模型?本文将从鄂维南、董彬和陈天琦等研究者的工作中,窥探微分方程与深度学习联袂前行的路径。 近日&…

椭圆型偏微分方程数值解法

一、 一维椭圆方程数值解 matlab代码&#xff1a; function chap2_fdm_elliptic_1D % 一维椭圆方程求解(常微分方程边值问题) % -u q(x)u f(x), 0<x<1, 取q(x) x, f(x) (x-1)exp(x) % u(0) 1, u(1) e; 边界条件 % 真解为 u exp(x)N 20; h 1/N; x_al…

Python小白的数学建模课-11.偏微分方程数值解法

偏微分方程可以描述各种自然和工程现象&#xff0c; 是构建科学、工程学和其他领域的数学模型主要手段。 偏微分方程主要有三类&#xff1a;椭圆方程&#xff0c;抛物方程和双曲方程。 本文采用有限差分法求解偏微分方程&#xff0c;通过案例讲解一维平流方程、一维热传导方程…

偏微分方程数值解法pdf_单摆-微分方程浅谈

引子[1] 单摆&#xff0c;这个在中学物理都学过的东西&#xff0c;应该是非常熟悉了。 图片来源-维基百科 小角度简单摆 若最高处( )的绳子和最低处(速度最大值)的绳子的角度为 &#xff0c;则可使用下列公式算出它的振动周期。 公式证明 摆球受力分析 绳与对称线夹角为 &…

偏微分方程数值解法pdf_数值模拟偏微分方程的三种方法:FDM、FEM及FVM

偏微分方程数值模拟常用的方法主要有三种:有限差分方法(FDM)、有限元方法(FEM)、有限体积方法(FVM),本文将对这三种方法进行简单的介绍和比较。 一.有限差分方法 有限差分方法(Finite Difference Methods)是数值模拟偏微分方程最早采用的方法,至今仍被广泛运用。该方法包括区…

正圆锥体空间方程_数值模拟偏微分方程的三种方法:FDM、FEM及FVM

偏微分方程数值模拟常用的方法主要有三种:有限差分方法(FDM)、有限元方法(FEM)、有限体积方法(FVM),本文将对这三种方法进行简单的介绍和比较。 一.有限差分方法 有限差分方法(Finite Difference Methods)是数值模拟偏微分方程最早采用的方法,至今仍被广泛运用。该方法包括区…

抖音图标

抖音图标&#xff1a; 1.创建一张画布&#xff0c;再用圆角矩形工具创建一个圆角矩形 2.新建一个图层&#xff0c;用椭圆选框工具创建一个圆&#xff0c;再alt键从选区减去一个圆 3.再填充一个颜色&#xff0c;再剪切1/4圆接着粘贴拖拽至右上方 4.新建一个图层&#xff0c;用…

抖音图标——ps

抖音图标 1.用圆角矩形工具画个圆角&#xff08;空格键可以移动&#xff09;&#xff0c;填充为黑色&#xff0c;把此图层转换为珊格式化 2.再新建一个图层&#xff0c;用椭圆选框工具画个换个环&#xff08;用alt会出现&#xff0c;shift会出现加号&#xff09; 3.Ctrlx剪…

抖音软件分析

前几天看了看关于短视频软件的火的一些话题&#xff0c;就去看了看关于抖音的&#xff0c;对于抖音是那几个方面&#xff0c;自己也去做了一些分析&#xff0c;首先是在两个方面去做的一个理解&#xff0c;一个是软件制作&#xff0c;一个是商业运营。 软件制作 在抖音的软件…

仿抖音视频自动播放html,vue 仿抖音视频播放切换

一、第一部分html页面的准备 {{item.title}} {{item.introduction}} 二、数据说明部分 data() {let u = navigator.userAgent; return {showSlide: 0, allLoaded: false, //数据是否全部加载完 page: 1, isLoading: true, option: {}, current: 0, videoList: [], isVideoShow:…

抖音账号官方认证

介绍 认证功能入口 【我】—【创作者服务中心】— 【官方认证】 抖音黄V是什么&#xff1f; 抖音黄V是抖音平台对个人能力与专业性的认可。换句话讲&#xff0c;黄V即能体现个人身份标签又可以获得官方在内容发布的“豁免权”。如未认证的用户去进行科普&#xff0c;轻则警…

仿抖音首页界面

目录 效果图 顶部相关代码 顶部效果图 内容相关代码 内容效果图 底部导航栏相关代码 底部导航栏效果图 完整代码 html css js ​flexible.js 要想做出抖音短视频的首页界面&#xff0c;我们要引用swiper插件、还需要用到iconfont图标&#xff08;可自行到官网上下载…

抖音小程序Tiktok开发教程之 基础组件 04 icon 图标组件

什么是icon组件? icon是图标组件 icon组件运行效果 icon组件如何使用呢? 首先,在ttml界面中添加下面代码 <view class="container"><view class="body"><view class="page-section page-default"><view class="…

分享图片或链接到抖音

目录 前言 一、官方文档 二、开始配置 第一步&#xff1a;向抖音短视频申请你的 clientkey 及相关权限 第二步&#xff1a;集成到开发环境 1.根目录下build.gradle引入库 2.app moudel目录下build.gradle引入库 3.配置抖音的软件包可见性 使用一&#xff1a;Android-分…

仅用一个 HTML 标签,实现带动画的抖音 Logo

作者 | 零一 来源 | 前端印象 今天给大家表演 仅用一个HTML标签实现带动画的抖音LOGO&#xff0c;涉及了很多知识点&#xff0c;欢迎交流讨论 先上结果&#xff0c;最终实现效果如下&#xff1a; 成品图 还原度应该还可以吧&#xff1f; 抖音Logo结构 想要用CSS来画抖音的Logo&…

用python+pillow模块实现抖音晃眼睛的特效,图像处理之路(附源码)

前言 利用Python实现抖音晃眼睛的特效&#xff0c;让我们愉快地开始吧~ 开发工具 Python版本&#xff1a; 3.6.4 相关模块&#xff1a; pillow模块&#xff1b; numpy模块&#xff1b; argparse模块&#xff1b; 以及一些Python自带的模块。 环境搭建 安装Python并添加到…

仅用一个HTML标签,实现带动画的抖音LOGO

大家好&#xff0c;我是零一&#xff0c;今天给大家表演 仅用一个HTML标签实现带动画的抖音LOGO&#xff0c;涉及了很多知识点&#xff0c;欢迎交流讨论 先上结果&#xff0c;最终实现效果如下&#xff1a; 还原度应该还可以吧&#xff1f; 抖音Logo结构 想要用CSS来画抖音的…