2014-09-10 5 views
1

Je veux tracer cette fonction comme tracés 3D dans MATLAB pour deux cas, quelqu'un peut-il m'aider? Je vous remercie.Tracer une fonction en 3D en utilisant matlab

f(x,y) = (1-x) + ((2x - 1) y/k) 

cas 1)

x = [0,1] // closed unit interval with real values 
y = [0,1] // closed unit interval with real values 
k = 10 is a constant 

cas 2)

x has domain [0,1] // closed unit interval with real values 
y has domain [0,1] // closed unit interval with real values 
k has domain [0,1] // closed unit interval with real values 
+0

Avez-vous essayé quoi que ce soit vous-même? Lisez ceci et ensuite comme sur des questions spécifiques: http://www.mathworks.com.au/help/matlab/learn_matlab/plots.html#btbe4cc – David

Répondre

0

Essayez quelque chose comme ce qui suit:

%Case 1: 
x = 0:.05:1; 
n = numel(x); 
y = x'; 
X = repmat(x,n,1); 
Y = repmat(y,1,n); 
f = @(x,y) (1-x)+((2*x-1).*y)/10; 
v = f(X,Y); 
figure;mesh(x,y,v); 

%Case 2: 
x = 0:.05:1; 
n = numel(x); 
y = x'; 
X = repmat(x,n,1); 
Y = repmat(y,1,n); 
figure; 
for k = x 
    f = @(x,y) (1-x)+((2*x-1).*y)/k; 
    v = f(X,Y); 
    hold on; 
    mesh(x,y,v); 
end 

Si vous voulez tracer une surface au lieu d'un maillage, remplacez mesh par surf, si vous voulez un maillage plus fin (plus de détails et plus de fonctions tracées dans le cas 2), changez le x = 0:.05:1; au numéro plus petit comme x = 0:.01:1;, et si vous voulez vous voulez un maillage plus grossier (moins de détails et moins de fonctions tracées dans le cas 2) changez le nombre moyen de x = 0:.05:1; pour quelque chose de plus grand comme x = 0:.1:1;.

J'espère que cela résout votre problème!

1

Cela pourrait aider

[X,Y] = meshgrid(0:.1:1); 
K = 10; 
F = (ones(11) - X) + ((2*X - ones(11)) * Y/K); 
figure 
mesh(F); 

enter image description here

pour le cas 2

figure 
for K 0:.1:1 
    F = (ones(11) - X) + ((2*X - ones(11)) * Y/K); 
    hold on 
    mesh(F); 
end 

enter image description here

+1

C'est une solution intelligente, cependant, vous devez changer 'F = 1- X + ((2 * X - 1) * Y/K); 'à F = 1-X + ((2 * X - 1). * Y/K);' tracer la fonction dans la question! –

Questions connexes