[MATLAB] intégration de fonctions "logiqu
mndmvieira
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
visitor -
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??
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??
A voir également:
- [MATLAB] intégration de fonctions "logiqu
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Notice de fonctionnement - Guide
- Durée de fonctionnement processeur - Forum Processeur
- Fonctions excel en anglais - Guide
- Main a cessé de fonctionner autocom ✓ - Forum Windows
1 réponse
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)));
++
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)));
++
visitor
find est trop lent, utilise l'indexage logique.