2012-02-13 2 views
1

Я пытаюсь построить следующее уравнение в MATLAB:Построение 3D-график `SQRT (1 + 1/(кг)^2)`

ratio = sqrt(1+1/(kr)^2)

С к и р о х и y и отношение по оси z. Я использовал meshgrid создать матрицу значений х и у, изменяющихся от 1 до 10:

[x,y] = meshgrid([1:1:10],[1:1:10]); 

Теперь задача заключается в создании ценности для г. Я пытался просто ввести все уравнение, но дает этот результат:

>> Z = sqrt(1+1/(x .* y)^2)??? 
Error using ==> mldivide 
Matrix dimensions must agree. 

Так что я сделал это пойти через весь процесс вручную, который производит правильный график в конце:

z = z^2; 
z = 1 ./ z; 
z = 1 + z; 
z = sqrt(z); 
mesh(x,y,z) 

Есть ли более элегантный способ сделать это? Или способ ввести уравнение и позволить MATLAB справиться с остальными?

ответ

3

Попробуйте это:

Z = sqrt(1+1./(x .* y).^2); 
surf(Z); 

Проблема, что у вас была связана с использованием / вместо ./ и ^2 вместо .^2

+0

Вот оно! Спасибо! Я не думал о том, чтобы сделать все компоненты операций мудрыми ... – jodles

+1

@jodles youre welcome. Пожалуйста, подумайте о том, чтобы принять ответ, если он вам помог. –

+0

Я согласен, это просто Stackexchange не позволит мне принять до 11 минут или около того ... – jodles

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