Solve system of differential equations

2 次查看(过去 30 天)
I am facing problem in solving the differential equation
is a vector () as shown in code and is also a vector (). x11=[x1,y1]. I want to solve , where represents derivative with respect to time. Can any one help me to find out x11 vs time. (Note and x11 are the same.) (Preferably use fsolve as I tried using it).
close all
clear all
clc
x01=-5;y01=-7;
x0=[x01,y01]';
beta=25;
syms x1 y1 t
x11=[x1,y1]';
c1=(1/2)*(x1-i*sin(t))^2+(3/2)*(y1-i*cos(t))^2;
row=100*exp(0.1*t);
g1=y1-x1-cos(t);
L1=c1-(1/row)*log(1-row*g1);
grad1 = gradient(L1,x11');
hess1 = hessian(L1,x11');
phi1=-(hess1)^(-1)*(grad1+diff(grad1,t));
u1=-beta*(hess1)^(-1)*x11+phi1
u1 = 
  2 个评论
Torsten
Torsten 2022-5-16
u1 is a 2x2 matrix, x11 is a 2x1 vector.
What do you mean by
x11dot = u1
?
Maybe you mean
x11dot = u1*x1
?
Yokuna
Yokuna 2022-5-16
Thanks for pointing out, I have corrected the question.

请先登录,再进行评论。

采纳的回答

Torsten
Torsten 2022-5-16
x01=-5;y01=-7;
x0=[x01,y01]';
beta=25;
syms x1 y1 t
x11=[x1,y1]';
c1=(1/2)*(x1-i*sin(t))^2+(3/2)*(y1-i*cos(t))^2;
row=100*exp(0.1*t);
g1=y1-x1-cos(t);
L1=c1-(1/row)*log(1-row*g1);
grad1 = gradient(L1,x11');
hess1 = hessian(L1,x11');
phi1=-(hess1)^(-1)*(grad1+diff(grad1,t));
u1=-beta*(hess1)^(-1)*x11+phi1
fun = matlabFunction(u1,'Vars',{t,x1,y1})
fun = @(t,y)fun(t,x1,y1);
y0 = [x01,y01];
tspan = [0 1]
[T,Y] = ode45(fun,tspan,y0)
plot(T,[real(Y),imag(Y)])
  2 个评论
Yokuna
Yokuna 2022-5-16
It gives error solving it through ode45, as the inputs needs to be floats.
Torsten
Torsten 2022-5-16
Replace
fun = @(t,y)fun(t,x1,y1);
by
fun = @(t,y)fun(t,y(1),y(2));

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by