0

Я пытаюсь программировать гладкий (?) Конус в MATLAB, гдеПрограммирование гладкий конус в MATLAB

г = х^2 + у^2

х^2 + у^2 = C

С = [1 1,4 1,7 2 2,2]

Я уже понял, что следует использовать полярные координаты, так как это круговая фигура

clear all, clc, clf 


theta = linspace(0,2*pi,1000) 
r = [1 1.4 1.7 2 2.2] % De olika radierna 

[r,theta] = meshgrid(r,theta) 
z = r 
x = r.*cos(theta) 
y = r.*sin(theta) 
figure 
grid on 
meshc(x,y,z) 
xlabel('x') 
ylabel('y') 
zlabel('z') 

Однако проблема в том, что она смоделирована, по-видимому, является более гладкой кривой, и я получаю линейную кривую, не уверен, что я правильно ее понял, а исходной проблемой не является

Если у кого-то есть книга Исчисление по Адамсу/Эссексу 8-е издание - это рисунок 12.5 на стр. 674, который я пытаюсь моделировать в Matlab.

+1

Несмотря на свое название, [ 'цилиндр '] (http://es.mathworks.com/help/matlab/ref/cylinder.html) может оказаться полезным. Вы можете указать произвольную кривую генератора на входе, создавая цилиндр –

ответ

0

Ваш код отличный, на самом деле. Я бы просто добавил точки с запятой, чтобы он не отображал все переменные (плюс он работает немного быстрее). Проблема в том, что вы построили значения Z непосредственно линейным образом. Вы действительно хотели сохранить квадратный член. Просто посмотрите на мой код, я только изменил 2 строки

clear all, clc, clf 

theta = linspace(0,2*pi,1000); 
%i added extra terms .1 through .7 
r = sqrt([.1,.2,.7,1,2,3,4,5]); 
%r = [1 1.4 1.7 2 2.2] % De olika radierna 

[r,theta] = meshgrid(r,theta) 
z = r.*r;  %this restores the curve 
%z = r 
x = r.*cos(theta); 
y = r.*sin(theta); 
figure 
grid on 
meshc(x,y,z) 
xlabel('x') 
ylabel('y') 
zlabel('z') 

Я добавил несколько больше очков, чтобы r поэтому кривая виднее

from book plot

Смежные вопросы