質問編集履歴

2

x軸:r0,y軸:gamma,z軸:mの関数として、p[r0,gamma,m]のグラムが表示されない現象を、やや詳しく記載。

2022/12/10 07:36

投稿

pontoon
pontoon

スコア28

test CHANGED
File without changes
test CHANGED
@@ -35,17 +35,20 @@
35
35
 
36
36
  ### 実現したいこと
37
37
 
38
- 小さな音源から出る音圧(3次元的な広がりを計算した
38
+ 小さな音源から出る音圧(3次元的な広がりを計算しものを
39
+ p[r0,gamma,m]のグラフとして表示したい。
39
40
 
40
41
  ### 発生している問題・エラーメッセージ
41
42
 
42
43
 
43
44
  エラーメッセージ
44
45
 
46
+ 最後の命令文:
47
+ plot3d(x = r0, y = gamma, z = m )
48
+ の所で、
49
+ Warning message:
45
- p[r0,gamma,m] = (2*pi*f*rou)i*((a^2*5*exp((2*pi*f-k*r0)i))/r0*(Jn_z/(k*a*sin(gamma*10))) の所で
50
+ In xyz.coords(x, y, z, xlab = xlabel, ylab = ylabel, zlab = zlabel, :
46
- Error: unexpected symbol in:
51
+ imaginary parts discarded in coercion
47
- " }
48
- p[r0,gamma,m] = (2*pi*f*rou)i"
49
52
 
50
53
  ### 該当のソースコード
51
54
 
@@ -80,8 +83,11 @@
80
83
 
81
84
  ### 試したこと
82
85
 
86
+ 希望としては、
87
+ x軸がr0、y軸がgamma、z軸がにして、
88
+ p[r0,gamma,m]は、その各点での色の濃さのような
83
- 複素数使いは、単に式にiを付ければいいだけと訊いたのだ
89
+ 表現が出来ればいいだけど、グラフ自体
84
- 違うだろうか?
90
+ 表示されないで、何とも。。。
85
91
 
86
92
  ### 補足情報(FW/ツールのバージョンなど)
87
93
 

1

複素数の計算は、iの代わりにcomplexを使い、compileは切り抜けました。ただ、一番、最後のplot3d()でグラフは表示されず

2022/12/10 05:16

投稿

pontoon
pontoon

スコア28

test CHANGED
@@ -1 +1 @@
1
- 複素数の使い方がわからないのと、3次元プロットの方法を確認したい
1
+ 複素数の使い方がわからないのと(これはiではなく、complex関数を使う事により切り抜けたようです)、3次元プロットの方法(これは、まだグラフが表示されません)を確認したい
test CHANGED
@@ -1,4 +1,35 @@
1
+ ```ここに言語を入力
2
+ library(rgl) # On console
1
3
 
4
+
5
+ p = array(1:72000, dim=c(20,36,100))
6
+
7
+ k = 4187 # phase constant [rad/m] = (2*pi)/lambda =(2*3.14)/(1500/1000000)
8
+ a = 0.0025 # radius of diaphragm [m]
9
+ f = 1000000 # frequency [Hz]
10
+ rou = 1.06 # density
11
+
12
+ for (r0 in 1:20) # Deapth [*5 mm]
13
+ {
14
+ for (gamma in 1:36)
15
+ {
16
+ Jn_z = 0
17
+ for (m in 1:100)
18
+ {
19
+ z = k*a*sin(gamma*10)
20
+ P_Jn = (((-1)^m)/(factorial(m)*factorial(m+1)))*(z/2)^(2*m+1)
21
+ Jn_z = Jn_z + P_Jn
22
+ }
23
+ Imp<-complex(real=0,imaginary=2*pi*f*rou)
24
+ Phase<-complex(real=0,imaginary=2*pi*f-k*r0)
25
+ p[r0,gamma,m] = Imp*(a^2*5*exp(Phase))/(r0*(Jn_z/(k*a*sin(gamma*10)))) # Sound Pressure = ρ*(d(fai)/dt) ω*ρ*((a^2)*Vm*e^j(ωt-kr0))/r0*(J1((k*a*sinγ)/(k*a*sinγ))
26
+ }
27
+ }
28
+
29
+ plot3d(x = r0, y = gamma, z = m )    # この命令で、グラフが表示されない
30
+
31
+
32
+ ```
2
33
 
3
34
  でも複素数の計算でエラーで、プロットの仕方もこれでいいのかわからない
4
35