[已解决] 求解微分方程

[复制链接]
上仙河神 发表于 2021-12-3 11:33:54
clc,clear
syms t
x = [0, 16.595, 27.677, 37.98, 48.586]';
dx = [1.6595, 0.5541, 0.34343, 0.35353, 0.38817]';
f = fittype('B/(A+2*x)+C*exp(-x/L)','independent','x','coefficients',{'A','B','C','L'});
[cfun, rsquare]=fit(x,dx,f); %根据自定义拟合函数f来拟合数据x,dx
xi=0:0.001:90;
dxi=cfun(xi);
plot(x,dx,'r*',xi,dxi,'b-');
ode=diff(x,t)==cfun.B/(cfun.A+2*x)+cfun.C*exp(-x/cfun.L);
cond=[x(0)==0,x(10)==16.595,x(30)==27.677,x(60)==37.89,x(90)==48.586,x(120)==60.231];
x(t)=dsolve(ode,cond)
ti=0:0.001:90;
x=x(ti);
plot(t,x,'r*',ti,xi,'b-');

以上是程序

1~9步做一个数据拟合,而后通过拟合得到的参数A,B,C,L,带入求解微分方程,运行时系统报错,给出的错误是

数组索引必须为正整数或逻辑值。
错误行:cond=[x(0)==0,x(10)==16.595,x(30)==27.677,x(60)==37.89,x(90)==48.586,x(120)==60.231];

删除了错误行中的x(0)==0;

继续报错

索引超出数组元素的数目(5)

应该如何解决呢?

最佳答案


WarnerChang 发表于 2021-12-3 12:05:47
clc,clear
syms t
x = [0, 16.595, 27.677, 37.98, 48.586]'; % , 0.015
dx = [1.6595, 0.5541, 0.34343, 0.35353, 0.38817]'; %, 0.087
f = fittype('B/(A+2*x)+C*exp(-x/L)','independent','x','coefficients',{'A','B','C','L'});
[cfun, rsquare]=fit(x,dx,f); %根据自定义拟合函数f来拟合数据x,dx
xi=0:0.001:90;
dxi=cfun(xi);
plot(x,dx,'r*',xi,dxi,'b-');

%%
syms x(t) t
ode=diff(x,t)==cfun.B/(cfun.A+2*x)+cfun.C*exp(-x/cfun.L);
cond=[x(0)==0,x(10)==16.595,x(30)==27.677,x(60)==37.89,x(90)==48.586,x(120)==60.231];
x(t)=dsolve(ode,cond)

解出来的值为空,也就是说没有满足条件的解
回复此楼

4 条回复


WarnerChang 发表于 2021-12-3 12:05:47
clc,clear
syms t
x = [0, 16.595, 27.677, 37.98, 48.586]'; % , 0.015
dx = [1.6595, 0.5541, 0.34343, 0.35353, 0.38817]'; %, 0.087
f = fittype('B/(A+2*x)+C*exp(-x/L)','independent','x','coefficients',{'A','B','C','L'});
[cfun, rsquare]=fit(x,dx,f); %根据自定义拟合函数f来拟合数据x,dx
xi=0:0.001:90;
dxi=cfun(xi);
plot(x,dx,'r*',xi,dxi,'b-');

%%
syms x(t) t
ode=diff(x,t)==cfun.B/(cfun.A+2*x)+cfun.C*exp(-x/cfun.L);
cond=[x(0)==0,x(10)==16.595,x(30)==27.677,x(60)==37.89,x(90)==48.586,x(120)==60.231];
x(t)=dsolve(ode,cond)

解出来的值为空,也就是说没有满足条件的解
回复此楼

上仙河神 发表于 2021-12-3 14:53:29
WarnerChang 发表于 2021-12-3 12:05
clc,clear
syms t
x = [0, 16.595, 27.677, 37.98, 48.586]'; % , 0.015

这是意味着没有解析解吗?

WarnerChang 发表于 2021-12-3 16:31:59
上仙河神 发表于 2021-12-3 14:53
这是意味着没有解析解吗?

是的呢

上仙河神 发表于 2021-12-3 18:58:09

感谢,我开始搞数值解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表