小编Sha*_*haz的帖子

绘制波动方程

我一直在尝试在 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,我会得到以下结果: 在此处输入图片说明 它似乎是一种干扰模式,但我不知道为什么我会得到这个,因为我没有加入干扰效果。谁能解释这里发生了什么?

我真正想做的是绘制一个函数,用于径向向外移动的球面波(在表面上,如水面),以便在我的课堂上进行演示。我怎样才能把它变成一个动画,显示波浪从点源移出?

谢谢你的帮助

matlab wave

5
推荐指数
1
解决办法
8475
查看次数

错误:名称中的字符无效(1)

我正在尝试编译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来编译这个文件.

mixed gcc fortran gfortran fortran90

2
推荐指数
1
解决办法
1万
查看次数

混合编程Fortran和C.

我是理论物理研究专业的学生,​​在宇宙学领域工作.在我的研究过程中,我使用了相当庞大的Fortran代码库,我使用C来满足编程需求.

我已经能够在众多测试文件中链接这两个程序,并且它们的工作非常出色.但对于他们来说,我一直在使用目标文件将它们全部链接起来.但是当我尝试通过C运行真实交易时,请包含对Fortran头文件的引用.它们似乎集成并相互调用,但Fortran头文件的格式与C编译器不兼容,因此当它跳转到头文件时,它会开始抛出无法理解语法的错误.

例如,Fortran头文件使用real*8定义双变量,因此当C读取它们时会抛出错误.文件中的注释也会发生同样的情况.

那么,我想问一下,有什么方法可以解决这个问题吗?即通过C使fortran格式头文件可读.

我查看了互联网,发现了令人困惑的答案,我不知道应该遵循哪一个.任何有关此事的帮助将不胜感激:)

c mixed fortran fortran-iso-c-binding

1
推荐指数
1
解决办法
2290
查看次数

标签 统计

fortran ×2

mixed ×2

c ×1

fortran-iso-c-binding ×1

fortran90 ×1

gcc ×1

gfortran ×1

matlab ×1

wave ×1