Trigonometric functions using dsolve
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This code works well. How can I use sin(theta2) instead of theta2. Its giving me error.
syms theta1(t) theta2(t) theta3(t)
ode1= diff(theta1)== 1+theta2-theta1;
ode2= diff(theta2)==1+ theta3-theta2;
ode3= diff(theta3)== theta2-theta3;
odes=[ode1;ode2; ode3];
S=dsolve(odes);
theta1Sol(t) = S.theta1;
theta2Sol(t)=S.theta2;
theta3Sol(t)=S.theta3;
cond1 = theta1(0) == 0.1;
cond2 = theta2(0) == 0.3;
cond3 = theta3(0) == 0.2;
conds = [cond1; cond2; cond3];
[theta1Sol(t),theta2Sol(t), theta3Sol] = dsolve(odes,conds)
fplot(theta1Sol)
hold on
fplot(theta2Sol)
grid on
fplot(theta3Sol)
grid on
legend('theta1Sol','theta2Sol','theta2Sol','Location','best')
7 commentaires
Réponses (2)
Walter Roberson
le 5 Avr 2022
syms theta_1(t) sin_theta_2(t) theta_3(t)
ode1 = diff(theta_1) == 1 + sin_theta_2 - theta_1;
ode2 = diff(sin_theta_2) == 1 + theta_3 - sin_theta_2;
ode3 = diff(theta_3) == sin_theta_2 - theta_3;
odes = [ode1; ode2; ode3];
Snc = dsolve(odes)
theta_1_Sol_nocond(t) = simplify(Snc.theta_1)
theta_2_Sol_nocond(t) = simplify(asin(Snc.sin_theta_2))
theta_3_Sol_nocond(t) = simplify(Snc.theta_3)
cond1 = theta_1(0) == 0.1;
cond2 = sin_theta_2(0) == 0.3;
cond3 = theta_3(0) == 0.2;
conds = [cond1; cond2; cond3];
Sc = dsolve(odes, conds);
theta_1_Sol_cond(t) = simplify(Sc.theta_1)
theta_2_Sol_cond(t) = simplify(asin(Sc.sin_theta_2))
theta_3_Sol_cond(t) = simplify(Sc.theta_3)
fplot(theta_1_Sol_cond)
hold on
fplot(theta_2_Sol_cond)
grid on
fplot(theta_3_Sol_cond)
grid on
legend('theta1Sol','theta2Sol','theta2Sol','Location','best')
figure
lowerbound = solve(Sc.sin_theta_2 == -1)
upperbound = solve(Sc.sin_theta_2 == 1)
bounds = double([lowerbound, upperbound])
fplot(theta_1_Sol_cond, bounds)
hold on
fplot(theta_2_Sol_cond, bounds)
grid on
fplot(theta_3_Sol_cond, bounds)
grid on
legend('theta1Sol','theta2Sol','theta2Sol','Location','best')
2 commentaires
Walter Roberson
le 5 Avr 2022
At the time I was composing this, there had not been a reply indicating where the sin() was intended to go.
Torsten
le 5 Avr 2022
fun = @(t,theta) [1+sin(theta(2))-theta(1);1+theta(3)-theta(2);theta(2)-theta(3)];
theta0 = [0.1, 0.3, 0.2];
tspan = [0,2*pi]
[t,theta] = ode45(fun,tspan,theta0)
plot(t,theta)
0 commentaires
Voir également
Catégories
En savoir plus sur Ordinary Differential Equations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




