24小时热门版块排行榜    

查看: 2240  |  回复: 9

津津爱睡觉

金虫 (小有名气)

[求助] Matlab小白,急需计算一个模型,求懂的大神看看怎么修改。万分感谢 已有2人参与

Matlab小白,急需计算一个模型,解微分方程组,求懂的大神看看怎么修改。万分感谢
function dy = funct(t,y)

I = 50 % mA
F = 96487 % C/mol
c0 = 10 % mM
Vol = 3.344 % ml
Q = 6.5 % ml/min
A = 33.75 % cm2

syms x
eqn = 0.86*x+0.4*(x*exp(-asinh(theta/(-2*x)))+x*exp(asinh(theta/(-2*x))))==y(3)
cma = double(solve(eqn,x))

cmion = (y(3)-0.86*cma)/0.4

phi_sp = asinh(-3/y(2))
phi_ele = asinh(-3/cma)

phi_mem = (I*170)/(-1.12*F*(cma.*cosh(phi_ele)+y(2).*cosh(phi_sp)))

J = -(1.12*1e-3/170)*(2*cma.*cosh(phi_ele)-2*y(2).*cosh(phi_sp))+3*phi_mem

dy=zeros(3,1);
dy(1) = (1e4*I/A)/(116*F)

dy(2) = -J/(250e-6*0.5)+(c0-y(2))/(0.5*(Vol/Q)*60)

dy(3)  = J/(290*1e-6)

end
clear all;
c0=10
tspan=[0 600]
[t,y] = ode45(@funct,tspan,[0 c0 1.66*c0])

plot(t, y(:,2))
xlabel('t'),ylabel('c')

错误使用 odearguments (line 92)
FUNCT 返回的矢量的长度为 2,但初始条件矢量的长度为 3。FUNCT 返回的矢量和初始条件矢量的元素数目必须相同。

出错 ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
回复此楼
有梦一起追
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chendequan

铁虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
theta值未知,eqn方程求解cma可能会遇到无解情况,建议提供公式资料看看

» 本帖已获得的红花(最新10朵)

QQ:516477448,真心帮助解决MATLAB相关问题,提供详细资料,Word文档明确具体问题及要求,尽力而为!
2楼2019-06-23 10:06:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

津津爱睡觉

金虫 (小有名气)

引用回帖:
2楼: Originally posted by chendequan at 2019-06-23 10:06:51
theta值未知,eqn方程求解cma可能会遇到无解情况,建议提供公式资料看看

function dydt = funct(t,x, y)

I = 50; % mA
F = 96487; % C/mol
c0 = 10; % mM
Vol = 3.344; % ml
Q = 6.5; % ml/min
A = 33.75; % cm2
y1=y(1); y2=y(2); y3=y(3);
y3 = 0.86*x+0.4*(x*exp(-asinh(y1/(-2*x)))+x*exp(asinh(y1/(-2*x))))

phi_sp = asinh(-3/y2)
phi_ele = asinh(-3/x)

phi_mem=(I*170)/(-1.12*F*(x*cosh(phi_ele)+y2*cosh(phi_sp)))

J =-(1.12*1e-3/170)*(2*x*cosh(phi_ele)-2*y2*cosh(phi_sp))+3*phi_mem

dy1dt = (1e4*I/A)/(116*F)

dy2dt = -J/(250e-6*0.5)+(c0-y2)/(0.5*(Vol/Q)*60)

dy3dt = J/(290*1e-6)

end
clear all;
I = 50; % mA
F = 96487; % C/mol
c0 = 10; % mM
Vol = 3.344; % ml
Q = 6.5; % ml/min
A = 33.75; % cm2
tspan=[0 600]
x0=c0

[t,x,y] = ode45(@funct,tspan, c0, [0 c0 1.66*c0])

plot(t, theta)
xlabel('t'),ylabel('c')

出错 ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

改了程序,现在错误变成这样。公式就是想解一个三个未知数的微分方程组,但是里面有未知数
有梦一起追
3楼2019-06-23 20:57:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

津津爱睡觉

金虫 (小有名气)

引用回帖:
2楼: Originally posted by chendequan at 2019-06-23 10:06:51
theta值未知,eqn方程求解cma可能会遇到无解情况,建议提供公式资料看看

function dydt = funct(t,x, y)

I = 50; % mA
F = 96487; % C/mol
c0 = 10; % mM
Vol = 3.344; % ml
Q = 6.5; % ml/min
A = 33.75; % cm2
y1=y(1); y2=y(2); y3=y(3);
y3 = 0.86*x+0.4*(x*exp(-asinh(y1/(-2*x)))+x*exp(asinh(y1/(-2*x))))

phi_sp = asinh(-3/y2)
phi_ele = asinh(-3/x)

phi_mem=(I*170)/(-1.12*F*(x*cosh(phi_ele)+y2*cosh(phi_sp)))

J =-(1.12*1e-3/170)*(2*x*cosh(phi_ele)-2*y2*cosh(phi_sp))+3*phi_mem

dy1dt = (1e4*I/A)/(116*F)

dy2dt = -J/(250e-6*0.5)+(c0-y2)/(0.5*(Vol/Q)*60)

dy3dt = J/(290*1e-6)

end
clear all;
I = 50; % mA
F = 96487; % C/mol
c0 = 10; % mM
Vol = 3.344; % ml
Q = 6.5; % ml/min
A = 33.75; % cm2
tspan=[0 600]
x0=c0

[t,x,y] = ode45(@funct,tspan, c0, [0 c0 1.66*c0])

plot(t, theta)
xlabel('t'),ylabel('c')

出错 ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

改了程序,现在错误变成这样。公式就是想解一个三个未知数的微分方程组,但是里面有未知数
有梦一起追
4楼2019-06-23 20:57:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

津津爱睡觉

金虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by chendequan at 2019-06-23 10:06:51
theta值未知,eqn方程求解cma可能会遇到无解情况,建议提供公式资料看看

非常感谢,能帮忙解决必有重谢
有梦一起追
5楼2019-06-23 20:58:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hzlhm

至尊木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
你没有说清楚,theta是具体的值,还是一个范围值,如是范围值应该用循环语句求出t、y的值。
QQ:2120156492
6楼2019-06-24 13:02:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hzlhm

至尊木虫 (著名写手)

【答案】应助回帖

建议你,把具体的微分方程组和条件贴出来看一看。这样就可以减少一些盲目性。
QQ:2120156492
7楼2019-06-24 13:20:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chendequan

铁虫 (小有名气)

【答案】应助回帖

引用回帖:
5楼: Originally posted by 津津爱睡觉 at 2019-06-23 20:58:43
非常感谢,能帮忙解决必有重谢...

个人签名里面有我联系方式,问题资料要齐全,要求要具体详细,这样便于问题及时解决。
QQ:516477448,真心帮助解决MATLAB相关问题,提供详细资料,Word文档明确具体问题及要求,尽力而为!
8楼2019-06-24 15:28:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

津津爱睡觉

金虫 (小有名气)

引用回帖:
7楼: Originally posted by hzlhm at 2019-06-24 13:20:05
建议你,把具体的微分方程组和条件贴出来看一看。这样就可以减少一些盲目性。

dy(1)=a*y(1)+b*y(2);
y(2)=c*y(1)+d*y(3);
dy(3)=-e*y(2)*(y(3)-t)/y(1);

function daedi
a=-0.2; b=0.5; c=0.1; d=-1; e=0.3;
y0=[0.8;0.5;0.1]; %初值,y0(2)=0.5是猜测值
options=optimset('display','off');
y0(2)=fsolve(@(y2)y2-(c*y0(1)+d*y0(3)),y0(2),options); %求出相容的初值y0(2)
% 求解微分方程
[t,y]=ode45(@(t,y)myodefun(t,y,a,b,c,d,e),[0,20],y0);
figure('numbertitle','off','name','DAE 求解示例 方法1.2')
plot(t,y)
legend('y1(t)','y2(t)','y3(t)')

function dy=myodefun(t,y,a,b,c,d,e)
dy=zeros(3,1); % dy(2)=0很重要,否则反求出y(2)后会被积分
% 先求解代数方程,顺序很重要
cons=@(y2)y2-(c*y(1)+d*y(3)); % 隐式代数约束
options=optimset('display','off'); % 关闭提示
y(2)=fsolve(cons,y(2),options); %用上次的y(2)作为猜测值
dy(1)=a*y(1)+b*y(2);
dy(3)=-e*y(2)*(y(3)-t)/y(1);
现在通过这个例子已经可以运行,想问您怎么继续编写这个例子中y(2)随t的动态变化呢
感谢感谢
有梦一起追
9楼2019-06-28 04:59:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

津津爱睡觉

金虫 (小有名气)

引用回帖:
8楼: Originally posted by chendequan at 2019-06-24 15:28:52
个人签名里面有我联系方式,问题资料要齐全,要求要具体详细,这样便于问题及时解决。...

dy(1)=a*y(1)+b*y(2);
y(2)=c*y(1)+d*y(3);
dy(3)=-e*y(2)*(y(3)-t)/y(1);

function daedi
a=-0.2; b=0.5; c=0.1; d=-1; e=0.3;
y0=[0.8;0.5;0.1]; %初值,y0(2)=0.5是猜测值
options=optimset('display','off');
y0(2)=fsolve(@(y2)y2-(c*y0(1)+d*y0(3)),y0(2),options); %求出相容的初值y0(2)
% 求解微分方程
[t,y]=ode45(@(t,y)myodefun(t,y,a,b,c,d,e),[0,20],y0);
figure('numbertitle','off','name','DAE 求解示例 方法1.2')
plot(t,y)
legend('y1(t)','y2(t)','y3(t)')

function dy=myodefun(t,y,a,b,c,d,e)
dy=zeros(3,1); % dy(2)=0很重要,否则反求出y(2)后会被积分
% 先求解代数方程,顺序很重要
cons=@(y2)y2-(c*y(1)+d*y(3)); % 隐式代数约束
options=optimset('display','off'); % 关闭提示
y(2)=fsolve(cons,y(2),options); %用上次的y(2)作为猜测值
dy(1)=a*y(1)+b*y(2);
dy(3)=-e*y(2)*(y(3)-t)/y(1);
现在通过这个例子已经可以运行,想问您怎么继续编写这个例子中y(2)随t的动态变化呢
感谢感谢
有梦一起追
10楼2019-06-28 05:02:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 津津爱睡觉 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 HEQlVqMTIA7d 2026-08-07 5/250 2026-08-08 08:59 by 6vVgjDL4CnGu
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 HEQlVqMTIA7d 2026-08-07 4/200 2026-08-08 08:27 by 6vVgjDL4CnGu
[基金申请] 基金中了 +14 laoda193707 2026-08-06 14/700 2026-08-08 00:23 by 实验小白ha
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 听说今天filecode变了 +24 布布和一二 2026-08-06 47/2350 2026-08-07 16:02 by zhiyanjiang
[基金申请] filecode与中标关系的预测 +3 布布和一二 2026-08-07 3/150 2026-08-07 15:09 by gltch
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[论文投稿] 十年后又回来了,论文投稿求助 +4 哈哈114477 2026-08-01 4/200 2026-08-07 14:39 by jgy194592
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] 关于豆爷回答的JTJC与%2F数量 +4 yang182083 2026-08-06 6/300 2026-08-07 12:43 by 虫友是什么虫
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见