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 y=D(x)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
y=exp(x)*(4*x^2+4*x+14);
end
Cependant, j'ai les erreurs suivantes et je n'arrive pas à les enlever :
Pouvez vous m'aider???? 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
P.S : Voici la fonction TDMA solver
function x = TDMAsolver(a,b,c,d )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
%signifie TriDiagonal Matrix Algorithm Solver
%a,b,c,sont les vecteur colones de la matrice A tridiagonale, d est le
%vecteur second membre
%On modifie les composantes de la première rangée
n = length(b); % n est le nombre de lignes
c(1)=c(1)/b(1); % risque de division par zéro
d(1)=d(1)/b(1); % risque de division par zéro
for i = 2:n-1
temp=b(i)-a(i)*c(i-1);
c(i)=c(i)/temp;
d(i)=(d(i)-a(i)*d(i-1))/temp;
end
d(n)=(d(n)-a(n)*d(n-1))/(b(n)-a(n)*c(n-1));
x(n)= d(n);
for i = n-1:-1:1
x(i)=d(i)-c(i)*x(i+1);
end
end
-----