数値をcsv出力する方法

Python

from logging import fatal from matplotlib import pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import numpy as np import itertools import csv import pandas as pd # 条件設定nx = 100ny = 100nt = 1xmin = 0xmax = 2ymin = 0ymax = 2 dx = (xmax - xmin) / (nx - 1)dy = (ymax - ymin) / (ny - 1) # 初期状態p = np.zeros((ny, nx))pd = np.zeros((ny, nx))b = np.zeros((ny, nx))c = np.zeros((ny, nx))f = np.zeros((ny, nx))g = np.zeros((ny, nx))h = np.zeros((ny, nx))k = np.zeros((ny, nx))l = np.zeros((ny, nx))o = np.zeros((ny, nx))x = np.linspace(xmin, xmax, nx)y = np.linspace(xmin, xmax, ny) # 電荷b[ 50 , 1 : 101 : 4 ] = -10.e-8c[ 50 , 2 : 101 : 8 ] = -10.e-8f[ 50 , 3 : 101 : 8 ] = -10.e-8g[ 50 , 4 : 101 : 8 ] = -10.e-8h[ 47:50 , 1 : 101 : 4 ] = -10.e-8k[ 47 , 0 : 101 : 8 ] = -10.e-8l[ 47 , 6 : 101 : 8 ] = -10.e-8o[ 47 , 7 : 101 : 8 ] = -10.e-8for it in range(nt): pd = p.copy() p[1:-1,1:-1] = (((pd[1:-1, 2:] + pd[1:-1, :-2]) * dy**2 + (pd[2:, 1:-1] + pd[:-2, 1:-1]) * dx**2 - (b[1:-1, 1:-1] + c[1:-1 , 1:-1] + f[1:-1 , 1:-1] + g[1:-1 , 1:-1] + h[1:-1 , 1:-1] + k[1:-1 , 1:-1] + l[1:-1 , 1:-1] + o[1:-1 , 1:-1]) * dx**2 * dy**2) / (2 * (dx**2 + dy**2))) p[0, :] = 0 p[ny-1, :] = 0 p[:, 0] = 0 p[:, nx-1] = 0 def plot2D(x, y, p): fig = plt.figure(figsize=(11, 7), dpi=100) ax = fig.gca(projection='3d') X, Y = np.meshgrid (x , y) surf = ax.plot_surface(X, Y, p[:], rstride=1, cstride=1, cmap=cm.viridis,linewidth=0, antialiased=False) ax.view_init(30, 225) ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('φ') plot2D(x, y, p)plt.show() #オブジェクトを生成fig = plt.figure(figsize=(11,7), dpi=100)fig xmin = 0xmax = 2ymin = 0ymax = 2 x = np.linspace(xmin, xmax, nx)y = np.linspace(xmin, xmax, ny) X, Y = np.meshgrid(x, y)plt.contourf(X, Y, p, alpha=0.5, cmap=cm.viridis) plt.colorbar()plt.xlabel('X')plt.ylabel('Y')

コメントを投稿

0 コメント