Построение трехмерного графика `sqrt (1 + 1 / (kr) ^ 2)` - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь построить следующее уравнение в MATLAB:

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

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

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

Теперь проблема заключается в создании значений для z.Я пытался просто ввести все уравнение, но это дает следующий результат:

>> 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 обрабатывать все остальное?

1 Ответ

3 голосов
/ 13 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...