Fonction à deux variables
Bonjour à tous,
J'essaie de tracer une fonction à deux variables f(x,y) sur MATLAB et je n'y arrive pas... J'ai une fonction dont l'expression change en fonction du signe de x, la voici (l et ang sont des paramètres que je ne fais pas varier) :
Code:
1 2 3 4 5 6 7 8 9 10 11
| function [d] = beam_length(x,y,l,ang)
if x>0
d=sqrt(l^2+(x^2+y^2)+2*l*sqrt(x^2+y^2)*sin(acos(x./sqrt(x^2+y^2))*(1-2*ang/pi)));
end
if x==0
d=sqrt(l^2+(x^2+y^2)+2*l*sqrt(x^2+y^2)*sin(pi/2*(1-2*ang/pi)));
end
if x<0
d=sqrt(l^2+(x^2+y^2)+2*l*sqrt(x^2+y^2)*sin((pi-acos(-x./sqrt(x^2+y^2)))*(1-2*ang/pi)));
end
end |
Je souhaite donc la représentation graphique de d=beam_length(x,y) en 3D. Pour cela je crée ma grille avec meshgrid et ensuite j'applique ma fonction:
Code:
1 2
| [x,y]=meshgrid(-0.5:0.01:0.5);
r=beam_length(x,y,1.414,pi/4) |
Error in ==> beam_length at 2
if x>0
??? Output argument "d" (and maybe others) not assigned during call to "beam_length.m (beam_length)".
Voila donc le problème, je pense qu'il fait le test de signe sur le vecteur x au lieu de le faire sur l'élément mais je n'arrive pas à changer cela.
Merci beaucoup pour votre aide