[MATLAB] intégration de fonctions "logiqu

mndmvieira Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 visitor -
Bonjour,
J'essaye de calculer quelques intégrales en utilisant matlab mais je n'arrive pas.

Je reçoit toujours l'erreur "Operands to the || and && operators must be convertible to logical scalar values."

Mes fonctions sont les suivantes:

function v = phi(x,i)
global xt; //xt est un vecteur contenant des valeurs
if ((x<=xt(i)) && (x>=xt(i-1)))
v = ((x-xt(i))/(xt(i)-xt(i-1)));
else
v = 0;
end
end

et

function v = F(x)
v = exp(x);
end


J'ai besoin de calculer l'intégrale de F(x)*phi(x,i) entre 0 et 1. i est fixe!

j'ai essayé QUAD et TRAPZ mais elles donnent la même erreur:
"Operands to the || and && operators must be convertible to logical scalar values."

Je pense que c'est parce qu'on donne une intervalle (0:1/1000:1 par exemple) comme paramètre pour x au lieu de donner un nombre, ce qui fait que ma fonction phi n'arrive pas à faire ses calculs...

Quelqu'un peut m'aider svp??

1 réponse

damlegone32 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   29
 
Salut,

Oui tu as la bonne explication. Rajoute une boucle for dans la fonction phi qui parcours toutes les valeurs de x.
Ou alors tu peut utiliser la fonction find à la place de ton if/else :
v = zeros(size(x)); %initialisation du vecteur v
indices = find( (x<=xt(i)) && (x>=xt(i-1)));
v(indices) = ((x(indices)-xt(i))/(xt(i)-xt(i-1)));

++
0
visitor
 
find est trop lent, utilise l'indexage logique.
0