Aide matlab
mansour
-
victor -
victor -
Bonjour,
Pouvez-vous svp, me dire pourquoi le second cas ne marche
dans le petit programme matlab ci-joint.
Merci. ---------------
syms t x
syms x0 v0
syms m c k
fprintf(' -------: 1st case --- \n ')
equ = '2*D2x + 6*Dx + 17*x = 0';
ic1 = 'x(0) = 2';
ic2 = 'Dx(0) = 5';
x1 = dsolve(equ,ic1,ic2)
fprintf('\n')
fprintf(' -------: 2nd case --- \n ')
syms t x
syms x0 v0
syms m c k
equ = 'm*D2x + c*Dx + k*x = 0';
ic1 = 'x(0) = x0';
ic2 = 'Dx(0) = v0';
equ = subs(equ,{m,c,k},{2,6,17})
ic1 = subs(ic1,{x0},{2})
ic2 = subs(ic2,{v0},{5})
x2 = dsolve(equ,ic1,ic2)
Pouvez-vous svp, me dire pourquoi le second cas ne marche
dans le petit programme matlab ci-joint.
Merci. ---------------
syms t x
syms x0 v0
syms m c k
fprintf(' -------: 1st case --- \n ')
equ = '2*D2x + 6*Dx + 17*x = 0';
ic1 = 'x(0) = 2';
ic2 = 'Dx(0) = 5';
x1 = dsolve(equ,ic1,ic2)
fprintf('\n')
fprintf(' -------: 2nd case --- \n ')
syms t x
syms x0 v0
syms m c k
equ = 'm*D2x + c*Dx + k*x = 0';
ic1 = 'x(0) = x0';
ic2 = 'Dx(0) = v0';
equ = subs(equ,{m,c,k},{2,6,17})
ic1 = subs(ic1,{x0},{2})
ic2 = subs(ic2,{v0},{5})
x2 = dsolve(equ,ic1,ic2)
A voir également:
- Aide matlab
- Gnu octave matlab - Télécharger - Édition & Programmation
- Intervalle sur matlab ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Problème diffusion matlab - Forum Matlab
- Matlab 6.5 download - Forum Windows
1 réponse
Les arguments à passer à dsolve sont des strings, non pas des syms.
Tu peux résoudre l'équation et faire la substitution ensuite, ce qui n'est pas la meilleure solution je pense
Tu peux résoudre l'équation et faire la substitution ensuite, ce qui n'est pas la meilleure solution je pense
equ = 'm*D2x + c*Dx + k*x = 0';Sinon, tu passes les paramètres directement en argument
ic1 = 'x(0) = x0';
ic2 = 'Dx(0) = v0';
x2 = dsolve(equ,ic1,ic2);
syms m c k x0 v0;
x2=subs(x2,{m,c,k,x0,v0},{2,6,17,2,5});
ic1=@(x0)(['x(0)=',num2str(x0)]);Dans tous les cas, quand tu as une question, demande sur un site ou il y a des gens compétents fin supprimée.
ic2=@(v0)(['Dx(0)=',num2str(v0)]);
equ=@(m,c,k)([num2str(m),'*D2x+',num2str(c),'*Dx+',num2str(k),'*x=0']);
x2=dsolve(equ(2,6,17),ic1(2),ic2(5));