Labs

<< 最初 < 前ページ 次ページ > 最後 >>
icon Anadondaの削除 (2019/08/25)
Python単体 と Anaconda は比較的衝突しやすいので、Anacondaを削除してみる

anaconda-clean のインストールと実行

$ conda install anaconda-clean
$ anaconda-clean

anaconda_backup の削除

$ rm -rf ~/.anaconda_backup

anaconda 本体の削除

環境によってパスが異なるが、which anaconda などでパスを確認して削除
$ cd ~/.pyenv
$ rm -rf versions
$ cd .pyenv/shims
$ rm -rf anaconda*

.bash_profile から環境変数の削除

~/.bash_profile に環境変数が追加されていた場合はこれを削除

ターミナルを再起動すると anaconda は動作しない
icon [Axes3D]曲面の3Dグラフ (2018/12/04)
Axes3D を利用して、曲面を3Dグラフ化する
曲面の関数
z = axn+byn+c
描画はワイヤーフレーム plot_wireframe() を利用した。
Axes3D
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import sys

def calculateMesh(min_value, max_value, step):
    MESH_COUNT = 20
    x = np.arange(min_value, max_value, step)
    y = np.arange(min_value, max_value, step)
    xx, yy = np.meshgrid(np.linspace(x.min(), x.max(), MESH_COUNT), np.linspace(y.min(), y.max(), MESH_COUNT))
    return xx, yy

def plane(x, y, n, a, b, c):
    z = a*x**n + b*y**n + c
    return z

print('Graph: ax^n + bx^n + c')
step = 1
n = int(input('Please input n'))
if (n <= 0): sys.exit('invalid n!')

a, b, c = map(float, input('Please input a, b, c').split())
min_value, max_value = map(float, input('Please input min, max').split())
if (min_value >= max_value): sys.exit('invalid min, max!')

xx, yy = calculateMesh(min_value, max_value, step)
zz = plane(xx, yy, n, a, b, c)

fig = plt.figure()
ax = fig.gca(projection='3d')
ax = Axes3D(fig)
ax.plot_wireframe(xx, yy, zz)
plt.title("%sx^%s + %sy^%s + %s" % (a, n, b, n, c))
plt.show()

icon [Sympy]3次関数をグラフ化(Sympy編) (2018/12/03)
matplotlib の plot() はデータをプロットするが、Sympy の plot() を利用すると一般式をグラフ化できる。
数式を手っ取り早く視覚化するには使える

y = ax3+bx2+cx + d
Sympy 3次関数グラフSympy の plot() の第1引数に数式、第2引数にX軸の情報を入れる

サンプル

from sympy.plotting import plot
from sympy import Number, NumberSymbol, Symbol, Eq, solve
import sys
 
def function():
    x = Symbol('x')
    return a*x**3 + b*x**2 + c*x + d

a, b, c, d = map(float, input('Please input a, b, c, d.').split())
min_x, max_x = map(float, input('Please input min x, max x.').split())
if (min_x >= max_x): sys.exit('invalid min x max x!')
 
x = Symbol('x')
y = function()

min_y = y.subs([(x, min_x)]) 
max_y = y.subs([(x, max_x)])

plot(y, (x, min_x, max_x))
ちなみに、以下でxの最大最小から、yの最大最小を求めている。
min_y = y.subs([(x, min_x)]) 
max_y = y.subs([(x, max_x)])
<< 最初 < 前ページ 次ページ > 最後 >>