Bonjour, je dois faire un programme sous matlab pour afficher la valeur approchée d'une équation différentielle.
L'équation est la suivante : y"-2y'+5y=e^x*(4x²+4x+14)
J'ai fait le début du programme que voici :
function s=sol2(n, alpha, beta)
%On veut résoudre l'équation différentielle A(x)y"+B(x)y'+C(x)y=D(x)
%sur l'intervalle [alpha;beta]avec y(alpha) et y(beta) donnés
%on divise l'intervalle en n parties de pas 'h'
h=(beta-alpha)/n; %h est le pas; x(i)=i*h avec 1<=i<=n-1
b=(-2+5*h^2)*ones(1,n-1); %b(i)=-2*A(xi)+C(xi)*h^2
a=(1+h)*ones(1,n-1); %a(i)=A(xi)-B(xi)*h/2
c=(1-h)*ones(1,n-1); %c(i)=A(xi)-B(xi)*h/2
x=alpha:h:beta;d=D(x).*h.^2;
ya=TDMAsolver(a,b,c,d); %ya est la solution approchée
%y est la solution exacter
%affichage des courbe
s=plot(x,ya);
end
function y=D(x)
y=exp(x)*(4*x^2+4*x+14);
end
Cependant, j'ai les erreurs suivantes et je n'arrive pas à les enlever :
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
Error in ==> sol2>D at 21
y=exp(x)*(4*x^2+4*x+14);
Error in ==> sol2 at 11
x=alpha:h:beta;d=D(x).*h.^2;
Pouvez vous m'aider?
Merci
Je ne connais pas Matlab. Cependant, en examinant ton code, je ne comprends pas pourquoi tu utilises un point comme ici "d=D(x).*h.^2", alors qu'ailleurs, comme là "b=(-2+5*h^2)*ones(1,n-1); %b(i)=-2*A(xi)+C(xi)*h^2", tu n'en utilises aucun. Je pense que c'est ce que veut te dire le message "Error using ==> mpower, Inputs must be a scalar and a square matrix".
A +
Meme en l'enlevant j'ai les erreurs ci dessous donc je ne pense pas que cela soit ça en plus le point signifie que je le fait pour toutes les valeurs de x!
??? Error using ==> mpower
Inputs must be a scalar and a square matrix.
Error in ==> sol2>D at 21
y=exp(x)*(4*x^2+4*x+14);
Error in ==> sol2 at 11
x=alpha:h:beta;d=D(x)*h^2;
Merci tout de même
Qui t'a dit qu'il fallait les enlever ? Au contraire, au vu de ce que j'ai pu voir avec Google, je pense que la syntaxe exige qu'il y ait des points.
A +
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :