ラベル matplotlib の投稿を表示しています。 すべての投稿を表示
ラベル matplotlib の投稿を表示しています。 すべての投稿を表示

2019年3月6日水曜日

プログラミング言語

プログラミングの周辺の話題で、以前から興味があることがある。

というか、疑問。

「なんであんなにたくさん言語があるのか」




自然言語(英語とか日本語とか中国語とか普通に喋る用の言語)ならわかる。

歴史的要因や地理的要因、流行などその他諸々によって進化していくので、あれだけ数があることも、特別疑問に感じない。

でも、プログラミング言語の場合って、機械語やアセンブリ言語然り、Cなど低いレイヤーの言語があるじゃないですか。なんでそれ一本槍でいかないのかと。

というか、いい年をしてこんなことを疑問に思ってて、でも意外にみんな、そんな感じで素朴に質問されたら答えられないのではないかと思っている。



そこで、

「プログラミング言語はマシンを統制するための言語」

という視点にたち、

「最終的に機械語に置き換えられて実行されるんであれば、程度の差こそあれ『プログラミング言語』という一つのツールとしてみなせないのか」

と思って、いろんな言語同士をお互いに埋め込んだり、処理を受け渡したりする方法をちょこちょこ調べていたりする。

なんか我ながらマニアックなことをやっていると思う。

調べること中心で、あんまり実装はできていないけど、そういうものも含めて興味があることは、
  • pythonコードにC++を埋め込む
  • C++のコードにpythonを埋め込む
  • pythonのコードにJavaを埋め込む
  • Javaのコードにpythonを埋め込む(←あんまりやる意味ない?)
  • Javascriptの中にC++を埋め込む
などなど以下、他の言語同士でも同様。さらに、
  • C++のコードにアセンブリ言語を埋め込む
  • SVGの中にC++を埋め込む
  • C++からmatplotlibへ描画
  • C++からgnuplotへ描画
  • ProcessingにC++を埋め込む
などなど。あんまり理解していないので、そもそもやる意味ないやつとか、支離滅裂なことをいっている組み合わせもあるかも。




自然言語で話すときは、方言とか、違う言語通しチャンポンで話すことも結構あったりするのに、プログラミング言語でそれができないのは、なんかもどかしいなっていう感じ。

なんか発言がど素人的な発言だけど。

でもいいのさ。素人の目線でみて、専門家的に考え検討するの大事だと思うから気にしなーい!

2016年7月10日日曜日

シグモイド関数の描画

gnuplotもインストールしたし、matplotlibも使える状態だしということで、なんだかんだ可視化やグラフ描画をするツールは割りと揃ってきた。。

それぞれ、ツールの使い方の勉強という意味含め、ニューラルネットなどででてくるのシグモイド関数の振る舞いをイメージしておきたいなども理由もあるので、シグモイド関数を描画してみようと思い描画してみた。。

gnuplotでの描画

gnuplotでもfor文が使えるらしいのでそれを使う。

ターミナルを起動して、gnuplotを起動する。
hiroshi-no-MacBook-Air:Pro-tr hiroshi$ gnuplot     #gnuplotと打ち込んでreturnを押す
起動したら次のように打ちます。
gnuplot> set yrange[0:1]       #見栄えを良くするための設定。y軸方向の描画範囲の指定。
gnuplot> plot for [i=0:10] 1/(1+exp(-i*x/10))
これを実行すると、次のような図が表示される。




gnuplotを起動したときに、毎回表示されるバージョンを確認しよう。
どうやら、plot forという書き方はバージョン4.4からの機能のようだ。
(参考:明日できること)

matplotlibでの描画

matplotlibでは次のように描画する。

matplotlibとscipyがインストールできていることは前提。 インストールできていない場合はまずこちらから。
Macでpython3の環境構築9---Scipyのインストール---
Macでpython3の環境構築4---Matplotlibのインストール1---
from matplotlib import pyplot as plt
import scipy as sp

x=sp.arange(-10,10,0.1)
for t in range(10):        #必要なグラフは先にすべて生成する。
  y=1/(1+sp.exp(-(2*t*x/10)))
  plt.plot(x,y)         


plt.show()   #最後にまとめて描画すると重ねて表示される。
matplotlibの使い方の説明にもなってしまうが、グラフを重ねて描画するときは、先にplt.plot()、plt.plot()という感じで必要なグラフをすべて生成して、最後にplt.show()をして最後に描画する。

上記を例えば、テキストファイルに書き、sigmoid.pyという名前で保存。sigmoid.pyがあるカレントディレクトリに移動して、
hiroshi-no-MacBook-Air:Pro-tr hiroshi$ python3 sigmoid.py
とコマンドを打って実行すると、次のような画面が出てくる。



for文のところで、あまり数を刻みすぎてしまうと、グラフが表示されたときよくわからない表示になってしまうので、適当に間引いて描画したほうがそれらしくみえる。

参考にしたページや文献・書籍
明日できること
シグモイド関数---wiki