Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
Discussion fermée
#1 10-04-2017 17:26:43
- Alex0909
- Invité
Difference entre deux codes scilab
Bonjour,
Je débute sous scilab et il y a une chose que je n'arrive pas à comprendre: les deux codes suivants font la même chose (pour moi) et pour autant je n'ai pas la même courbe. Il s'agit de tracer la courbe de f(x,y)=x^2+y^2. Il y a quelque chose que je dois mal comprendre, pouvez-vous l'aider s'il vous plait:
Code 1
x=[-10:1:10];
y=x;
z=x'*x+y'*y;
plot3d(x,y,z)
Code 2
function [z]=f(x,y)
z=x^2+y^2;
endfunction
x=[-10:1:10];
y=x;
fplot3d(x,y,f)
#2 04-05-2017 09:30:36
- PTRK
- Membre
- Inscription : 14-12-2016
- Messages : 101
Re : Difference entre deux codes scilab
Ton problème vient de tes arguments à plot3d :
x,y :row vectors of sizes n1 and n2 (x-axis and y-axis coordinates). These coordinates must be monotone.
z: matrix of size (n1,n2). z(i,j) is the value of the surface at the point (x(i),y(j)).
xf,yf,zf :matrices of size (nf,n). They define the facets used to draw the surface. There are n facets. Each facet i is defined by a polygon with nf points. The x-axis, y-axis and z-axis coordinates of the points of the ith facet are given respectively by xf(:,i), yf(:,i) and zf(:,i).
On se trouve dans le 1er cas : x,y sont des vecteurs. alors z doit être une matrice tel que $z(i,j) = f(x(i),y(j))$. Or lorsque tu calcules $x'*x$, tu ne calcules pas x.^2 c'est à dire le même vecteur dont tous les termes sont au carré, mais une matrice z tel que $z(i,j) = x(i)*x(j)$ . en effet x en scilab est par défaut un vecteur ligne donc x' est un vecteur colonne donc $x'*x = \begin{pmatrix}x_1\\...\\x_n\end{pmatrix}(x_1,...,x_n) = \begin{pmatrix}x_1^2 &x_1x_2 &... &x_1x_n\\... & ... &...&... \\
x_nx_1&...&x_nx_{n-1}&x_n^2\end{pmatrix}$. Et donc pour le code 1 on a $z(i,j) = x(i)x(j) + y(i)y(j) \not = x(i)^2 + y(j)^2$
Alors que le code 2 calcule bien $z(i,j) = x(i)^2+y(j)^2$ grace à l'opérateur point qui apres un vecteur ou une matrice, applique l'opérateur suivant terme à terme : Si x est un vecteur alors x^2 : vecteur au carré : pas de sens mais x.^2 : vecteur dont les termes valent ceux de x au carré
Je te propose comme correction:
Dernière modification par PTRK (04-05-2017 09:55:33)
Hors ligne
Pages : 1
Discussion fermée