2017-02-21 18 views
0

У меня есть эта функция:Различия в графиках 3D сюжета с функциями

enter image description here

В WolframAlpha Это Graph:

Wolfram

И в MatLab я использую этот код:

clc; clear; close all 
[x,y]=meshgrid(-1:.1:1); 
e = exp(1); 
z=(e^-x^2)+((e^-2)*(y^2)) 
surf(x,y,real(z)); 

И распечатать эту графа:

MatLab

Почему эта разница происходит? Что я делаю не так?

+0

С одной стороны, используйте 'exp (...)' Вместо 'e^...', особенно если вы не собираетесь правильно вставлять в скобки –

+0

Для другого: '(e^-2) * (y^2) 'должно быть' (e^-2). * (Y.^2) '. Обратите внимание на точку перед звездочкой и кареткой. Elementwise, а не матричное умножение и возведение в степень –

+0

Обычно принято выбирать ответ, который поможет вам, и повышать, если вы настроены на это. –

ответ

4

Вы произвольно выполняете матричные умножения, когда вы делаете x^2 и y^2. Чтобы сделать элементный квадрат матриц, сделайте x.^2 и y.^2.

Кроме того, хотя технически ошибка e=exp(1) просто перехитрина, если у вас есть exp.

В сумме

[x,y]=meshgrid(-1:.1:1); 
z=exp(-x.^2)+(y.^2)./exp(2); 
surf(x,y,z); 

Входы все реальны, так что я удалил вызов real. ./ может быть просто / в этом случае, потому что exp(2) является скаляром, но я предпочитаю быть правильным.