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

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