matlab解一阶常微分方程的初解题: 如下图所示,代码应该是什么?

2024-05-07 00:25

1. matlab解一阶常微分方程的初解题: 如下图所示,代码应该是什么?


matlab解一阶常微分方程的初解题: 如下图所示,代码应该是什么?

2. 有限差分法

有限差分法是以差分原理为基础的一种数值计算法。它用各离散点上函数的差商来近似替代该点的偏导数,把要解的边值问题转化为一组相应的差分方程。然后,解出差分方程组(线性代数方程组)在各离散点上的函数值,便得边值问题的数值解。
现以二维等步长差分格式为例,说明有限差分法的原理和方法步骤。
1.区域离散化,作网格剖分

图1⁃4⁃1 二维等步长正方形网络

如图1⁃4⁃1所示,用平行于坐标轴的两组直线族将地下划分成正方形网格,相邻两坐标线的距离为h,则任一点的x、z坐标为
x=ih(i=0,1,2,…,M)
z=kh(k=0,1,2,…,N)
每个正方形为一单元,其边长h称为步长,网格的交点称为节点。任一节点的坐标(x,z)可表示为(ih,kh),或简化为(i,k),用阶梯状折线代替原来的曲线段。在边界线以内的节点称为内节点,边界上的节点称为边界节点。
2.微分方程离散化,构组差分方程
某一内节点(i,k)处的电位为U(i,k),由于h很小,可将节点(i,k)四周的电位在节点处展成泰勒级数:

地电场与电法勘探


地电场与电法勘探


地电场与电法勘探


地电场与电法勘探

式中Ux,Uxx,……和Uz,Uzz,……分别表示U对x和z的一阶导数、二阶导数等。将前两个式子相加,并且忽略h的四次项与更高次项,经整理可得:

地电场与电法勘探

同理得:

地电场与电法勘探

将上述Uxx和Uzz代入含源分区均匀岩石中位函数U所满足的微分方程(1⁃4⁃16)的第二式,即得二维函数U(x,z)的差分方程:
U(i+1,k)+U(i,k-1)+U(i-1,k)+U(i,k+1)-4U(i,k)=h2f(1⁃4⁃18)
对于无源分区均匀介质,位函数 U(x,z)所满足的微分方程(1⁃4⁃17)的差分方程为
U(i+1,k)+U(i,k-1)+U(i-1,k)+U(i,k+1)-4U(i,k)=0(1⁃4⁃19)
3.线性方程组的形成与求解
对于边界节点,其相应的差分方程可根据边界条件给出。全部结点所建立差分方程(1⁃4⁃18)和(1⁃4⁃19)的总和可分别写成以下矩阵形式:
〔A〕·{U}={F}(1⁃4⁃20)
和
〔A〕·{U}=0(1⁃4⁃21)
〔A〕是方程组的系数矩阵,它是与电阻率分布有关的函数;{U}是电位U的列向量,其分量为所有节点上的电位;{F}是常向量。当给定电阻率分布及边界条件后,解线性方程(1⁃4⁃20)和(1⁃4⁃21),便可求得电位的空间分布。
电位{U}值的计算精度与步长h的大小有很大关系。一般说来,网格划分越细,即h值越小,{U}值与理论值就越接近。但是此时节点数目也急剧增加,因而所需的计算机内存和计算时间也就会增大。解决计算速度与精度这一矛盾的较好方法是采用变步长,即在近区将网格分得密些,远区影响较小可分得稀些。

3. 不好意思,再次打扰。 刚忘了回答 有限差分法 解三阶微分方程的思路了。 有matlab方面的程序么?

没有,三阶微分方程一般都用matlab ode解算器算了,很少自己编,除非是偏微分

不好意思,再次打扰。 刚忘了回答 有限差分法 解三阶微分方程的思路了。 有matlab方面的程序么?

4. matlab求解偏微分方程组,查了一下,说要用有限差分法,谁有类似的程序可以分享一下吗?谢谢~

楼主这里有很多偏微分方程求解的资料http://www.matlabsky.com/search.php?mod=forum&searchid=53&orderby=lastpost&ascdesc=desc&searchsubmit=yes

一般偏微分方程(PDEs)的Matlab命令行求解详解
http://www.matlabsky.com/forum-viewthread-tid-981-highlight-%C6%AB%CE%A2%B7%D6%B7%BD%B3%CC.html
陆君安《偏微分方程的Matlab解法》
http://www.matlabsky.com/forum-viewthread-tid-135-highlight-%C6%AB%CE%A2%B7%D6%B7%BD%B3%CC.html偏微分方程的数值解法的MATLAB程序
http://www.matlabsky.com/forum-viewthread-tid-11522-highlight-%C6%AB%CE%A2%B7%D6%B7%BD%B3%CC.html

5. 三阶常微分方程边值问题 用有限差分法和打靶法的matlab 程序有么?或者思路

ode45只能解初值问题,不能解边值问题
x(0.001)=5,x'(0.001)=-2,x(3)=1.373
这是个边值问题
你可以用matlab bvp4c解或者打靶法,
具体的就是猜一个x=0.001的二阶导数值x''(0.001)=a,用ode45求解,求出x(3)的值与1.373比较,如果误差不允许,就在迭代变换a值,直到解出的x(3)的值与1.373误差可接受为止

三阶常微分方程边值问题 用有限差分法和打靶法的matlab 程序有么?或者思路

6. matlab subs函数

matlab中subs()是符号计算函数,表示将符号表达式中的某些符号变量替换为指定的新的变量,常用调用方式为:
subs(S,OLD,NEW) 表示将符号表达式S中的符号变量OLD替换为新的值NEW。
下面具体演示4种不同形式的OLD和NEW的调用效果:
首先在matlab命令窗口输入如下代码,定义三个符号变量和一个符号表达式S

1、将变量x替换为数值1: subs(S,x,1)

2、将变量x替换为变量z: subs(S,x,z)

3、同时将变量x和y分别替换为1和z:subs(S,{x,y},{1,z})

4、将单变量替换为数组:subs(S,x,[1 2;3 4])

7. 怎么利用有限差分法对模型进行求解

有限元法应该是在差分法基础上建立起来的。
有限元法:对物理模型进行离散,网格划分不用规则,就是各种单元可以混合使用,所以写不出方程也可以求解。
差分法:划分的网格是规则的,对方程进行离散化,就是用很多个差分代替微分,用线性方程组代替微分方程的一种方法。
学地质应该不用太区了解 基本原理,要注重分析的过程,和看懂分析结果才重要,地质毕竟也是实际的工程领域。那些理论就让物理专业,力学专业的研究去吧。
本人也了解不多,若不是正确答案清凉解。

怎么利用有限差分法对模型进行求解

8. matlab 利用有限差分法解偏微分方程 矩阵out of memory

这个真好像没有办法,matlab矩阵太大了就是不行!