/ / Уравнение на вълните на вълните - matlab, wave

Уравнение на плочкови вълни - matlab, wave

Опитвам се да начертая уравнение на равнина вълнав Matlab. Опитвам се да напиша реалната част на $ (1 / R) E ^ i (kR + wT) $ т.е. $ (1 / R) cos (kR + wT) $. Така че аз използвах следния код в Matlab (за един миг, да речем t = 5),

x=-5:0.1:5;
y=-5:0.1:5;

t=5;

w=1.3;
k=1.3;

[X,Y]=meshgrid(x,y);
R=(X.^2+Y.^2)^1/2;
u=20*cos(k*R+w*t);
surf(X,Y,u);

Когато изпълнявам този код, получавам следната повърхност: въведете описанието на изображението тук Това изглежда добре, мисля, както бихме очаквали. Но ако увелича броя на вълновите и ъгловите честотни фактори до 15, получавам следното: въведете описанието на изображението тук Изглежда, че е интерферентен модел, но нямам представа защо аз получавам това, защото не съм сложил ефектите на смущението. Може ли някой да обясни какво се случва тук?

Това, което всъщност се опитвам да направя, е да начертая функцияза радиално навън движеща се сферична вълна (на повърхност, подобна повърхност на водата може да бъде) за демонстрация в моя клас. Как мога да превърна това в анимация, която показва вълни от вълни, излизащи от точков източник?

Благодаря за вашата помощ

Отговори:

3 за отговор № 1

Виждате псевдоними, което се дължи на недостатъчното вземане на проби. Това псевдоними има (най-малко) две възможни причини:

  1. Вземането на проби от функцията, определена от х,ш- матрица от стойности е недостатъчно.
  2. Matlab начертава графиката на фигура с ограничен брой пиксели на екрана. Най- графично изобразяване включва някакъв вид downsampling, ако матрицата, която трябва да бъде представена, е голяма в сравнение с броя на фиксираните пиксели. В този процес на отслабване може да се появи aliasing.

Колкото до първи тип псевдоними: когато увеличите броя на вълните, вълната се променя по - бързо в х и ш посоки. Така че, за да визуализирате функцията правилно, трябва намаляване на периода на вземане на проби в същото съотношение.

Това е вашият оригинален код, само с k=15 и w=15; и със surf заменен с imagesc за по-голяма яснота (фигурата е като твоя, но се вижда "отгоре"):

x=-5:0.1:5;
y=-5:0.1:5;
t=5;
w=15;
k=15;
[X,Y]=meshgrid(x,y);
R=(X.^2+Y.^2)^1/2;
u=20*cos(k*R+w*t);
imagesc(x,y,u);

Получената фигура показва изявени артефакти:

въведете описанието на изображението тук

Сега, използвайки по-фини извадки

x=-5:0.01:5; %// note: 0.01: finer grid
y=-5:0.01:5;
t=5;
w=15;
k=15;
[X,Y]=meshgrid(x,y);
R=(X.^2+Y.^2)^1/2;
u=20*cos(k*R+w*t);
imagesc(x,y,u);

намалява първия тип псевдоними. Някои фигури все още се виждат на фигурата:

въведете описанието на изображението тук

Това вероятно е причинено от втори тип псевдоними горе. За да потвърдите това, изпълнявам същия код в Matlab R2014b, което прави по-добра работа за избягване на псевдоними, причинени от графично изобразяване (имайте предвид също, че стандартната colormap е променена на тази версия на Matlab). Можете да видите, че в сравнение с предишната фигура, резултатите са подобрени:

въведете описанието на изображението тук

Bottomline: използвайте по-фини извадки и придвижете се до Matlab R2014b, ако е възможно.