我一直在尝试在 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);
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到以下曲面图:
正如人们所期望的那样,我认为这看起来不错。但是如果我将波数和角频率因子增加到 15,我会得到以下结果:
它似乎是一种干扰模式,但我不知道为什么我会得到这个,因为我没有加入干扰效果。谁能解释这里发生了什么?
我真正想做的是绘制一个函数,用于径向向外移动的球面波(在表面上,如水面),以便在我的课堂上进行演示。我怎样才能把它变成一个动画,显示波浪从点源移出?
谢谢你的帮助
我正在尝试编译fortran文件以及FORTRAN中的一些.h文件..h文件包含常见变量块的定义.当我在Fortran中编译它们时,我收到以下错误:
integer knue,ke,knumu,kmu,knutau,ktau,ku,kd,kc,ks,kt,kb,kgamma,
1
Error: Invalid character in name at (1)
Run Code Online (Sandbox Code Playgroud)
发生此错误的代码是,
现在我的问题是,这个"1"点是错误的吗?
这个错误指向的代码行是,
integer knue,ke,knumu,kmu,knutau,ktau,ku,kd,kc,ks,kt,kb,kgamma,
& kw,kz,kgluon,kh1,kh2,kh3,khc,ksnue,kse1,kse2,ksnumu,ksmu1,
& ksmu2,ksnutau,kstau1,kstau2,ksu1,ksu2,ksd1,ksd2,ksc1,ksc2,
& kss1,kss2,kst1,kst2,ksb1,ksb2,kn1,kn2,kn3,kn4,kcha1,kcha2,
& kgluin,kgold0,kgoldc
Run Code Online (Sandbox Code Playgroud)
此外,使用延续的方式是否有问题.我正在使用gfortran来编译这个文件.
我是理论物理研究专业的学生,在宇宙学领域工作.在我的研究过程中,我使用了相当庞大的Fortran代码库,我使用C来满足编程需求.
我已经能够在众多测试文件中链接这两个程序,并且它们的工作非常出色.但对于他们来说,我一直在使用目标文件将它们全部链接起来.但是当我尝试通过C运行真实交易时,请包含对Fortran头文件的引用.它们似乎集成并相互调用,但Fortran头文件的格式与C编译器不兼容,因此当它跳转到头文件时,它会开始抛出无法理解语法的错误.
例如,Fortran头文件使用real*8定义双变量,因此当C读取它们时会抛出错误.文件中的注释也会发生同样的情况.
那么,我想问一下,有什么方法可以解决这个问题吗?即通过C使fortran格式头文件可读.
我查看了互联网,发现了令人困惑的答案,我不知道应该遵循哪一个.任何有关此事的帮助将不胜感激:)