楼主: xuning5176
17749 10

[问答] 求大神:如何使用Matlab求解偏微分方程的解析解 [推广有奖]

  • 11关注
  • 9粉丝

已卖:779份资源

讲师

87%

还不是VIP/贵宾

-

威望
0
论坛币
3812 个
通用积分
15.5361
学术水平
5 点
热心指数
3 点
信用等级
2 点
经验
4031 点
帖子
212
精华
0
在线时间
802 小时
注册时间
2009-10-13
最后登录
2025-5-28

楼主
xuning5176 发表于 2014-2-11 23:02:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如何用Matlab求解一个不是很简单的包括2阶偏导的偏微分方程,用什么函数!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB 偏微分方程 matla atlab 微分方程 如何

金融爱好者。

沙发
xuning5176 发表于 2014-2-11 23:03:15
急的要命呀!整了一天了
金融爱好者。

藤椅
蓝天影歌 学生认证  发表于 2014-2-13 10:31:07 来自手机
dsolve()函数吧

板凳
xuning5176 发表于 2014-2-13 14:30:18
蓝天影歌 发表于 2014-2-13 10:31
dsolve()函数吧
又整了两天,现在知道了,Matlab解偏微分方程的解析解比较困难,数值解很方便,就是dsolve函数。解析解可以用maple软件。目前正在学习中。
金融爱好者。

报纸
ulgsm4u 发表于 2014-2-16 17:01:47
xuning5176 发表于 2014-2-13 14:30
又整了两天,现在知道了,Matlab解偏微分方程的解析解比较困难,数值解很方便,就是dsolve函数。解析解可 ...
Mathematica 也许更容易上手。

地板
xuning5176 发表于 2014-2-17 10:43:45
ulgsm4u 发表于 2014-2-16 17:01
Mathematica 也许更容易上手。
谢谢!下一个试试
金融爱好者。

7
ulgsm4u 发表于 2014-2-18 12:02:59
xuning5176 发表于 2014-2-17 10:43
谢谢!下一个试试
感觉如何?


比 Matlab 顺手一点吧

8
xuning5176 发表于 2014-2-18 13:01:32
ulgsm4u 发表于 2014-2-18 12:02
感觉如何?
解析解要比Matlab顺手,但是我要求的那个偏微分方程用Maple求解不出来,目前正在研究Mathmetica
金融爱好者。

9
xuning5176 发表于 2014-2-18 13:57:39
ulgsm4u 发表于 2014-2-18 12:02
感觉如何?
求指教:
我用Mathematica  解下面的偏微分方程 为什么计算不出来呢

pde = D[P[t, r, s], t] + (k*(a - r) + n*s*r^2.5)*D[P[t, r, s], r] +
   0.5*s^2*r^2*D[P[t, r, s], r, r] - r*P[t, r, s] == 0
金融爱好者。

10
matlab-007 发表于 2015-2-15 22:17:09
function [u,x,y] = poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,tol,MaxIter)
%solve u_xx + u_yy + g(x,y)u = f(x,y)
% over the region D = [x0,xf,y0,yf] = {(x,y) |x0 <= x <= xf, y0 <= y <= yf}
% with the boundary Conditions:
% u(x0,y) = bx0(y), u(xf,y) = bxf(y)
% u(x,y0) = by0(x), u(x,yf) = byf(x)
% Mx = # of subintervals along x axis
% My = # of subintervals along y axis
% tol : error tolerance
% MaxIter: the maximum # of iterations
x0 = D(1); xf = D(2); y0 = D(3); yf = D(4);
dx = (xf - x0)/Mx; x = x0 + [0:Mx]*dx;
dy = (yf - y0)/My; y = y0 + [0:My]’*dy;
Mx1 = Mx + 1; My1 = My + 1;
%Boundary conditions
for m = 1:My1, u(m,[1 Mx1])=[bx0(y(m)) bxf(y(m))]; end %left/right side
for n = 1:Mx1, u([1 My1],n) = [by0(x(n)); byf(x(n))]; end %bottom/top
%initialize as the average of boundary values
sum_of_bv = sum(sum([u(2:My,[1 Mx1]) u([1 My1],2:Mx)’]));
u(2:My,2:Mx) = sum_of_bv/(2*(Mx + My - 2));
for i = 1:My
for j = 1:Mx
F(i,j) = f(x(j),y(i)); G(i,j) = g(x(j),y(i));
end
end
dx2 = dx*dx; dy2 = dy*dy; dxy2 = 2*(dx2 + dy2);
rx = dx2/dxy2; ry = dy2/dxy2; rxy = rx*dy2;
for itr = 1:MaxIter
for j = 2:Mx
for i = 2:My
u(i,j) = ry*(u(i,j + 1)+u(i,j - 1)) + rx*(u(i + 1,j)+u(i - 1,j))...
+ rxy*(G(i,j)*u(i,j)- F(i,j)); %Eq.(9.1.5a)
end
end
if itr > 1 & max(max(abs(u - u0))) < tol, break; end
u0 = u;
end
以上是possion.m文件,下面给个例子。
%solve_poisson in Example 9.1
f = inline(’0’,’x’,’y’); g = inline(’0’,’x’,’y’);
x0 = 0; xf = 4; Mx = 20; y0 = 0; yf = 4; My = 20;
bx0 = inline(’exp(y) - cos(y)’,’y’); %(E9.1.2a)
bxf = inline(’exp(y)*cos(4) - exp(4)*cos(y)’,’y’); %(E9.1.2b)
by0 = inline(’cos(x) - exp(x)’,’x’); %(E9.1.3a)
byf = inline(’exp(4)*cos(x) - exp(x)*cos(4)’,’x’); %(E9.1.3b)
D = [x0 xf y0 yf]; MaxIter = 500; tol = 1e-4;
[U,x,y] = poisson(f,g,bx0,bxf,by0,byf,D,Mx,My,tol,MaxIter);
clf, mesh(x,y,U), axis([0 4 0 4 -100 100])

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 06:09