求解一个参数未知的非线性ODE
7次浏览(过去30天)
显示旧的注释
你好!我正在解决一个动力学参数未知A的ODE方程,我一直在使用python和深度学习来求解方程,并确定A的值,然而损失函数总是在10**4的数量级,参数A是错误的,我尝试了不同的超参数,但它不起作用。这是ODE方程:
顺铂/ dt = k1 * ((DP) ^ 2)
和k1 = k =
一个
e ^ (
1
/ R
(-
E / (
T
+ 273
)
)
), A是10**8的数量级,我有DP(t)数据。
我被困住了,我想知道用matlab解决这个问题的最佳方法是什么?或者还有其他类似的例子吗?
任何帮助都非常感谢!
0评论
接受的答案
Torsten
2022年4月19日
编辑:Torsten
2022年4月19日
%的时间点
Ts =[1 2 3 4 5 6 7 8];
Dp =[1000 700.32 580.42 408.20 317.38 281.18 198.15 100.12];
P0 = 1e1;
p = fminunc(@(p)fun(p,ts,DP),p0)
E = 111e3;
R = 8.314;
T = 371;
A = p*exp(E/(R*T))
情节(ts, DP)
持有在
情节(ts, 1. / (1 / DP(1) +一个* exp (e / (R * T)) * (ts-ts (1))));
函数obj = fun(p,ts,DP)
DP_model = 1/ (1/DP(1)+ p*(ts-ts(1)));
obj = sum((DP-DP_model).^2)
结束
更多答案(3)
山姆翟
2022年4月14日
编辑:山姆翟
2022年4月14日
这个控制方程已经给出了,你已经得到了
数据。
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964170/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964175/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964180/image.png)
目标是想要找到
一个
.
从
数据,你可以估计
.接下来,
可以从
微分方程
:
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964170/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964190/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964195/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964200/image.png)
现在,如果
R
,
E
而且
T
都是已知的
可以从
代数方程
:
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964210/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964205/image.png)
请核实一下。
如果
数据是均匀分布的,那么可以用这种方法进行估计
.
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964170/image.png)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964250/image.png)
T = -pi:(2*pi/100):pi;
X = sint;%假设Dp是正弦波
Y = gradient(x)/(2*pi/100);%估计dotDp,余弦波预期
情节(t x,“线宽”, 1.5 t, y,“线宽”, 1.5)
网格在
包含(“t”)
ylabel (x(t)和x " (t))
传奇('x(t) = sint ',x " (t) = cos(t),“位置”,“西北”)
![](http://www.tianjin-qmedu.com/ch/matlabcentral/answers/uploaded_files/964255/image.png)