Je souhaite évaluer l'intégrale double de ma fonction d'objectif (nommée myfunction
, voir ci-dessous) en utilisant la fonction de construction integral2
.Double intégrale de la fonction d'objectif
J'ai essayé d'exécuter ce script;
f = @(r,theta) myfunction(r,theta);
integral2(f,0,2,0,2*pi);
où myfunction
est la fonction suivante:
function fkt=myfunction(r,theta)
x=r.*cos(theta);
y=r.*sin(theta);
los(:,1)=x;
los(:,2)=y;
norm = (sum(sqrt(los(:,1).^2 + los(:,2).^2)));
fkt=norm*r;
end
Je fais l'intégrale en coordonnées polaires, que la raison pour laquelle FKT = norme * r.
Matlab me donne le message d'erreur suivant:
>> untitled2
Subscripted assignment dimension mismatch.
Error in myfunction (line 8)
los(:,1)=x;
Je ne peux pas comprendre, quel est le problème.
'los' n'a pas besoin d'être défini. Dans Matlab, il est défini implicitement. De plus, x est une matrice, donc votre exemple ne fonctionnerait pas. – yar
Merci Ratbert. J'ai essayé la deuxième solution et j'ai obtenu ce qui suit: >> sans titre2 {Avertissement: Les sorties de la fonction Integrand ne correspondaient pas à la tolérance requise lorsque les mêmes valeurs d'entrée étaient fournies en deux appels séparés avec des matrices d'entrée de taille différente. Vérifiez que la fonction est correctement vectorisée. > Dans integral2Calc> integral2t/tenseur (ligne 247) Dans integral2Calc> integral2t (ligne 55) Dans integral2Calc (ligne 9) Dans integral2 (ligne 106) Dans untitled2 (ligne 5)} –
Lorsque I a essayé la première solution (définissant los), j'ai l'erreur suivante: Incompatibilité de dimension d'assignation d'indice. Erreur dans ma fonction (ligne 5) los (:, 1) = x '; –