Calcul et tracé d'une surface 3D
Salut à tous
J'ai un petit problème d'implémentation.
Matlab refuse de prendre en compte ma fonction avec le message
??? Subscript indices must either be real positive integers or logicals
Pour le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11
| clear all
l=0.1; m=0.01; n=48; a=15; p=4; vpm=20600;
x=0.1:0.01:5;
y=0.1:0.01:4.9;
marge=zeros(length(x),1);
r2=((-vpm).*((((1+(y+l+m)).^(-n))-1)/(y+l+m)));
r1=((-vpm).*((((1+(x+l+m)).^(-n))-1)/(x+l+m)));
d=((a)-(n/p));
marge(x,y)=1-(((r2-r1)/r1)/(d));
[xx,yy]=meshgrid(x,y);
figure; surf(xx,yy,marge(x,y)); |
Je pense que l'erreur est basique mais je suis débutant.
Le but étant de tracer un plan en trois dimensions avec comme variables x,y (y<x car y décroissance de x) et marge(x,y)
Must be a matrice or a vector, help
Salut à tous
Encore une fois sur le même code :-(
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| l=0.1; m=0.01; n=48; a=15; p=4; vpm=20600;
x=0.001:0.001:0.1;
y=0.001:0.0001:0.1;
N1=length(x);
N2=length(y);
[xx,yy]=meshgrid(x,y);
marge=zeros(length(x),length(y));
for i=1:N1
for j=1:N2
x(i)=-vpm*(((1+((i./1000)+l+m)).^(-n)-1)./((i./1000)+l+m));
y(j)=-vpm*(((1+(((j+9)./10000)+l+m)).^(-n)-1)./((j+9)./10000)+l+m);
d=a-(n/p);
marge(i,j)=1-(((y(j)-x(i))./x(i))./d);
end
end
x=Points(:,0.001:0.001:0.1);
y=Points(:,0.001:0.0001:0.1);
dx=1;
dy=1;
x_edge=[floor(min(x)):dx:ceil(max(x))];
y_edge=[floor(min(y)):dy:ceil(max(y))];
[X,Y]=meshgrid(x_edge,y_edge);
Z=griddata(x,y,marge(i,j),X,Y);figure; |
Le but étant de calculer une marge à partir de deux variable, x et y, qui sont eux-mêmes deux taux.
Je pense que le code est bon après avoir eu l'aide hier de monsieurs sympathiques.
Il me reste un problème
Code:
1 2 3 4 5
| ??? Error using ==> surf at 75
Z must be a matrix, not a scalar or vector.
Error in ==> mger at 17
figure; surf(xx,yy,Z); |
J'ai tenté de le résoudre avec des Points et griddata sans succès, je veux juste faire un plan trois dimensions, la marge(i,j) en fonction de x et y. (pas x(i) et pas y(j))
Code:
1 2 3 4
| ??? Undefined variable Points.
Error in ==> mger at 16
x=Points(:,0.001:0.001:0.1); |
Molto grazie!
Rémi