Inscription / Connexion Nouveau Sujet
Niveau Licence Maths 1e ann
Partager :

Programme sous matlab

Posté par
pipleton
15-02-12 à 10:53

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

Posté par
DHilbert
re : Programme sous matlab 15-02-12 à 11:23

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 +

Posté par
pipleton
re : Programme sous matlab 15-02-12 à 11:39

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

Posté par
DHilbert
re : Programme sous matlab 15-02-12 à 12:49

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 +

Posté par
DHilbert
re : Programme sous matlab 15-02-12 à 13:02

Mon dernier message dit n'importe quoi. L'usage du point est règlementé, comme le montre ce document : .

A +

Posté par
pipleton
re : Programme sous matlab 15-02-12 à 13:50

Donc ma ligne d=D(x).*h.^2; est correcte? Alors pourquoi j'ai une erreur?



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1768 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !