24小时热门版块排行榜    

查看: 315  |  回复: 2

dccpb

新虫 (小有名气)

[求助] 一个微分方程求解。。已有1人参与

偏微分方程的求解,,最好用matlab,,谢谢各位

一个微分方程求解。。


发自小木虫Android客户端
回复此楼
yeah!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

初值条件呢,就是说t=0时,x和y=?
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2016-02-17 14:23:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
dccpb: 金币+50, ★★★★★最佳答案 2016-02-17 17:58:11
由于不知道x和y的初值,程序写好了,初值你自己输入吧。
以下代码完整复制,粘贴进一个新建的m文件中,运行,在MATLAB主界面会提示输入初值,每输完一个,按一次回车。
CODE:
function solve_odes
clear all;clc
format long
tspan=0:10:10000;
length(tspan);
a=input('请输入t=0时x的数值,即x(0)=');
b=input('请输入t=0时y的数值,即y(0)=');
u0=[a b];
[t u]=ode45(@odes,tspan,u0);
figure(1)
plot(t,u(:,1),'b-',t,u(:,2),'r');
ans=[600 u(600/10+1,1) u(600/10+1,2);
    1800 u(1800/10+1,1) u(1800/10+1,2);
    3600 u(3600/10+1,1) u(3600/10+1,2);
    5400 u(5400/10+1,1) u(5400/10+1,2);
    7200 u(7200/10+1,1) u(7200/10+1,2);]



function f=odes(t,u)
x=u(1);
y=u(2);
f(1)=2.44e-14/x-1.8e-15/y-1.94e-7*exp(-0.11*t);
f(2)=2.73e-15/y-1.6e-13/x;
f=f';

比如以x(0)=1e-10和y(0)=1e-9为例,会得到如附图1那样的计算结果。
一个微分方程求解。。-1
附图1.png

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2016-02-17 14:38:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dccpb 的主题更新
信息提示
请填处理意见