如何用Matlab求解偏微分方程,并画出图像

如何用Matlab求解偏微分方程,并画出图像,第1张

用Matlab求解偏微分方程,可以用pde工具箱来解决。例如,简单的点热源方程

求解步骤及主要函数:

1、问题定义

2、创建具有单个因变量的PDE模型, createpde()

3、创建几何结构并将其追加到PDE模型中,geometryFromEdges()

4、使用边界条件,pdegplot()

5、指定PDE系数

6、指定初始条件,setInitialConditions()

7、生成网格,pdemesh()

8、生成时间离散化

9、求解数值解,solvepde()

10、绘图解的图形,pdeplot()

执行代码:

clc

R1 = [3;4;-1;1;1;-1;-1;-1;1;1];

C1 = [1;0;0;04];

C1 = [C1;zeros(length(R1) - length(C1),1)];

gd = [R1,C1];

sf = 'R1+C1';

ns = char('R1','C1')';

g = decsg(gd,sf,ns);

numberOfPDE = 1;

pdem = createpde(numberOfPDE);

geometryFromEdges(pdem,g);

figure

pdegplot(pdem,'edgeLabels','on','subdomainLabels','on')

axis([-11 11 -11 11]);

axis equal

title 'Geometry With Edge and Subdomain Labels'

applyBoundaryCondition(pdem,'Edge',(1:4),'u',0);

specifyCoefficients(pdem,'m',0, 'd',1, 'c',1, 'a',0,'f',1);

setInitialConditions(pdem,0);

setInitialConditions(pdem,1,'face',2);

msh = generateMesh(pdem);

figure;

pdemesh(pdem);

axis equal

nframes = 20;

tlist = linspace(0,01,nframes);

pdemSolverOptionsReportStatistics ='on';

result = solvepde(pdem,tlist);

u1 = resultNodalSolution;

figure

umax = max(max(u1));

umin = min(min(u1));

for j = 1:nframes,

pdeplot(pdem,'xydata',u1(:,j),'zdata',u1(:,j));

caxis([umin umax]);

axis([-1 1 -1 1 0 1]);

Mv(j) = getframe;

end

movie(Mv,1);

运行结果

lumda=1;

mu=03;

fun=@(t,is)[lumdais(2)is(1)-muis(1);-lumdais(2)is(1)];

[T,Y]=ode45(fun,[0 100],[002 098]); %时间区间个可以选择

subplot(211),plot(T,Y);

xlabel('t');

legend('i','s');

subplot(212),plot(Y(:,2),Y(:,1));

xlabel('s');

ylabel('i');

这个方程要解出来还要初始条件吧

不妨设(x(0),y(0))=(A,B);

还有用ode45只能得到数值解,不能给出解析式表达

那么先建立一个函数文件

test_funm

function dx=tsst_fun(x,t)

dx(1)= c-bx(1)-wx(1)x(2);

dx(2)=wx(1)x(2)-(b+m)x(2);

那么调用ode45

x0=(0,0);

t0=0:001:10;

;%根据你所想要的求得值设定t0,间隔是任意的,与求解所用的步长无关,

[x,t]=ode45(@test_fun,t0,x0);

得到了

这样可以么?

matlab求微分方程的解,一般可以用软件自带的dsolve()、ode45()、bvp4c()等函数。

在matlab中解常微分方程有两种方法:一种是符号解法,另一种是数值解法。在本科阶段的微分数学题,基本上可以通过符号解法解决。用matlab解决常微分问题的符号解法的关键命令是dsolve命令。

该命令中可以用D表示微分符号,其中D2表示二阶微分,D3表示三阶微分,以此类推。值得注意的是该微分默认是对自变量t求导, 也可以很容易在命令中改为对其他变量求导。”

1、dsolve函数常用于求解,简单的微分方程(组),如y=dsolve('Dy=y-2ty','y(0)=1')

2、ode45函数常用于求解初值问题的微分方程(组)的数值解,如func=@(t,y)y-2ty

[t,y]=ode45(func,[0,40],1)

3、bvp4c函数常用于求解边值问题的微分方程(组)的数值解,如

sol=bvp4c(odefun,bcfun,sinit)

4、其他,还可以自行编写Euler(折线法),Runge-Kutta(龙格库塔法)等去求解微分方程(组)。

以上就是关于如何用Matlab求解偏微分方程,并画出图像全部的内容,包括:如何用Matlab求解偏微分方程,并画出图像、matlab大神,求解微分方程组代码、matlab用ode45求解微分方程组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9821197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存