Solving a non linear ODE with unknown parameter
이전 댓글 표시
Hello ! I am working on solving an ODE equation with an unknown kinetic parameter A. I have been using python and deep learning to solve the equation and also determine the value of A , however the loss function is always in the order of 10**4 and the paramter A is wrong , I tried with different hyperparamters but it´s not working. this is the ODE equation : dDP/dt=-k1*([DP]^2) and k1=k= Ae^(1/R(-E/(T+273))) , A is in the order of 10**8, I have DP(t) data.
I am stuck and I would like to know what´s the best way to solve this using matlab ? or is there any examples similar to my problem ?
Any help is highly appreciated !
채택된 답변
추가 답변 (3개)
Torsten
2022년 4월 14일
Your ODE for D_p gives
D_p = 1/(1/D_p0 + k1*(t-t0))
where D_p0 = D_p(t0).
Now you can apply "lsqcurvefit" to fit the unknown parameter A.
This governing equations are given and you have acquired the
data.


The objective is want to find A.
From the
data, you can possibly estimate for
. Next,
can be determined from the differential equation:
can be determined from the differential equation:
Now, if R, E and T are known, then
can be determined from the algebraic equation:

Please verify this.
If the
data is uniformly distributed, then you can use this method to estimate
.
.t = -pi:(2*pi/100):pi;
x = sin(t); % assume Dp is a sine wave
y = gradient(x)/(2*pi/100); % estimate dotDp, a cosine wave is expected
plot(t, x, 'linewidth', 1.5, t, y, 'linewidth', 1.5)
grid on
xlabel('t')
ylabel('x(t) and x''(t)')
legend('x(t) = sin(t)', 'x''(t) = cos(t)', 'location', 'northwest')

David Willingham
2022년 4월 14일
0 개 추천
Hi,
Have you seen this example for solving ODE's using Deep Learning in MATLAB?
카테고리
도움말 센터 및 File Exchange에서 Problem-Based Nonlinear Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!