静電ポテンシャルの数値計算例(Java) |
- プログラムソース (二つの正電荷と負電荷がある場合)
import java.io.*;
class potential1
{
public static void main()
{
int i,j,k;
double U[][]=new double[50][50];
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
U[i][j]=0;
}
}
U[25][16]=100.0;
U[25][32]=-100.0;
for(k=0;k<=10000;k++)
{
for(i=1;i<(50-1);i++)
{
for(j=1;j<(50-1);j++)
{
if(!(i==25 && (j==16 || j==32)))
{
U[i][j]=0.25*(U[i+1][j]+U[i-1][j]+U[i][j+1]+U[i][j-1]);
}
}
}
}
try
{
FileWriter fw=new FileWriter("output.data");
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
fw.write( + i + " " + j + " " + U[i][j] + "\n");
}
fw.write("\n");
}
fw.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
- GNUPLOT出力結果

- プログラムソース (コンデンサーがある場合)
import java.io.*;
class potential2
{
public static void main()
{
int i,j,k;
double U[][]=new double[50][50];
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
U[i][j]=0;
}
}
for(i=15;i<=35;i++)
{
U[i][15]=100.0;
U[i][35]=-100.0;
}
for(k=0;k<=10000;k++)
{
for(i=1;i<(50-1);i++)
{
for(j=1;j<(50-1);j++)
{
if(!(i>=15 && i<=35 && (j==15 || j==35)))
{
U[i][j]=0.25*(U[i+1][j]+U[i-1][j]+U[i][j+1]+U[i][j-1]);
}
}
}
}
try
{
FileWriter fw=new FileWriter("output.data");
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
fw.write( + i + " " + j + " " + U[i][j] + "\n");
}
fw.write("\n");
}
fw.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
- GNUPLOTでの出力結果

|
|
|
|
|
|