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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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