24小时热门版块排行榜    

查看: 1024  |  回复: 6

wahrrysu

木虫 (正式写手)

[求助] 请 月只蓝 进来看一下

你好,上次请您帮忙计算的方程(http://muchong.com/bbs/viewthread.php?tid=6227965),由于偏差较大,想在原来方程的基础上增加一个变量w,其中w^2=lamda*delta*R*T/(2*Nv*Eb^2*DI)

原方程 改为  v=M0*delta*Vm*(1/Rr-3fp/rp)(1+w^2*v^2)/(1+lamda*M0*Cs*w^2*v^2)
                   v=dr/dt
非常感谢!
回复此楼

» 本帖@通知

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

ben_ladeng: 专家考核 2013-08-16 18:55:20
现在的方程是:
dr/dt=M0*delta*Vm*(1/Rr-3fp/rp)(1+w^2*v^2)/(1+lamda*M0*Cs*w^2*(dr/dt)^2),可以看到,待求解的dr/dt的等号右端包含了一个dr/dt的平方,这样dr/dt是隐式的,无法用ode函数求解。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2013-08-16 12:58:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wahrrysu

木虫 (正式写手)

引用回帖:
2楼: Originally posted by 月只蓝 at 2013-08-16 12:58:42
现在的方程是:
dr/dt=M0*delta*Vm*(1/Rr-3fp/rp)(1+w^2*v^2)/(1+lamda*M0*Cs*w^2*(dr/dt)^2),可以看到,待求解的dr/dt的等号右端包含了一个dr/dt的平方,这样dr/dt是隐式的,无法用ode函数求解。

请问这个方程有其它方法可以解么?
3楼2013-08-16 14:04:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

ben_ladeng: 专家考核 2013-08-16 18:55:26
引用回帖:
3楼: Originally posted by wahrrysu at 2013-08-16 14:04:47
请问这个方程有其它方法可以解么?...

比如直接差分法,用差商替代导数,把原方程在要求解的区间上离散成代数方程组,解非线性代数方程组。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2013-08-16 18:41:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wahrrysu

木虫 (正式写手)

引用回帖:
4楼: Originally posted by 月只蓝 at 2013-08-16 18:41:00
比如直接差分法,用差商替代导数,把原方程在要求解的区间上离散成代数方程组,解非线性代数方程组。...

感谢您耐心的回复,听上去很复杂啊,您有时间的话能帮我写一个matlab的代码么?像上次那样的就行,现在我把金币提高了,因为除了这个,我也没有可以报答您的了,非常感谢!!
5楼2013-08-16 19:31:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
6楼2013-08-16 20:01:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
csgt0: 金币+2, 谢谢 2013-08-17 09:42:30
ben_ladeng: 专家考核 2013-08-17 15:10:15
wahrrysu: 金币+150, ★★★★★最佳答案 2013-08-18 19:02:21
引用回帖:
5楼: Originally posted by wahrrysu at 2013-08-16 19:31:31
感谢您耐心的回复,听上去很复杂啊,您有时间的话能帮我写一个matlab的代码么?像上次那样的就行,现在我把金币提高了,因为除了这个,我也没有可以报答您的了,非常感谢!!...

不必客气。我之前很少涉及解隐式的常微分方程,其实MATLAB有求解隐式常微分方程的函数,程序如下,结果见附图:
CODE:
function solve_eq
clear all;clc
format long
global T

T=1200;
Rr0=10e-9;
dRr0=0;
tspan=500:3500;
[t Rr]=ode15i(@dRrdt,tspan,Rr0,dRr0);
figure,plot(t,Rr,'b'),xlabel('t'),ylabel('Rr'),axis([450 3650 min(Rr)-(max(Rr)-min(Rr))/10 max(Rr)+(max(Rr)-min(Rr))/10]);
[t Rr];


function f=dRrdt(t,Rr,dRr)
global T

R=8.314;
phi=0.7;
DI=2.14*exp(-158840/R/T);
DNb=0.83*exp(-266500/R/T);
sigma=0.8;
delta=1e-9;
Vm=6.77e-6;
b=2.5e-10;
Eb=19.3e3;
Nv=1e15;
rp=1e-8;

M0=phi*DI*Vm*delta/(b^2*R*T);
lamda=2*delta*Nv*R^2*T^2*(sinh(Eb/R/T)-Eb/R/T)/(Eb*DI);

x0=[0.01 0.3];
x=fsolve(@nonfun,x0,optimset('Display','Off'));
Cs=x(1);
fp=(0.021-Cs)*0.0114;

%-----------------------------------------%
w2=lamda*delta*R*T/(2*Nv*Eb^2*DI);
f=dRr-M0*delta*Vm*(1/Rr-3*fp/rp)*(1+w2*dRr^2)/(1+lamda*M0*Cs*w2*dRr^2);





function ff=nonfun(x)
global T
Cs=x(1);
C=x(2);
ff(1)=Cs*C-10^(5.17-9810/T+(540.6/T-0.1651)*0.33);
ff(2)=(0.021-Cs)/(0.33-C)-92.9064/12.011;

请 月只蓝 进来看一下
附图1.jpg

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