Staram się wykreślić funkcję sfery poniżej, ale otrzymuję zły wynik
Oto kod, którego używam
x1 = [-10:1:10];
x2 = [-10:1:10];
y = zeros(1,21);
for i = 1:21
y(i) = sphere([x1(i) x2(i)]);
end
Y = meshgrid(y);
surf(x1,x2,Y);
colormap hsv;
sphere.m
function [y] = sphere(x)
d = length(x);
sum = 0;
for i = 1:d
sum = sum + x(i)^2;
end
y = sum;
end
Odpowiedzi:
0 dla odpowiedzi № 1Ze względu na kompletność twój kod nie jestdziała, ponieważ oceniasz swoją funkcję tylko na parach (x, x) dla niektórych x w [-10,10], więc nie pokrywasz całej domeny.
x1 = [-10:1:10];
x2 = [-10:1:10];
y = zeros(1,21);
for i = 1:21
for j=1:21
Y(i,j) = sphere([x1(i) x2(j)]);
end
end
surf(x1,x2,Y);
colormap hsv;
lub szybciej (ponieważ zawsze powinieneś unikać niepotrzebnych pętli ze względu na czas obliczeniowy):
x1 = meshgrid([-10:1:10]);
x2 = x1";
Y = x1.^2+x2.^2;
surf(x1,x2,Y)
0 dla odpowiedzi nr 2
sphere(10)
Jest to wbudowana funkcja MatLab.
Proszę ciesz się odpowiedzialnością.
Jeśli chcesz zobaczyć użycie kodu źródłowego: edit sphere
lub help sphere
kiedy funkcja sfery nie znajduje się na ścieżce.