{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"2.4.0\""
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RUBY_VERSION"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"0.3\""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IRuby::VERSION"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"true"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"require 'numo/narray'\n",
"require 'numo/gnuplot'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Chapter1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"参照: http://qiita.com/niwasawa/items/6d9aba43f3cdba5ca725 by [@niwasawa](http://qiita.com/niwasawa)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# データの作成\n",
"x = Numo::DFloat.new(60).seq(0, 0.1) # 0から6まで0.1刻みで生成\n",
"y1 = Numo::DFloat::Math.sin(x)\n",
"y2 = Numo::DFloat::Math.cos(x)\n",
"nil"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0, 1.1, 1.2000000000000002, 1.3, 1.4000000000000001, 1.5, 1.6, 1.7000000000000002, 1.8, 1.9000000000000001, 2.0, 2.1, 2.2, 2.3000000000000003, 2.4000000000000004, 2.5, 2.6, 2.7, 2.8000000000000003, 2.9000000000000004, 3.0, 3.1, 3.2, 3.3000000000000003, 3.4000000000000004, 3.5, 3.6, 3.7, 3.8000000000000003, 3.9000000000000004, 4.0, 4.1000000000000005, 4.2, 4.3, 4.4, 4.5, 4.6000000000000005, 4.7, 4.800000000000001, 4.9, 5.0, 5.1000000000000005, 5.2, 5.300000000000001, 5.4, 5.5, 5.6000000000000005, 5.7, 5.800000000000001, 5.9]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.to_a"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.0, 0.09983341664682815, 0.19866933079506122, 0.2955202066613396, 0.3894183423086505, 0.479425538604203, 0.5646424733950355, 0.6442176872376911, 0.7173560908995228, 0.7833269096274834, 0.8414709848078965, 0.8912073600614354, 0.9320390859672264, 0.963558185417193, 0.9854497299884603, 0.9974949866040544, 0.9995736030415051, 0.9916648104524686, 0.9738476308781951, 0.9463000876874145, 0.9092974268256817, 0.8632093666488737, 0.8084964038195901, 0.74570521217672, 0.6754631805511506, 0.5984721441039565, 0.5155013718214642, 0.4273798802338298, 0.33498815015590466, 0.23924932921398198, 0.1411200080598672, 0.04158066243329049, -0.058374143427580086, -0.15774569414324865, -0.25554110202683167, -0.35078322768961984, -0.44252044329485246, -0.5298361409084934, -0.6118578909427193, -0.6877661591839741, -0.7568024953079282, -0.8182771110644108, -0.8715757724135882, -0.9161659367494549, -0.951602073889516, -0.977530117665097, -0.9936910036334645, -0.9999232575641008, -0.9961646088358406, -0.9824526126243325, -0.9589242746631385, -0.9258146823277321, -0.8834546557201531, -0.8322674422239008, -0.7727644875559871, -0.7055403255703919, -0.6312666378723208, -0.5506855425976376, -0.4646021794137566, -0.373876664830236]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y1.to_a"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1.0, 0.9950041652780258, 0.9800665778412416, 0.955336489125606, 0.9210609940028851, 0.8775825618903728, 0.8253356149096782, 0.7648421872844884, 0.6967067093471654, 0.6216099682706644, 0.5403023058681398, 0.4535961214255773, 0.3623577544766734, 0.26749882862458735, 0.16996714290024081, 0.0707372016677029, -0.029199522301288815, -0.12884449429552486, -0.2272020946930871, -0.3232895668635036, -0.4161468365471424, -0.5048461045998576, -0.5885011172553458, -0.6662760212798244, -0.7373937155412458, -0.8011436155469337, -0.8568887533689473, -0.9040721420170612, -0.9422223406686583, -0.9709581651495907, -0.9899924966004454, -0.9991351502732795, -0.9982947757947531, -0.9874797699088649, -0.9667981925794609, -0.9364566872907963, -0.896758416334147, -0.848100031710408, -0.7909677119144165, -0.7259323042001399, -0.6536436208636119, -0.5748239465332685, -0.4902608213406994, -0.40079917207997545, -0.30733286997841935, -0.2107957994307797, -0.11215252693505398, -0.01238866346289056, 0.08749898343944727, 0.18651236942257576, 0.28366218546322625, 0.37797774271298107, 0.4685166713003771, 0.5543743361791615, 0.6346928759426347, 0.70866977429126, 0.7755658785102502, 0.8347127848391598, 0.8855195169413194, 0.9274784307440359]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y2.to_a"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
"#>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# グラフの描画\n",
"g = Numo.noteplot do\n",
" # set term: {png: {size: [640, 480]}} # 画像サイズ\n",
" # set output: 'ruby_graph.png'\n",
" set title: 'sin & cos' # タイトル\n",
" set key: 'box left bottom'\n",
" set offset: [0, 0, 0, 0]\n",
" plot x, y1, {w: 'lines', lw: 3, title: 'sin'},\n",
" x, y2, {w: 'lines', lw: 3, title: 'cos'}\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Chapter2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"参照: http://qiita.com/niwasawa/items/73f604f956d043671f39 by [@niwasawa](http://qiita.com/niwasawa)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
":AND"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def AND(x1, x2)\n",
" x = Numo::DFloat[x1, x2]\n",
" w = Numo::DFloat[0.5, 0.5] # 重み\n",
" b = -0.7 # バイアス\n",
" tmp = (w*x).sum + b\n",
" if tmp <= 0\n",
" 0\n",
" else\n",
" 1\n",
" end\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, 0) -> 0\n",
"(1, 0) -> 0\n",
"(0, 1) -> 0\n",
"(1, 1) -> 1\n"
]
},
{
"data": {
"text/plain": [
"[[0, 0], [1, 0], [0, 1], [1, 1]]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[[0, 0], [1, 0], [0, 1], [1, 1]].each do |x1, x2|\n",
" y = AND(x1, x2)\n",
" puts \"(#{x1}, #{x2}) -> #{y}\"\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
":NAND"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def NAND(x1, x2)\n",
" x = Numo::DFloat[x1, x2]\n",
" w = Numo::DFloat[-0.5, -0.5]\n",
" b = 0.7\n",
" tmp = (w*x).sum + b\n",
" if tmp <= 0\n",
" 0\n",
" else\n",
" 1\n",
" end\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, 0) -> 1\n",
"(1, 0) -> 1\n",
"(0, 1) -> 1\n",
"(1, 1) -> 0\n"
]
},
{
"data": {
"text/plain": [
"[[0, 0], [1, 0], [0, 1], [1, 1]]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[[0, 0], [1, 0], [0, 1], [1, 1]].each do |x1, x2|\n",
" y = NAND(x1, x2)\n",
" puts \"(#{x1}, #{x2}) -> #{y}\"\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
":OR"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def OR(x1, x2)\n",
" x = Numo::DFloat[x1, x2]\n",
" w = Numo::DFloat[0.5, 0.5]\n",
" b = -0.2\n",
" tmp = (w*x).sum + b\n",
" if tmp <= 0\n",
" 0\n",
" else\n",
" 1\n",
" end\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, 0) -> 0\n",
"(1, 0) -> 1\n",
"(0, 1) -> 1\n",
"(1, 1) -> 1\n"
]
},
{
"data": {
"text/plain": [
"[[0, 0], [1, 0], [0, 1], [1, 1]]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[[0, 0], [1, 0], [0, 1], [1, 1]].each do |x1, x2|\n",
" y = OR(x1, x2)\n",
" puts \"(#{x1}, #{x2}) -> #{y}\"\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
":XOR"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def XOR(x1, x2)\n",
" s1 = NAND(x1, x2)\n",
" s2 = OR(x1, x2)\n",
" y = AND(s1, s2)\n",
" return y\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0, 0) -> 0\n",
"(1, 0) -> 1\n",
"(0, 1) -> 1\n",
"(1, 1) -> 0\n"
]
},
{
"data": {
"text/plain": [
"[[0, 0], [1, 0], [0, 1], [1, 1]]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[[0, 0], [1, 0], [0, 1], [1, 1]].each do |x1, x2|\n",
" y = XOR(x1, x2)\n",
" puts \"(#{x1}, #{x2}) -> #{y}\"\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Ruby 2.4.0",
"language": "ruby",
"name": "ruby"
},
"language_info": {
"file_extension": ".rb",
"mimetype": "application/x-ruby",
"name": "ruby",
"version": "2.4.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}