「行列プログラマー」の問題と課題を解いていくスレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
https://www.amazon.co.jp/行列プログラマー-_Pythonプログラムで学ぶ線形代数-Philip-N-Klein/dp/4873117771 P10 問題 0.3.21
g:U→V、f:V→W、とする。 命題0.3.12により
(g^(-1)◦f^(-1))◦(f◦g)=g^(-1)◦(f^(-1)◦(f◦g))=g^(-1)◦((f^(-1)◦f)◦g)=g^(-1)◦(id_V◦g)=g^(-1)◦g=id_U
(f◦g)◦(g^(-1)◦f^(-1))=f◦(g◦(g^(-1)◦f^(-1)))=f◦((g◦g^(-1))◦f^(-1))=f◦(id_V◦f^(-1))=f◦f^(-1)=id_W
よってg^(-1)◦f^(-1)=(f◦g)^(-1) 文字化けしちゃう、、、いきなりの企画倒れ、、、orz 行列プログラマー Pythonプログラムで学ぶ線形代数
・著者:Philip N. Klein/松田 晃一、弓林 司、脇本 佑紀、中田 洋、齋藤 大吾
・定価:5,832 円(本体5,400 円+税)
・B5 672頁
・ISBN 978-4-87311-777-5
・発売日 2016/10
買って作者のサポートをお願いします!
よろしくお願いします! 原著のタイトルは、『Coding the Matrix: Linear Algebra through Computer Science Applications』である。
その訳が『行列プログラマー ―Pythonプログラムで学ぶ線形代数』である。
訳者らが、どういうセンスの持ち主なのかがこのタイトルの訳だけで分かる。 P10 問題 0.3.22
g=e^x : R→(0,∞)
f=x^2 : R→R
f(g(x))は可逆だけどfは単射じゃない。 【暴走列伝 単車の虎】
| :::::
 ̄ ̄| ::::::::::
ロ ロ |:::/ ̄ ̄\:::
ロ ロ |::/ キ:::
ロ ロ | ̄п| ̄|| ̄ ̄|_
ロ ロ | | ̄ ̄| | /◆
ロ ロ | /◆◆◆
∠〆〜ーワ ◆
《*)ゞ≦/《*)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ P19 課題 0.5.1
In [1]: 60*30*24*7
Out[1]: 604800
P19 課題 0.5.2
In [2]: 2304811-(2304811//47)*47
Out[2]: 25 P20 課題 0.5.3
In [3]: if (673+909)%3==True:
print("割り切れない")
else:
print("割り切れる")
Out[3]: 割り切れない P21 課題 0.5.4
In [4]
x=-9
y=1/2
2**(y+1/2) if x+10<0 else 2**(y-1/2)
Out[4]
1.0 P25 課題0.5.5
{x**2 for x in {1,2,3,4,5}}
P25 課題0.5.6
{2**x for x in {0,1,2,3,4}}
P25 課題0.5.7
{x*y for x in {1,2,3} for y in {5,7,11}}
P25 課題0.5.8
{x*y for x in {2,6,18} for y in {5,15,45}}
P26 課題0.5.9
S={1,2,3,4}
T={3,4,5,6}
{x for x in S if x in T} P27 課題0.5.10
sum([20,10,15,75])/len([20,10,15,75]) P28 課題 0.5.11
[[x,y] for x in ['A','B','C'] for y in [1,2,3]]
P28 課題 0.5.12
sum(sum([[0.25,0.75,0.1],[-1,0],[4,4,4,4]],[]))
P30 課題 0.5.13
In [27]: [x,y]=[1,2,3]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-109-093f1be0fe93> in <module>()
----> 1 [x,y]=[1,2,3]
ValueError: too many values to unpack (expected 2)
[28]: [x,y,z]=[1,2]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-110-02e4cd0205e8> in <module>()
----> 1 [x,y,z]=[1,2]
ValueError: not enough values to unpack (expected 3, got 2) P31 課題 0.5.14
S={-4,-2,1,2,5,0}
[(i,j,k) for i in S for j in S for k in S if i+j+k==0]
P31 課題 0.5.15
S={-4,-2,1,2,5,0}
[(i,j,k) for i in S for j in S for k in S if (i+j+k==0) & ((i,j,k)!=(0,0,0))] P31 課題 0.5.16
(問題の意味が分からないからパス)
P32 課題 0.5.17
L=[0,1,1}
P32 課題 0.5.18
{2*x+1 for x in range(50)}
P33 課題 0.5.19
L=['A','B','C','D','E']
list(zip(range(5),L))
P33 課題 0.5.20
[x+y for (x,y) in zip([10,25,40],[1,15,20])] 早く課題を説いてください。
提出期限に間に合いません。 アメリカのSEは1,000万円以上だけど
日本のSEは1,000万円以下の低収入!
【アメリカ】
スーパープログラマ
時給10万円だったり、ストックオプションで数億〜数十億円稼ぎだす
Javaフレームワーク
〜3600万円
PHP
〜2400万円
COBOL
〜1700万円
技術サポート
〜1200万円
年収中央値:1175万円(アメリカ労働統計局調査、サンプルは111万人)
70歳でも仕事があり、年収は下がらない
数年単位で転職する(一つの会社に長くいるのは危険)
管理系の職種は雇用が不安定で、報酬も高くない
【日本】
平均年収:430万円(情報処理推進機構調査)
Web/ゲーム業界(昔ほど報酬は高くない)以外は人月単位のため、報酬には上限あり
年功賃金を採用する企業では20代後半までの給料は一部の例外を除き低い
間接雇用が基本(大手のSIerでも客先常駐派遣が少なくない)
40歳以降になるとリストラ候補となり、一旦リストラされると低賃金職か、長期間無職となる
大企業の場合は管理職トラックに進むためコーディングはしなくなり、
プログラミング経験が昔あっても35歳以降の転職は難しい
転職回数が3回超えるだけで大手には書類で落とす。 SEの経済損失
SI業界は善悪損益が世間と正反対!
プログラム生産するほど貧困非婚!
プログラムの巨額利益を客先に提供
プログラムの巨額報酬を人売に提供
会社員なのに短勤続年数
人手不足なのに無職意識
人手不足なのに低収入
高生産なのに低収入
高利益なのに低収入
高需要なのに低収入
勤勉なのに低収入
高稼働残業して非婚
高稼働残業して離婚
多重派遣なのに稼働
偽装請負なのに稼働
ピンハネ商流
http://freelance-programmer.com/shouryu >>21 まだ0章なので何とも言えない。
>>22 一応まだ挫折してないけど、問題の多さにかなり萎えてる。 P35 #0.5.21
dlist = [{'James':'Sean','director':'Terence'},{'James':'Rojer','dierctor':'Lewis'},{'James':'Pierce','director':'Rojer'}]
k = 'James'
[dic[k] for dic in dlist]
P35 #0.5.22
dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
k = 'Bilbo'
print("k = Bilbo : ",[dic[k] if k in dic else 'NOT PRESENT' for dic in dlist])
k = 'Frodo'
print("k = Frodo : ",[dic[k] if k in dic else 'NOT PRESENT' for dic in dlist]) P35 #0.5.23
dic={x:x**2 for x in range(100) }
print(dic) P36 #0.5.24
D={'red','white','blue'}
{x:x for x in D}
P36 #0.5.25
base=2
digits=set(range(base))
print("base=2 \n",{a*base**2+b*base+c :[a,b,c] for a in digits for b in digits for c in digits },'\n')
base=10
digits=set(range(base))
print("base=10 \n",{a*base**2+b*base+c :[a,b,c] for a in digits for b in digits for c in digits })
P37 d={0:1000.0, 3:990, 1:1200.50}
L=['Larry','Curly','','Moe']
{L[x]:d[x] for x in d.keys()} [問題番号を追記]
P37 #0.5.26
d={0:1000.0, 3:990, 1:1200.50}
L=['Larry','Curly','','Moe']
{L[x]:d[x] for x in d.keys()} # P37 0.5.27
def twice(z): return 2*z
print("twice(1)=",twice(1))
print("twice('x')=",twice('x'))
print("twice(['a','b','c'])=",twice(['a','b','c']))
# P37 0.5.28
def nextInts(L): return [x+1 for x in L]
a=[1,5,7]
nextInts(a)
# P38 0.5.29
def cubes(L): return [x**3 for x in L]
a=[1,2,3]
cubes(a)
# P38 0.5.30
def dict2list(dct,keylist): return [dct[keylist[x]] for x in range(len(keylist))]
x={'a':'A','b':'B','c':'C'}
y=['b','c','a']
dict2list(x,y) # P38 0.5.31
def list2dict(L,keylist): return {keylist[x]:L[x] for x in range(len(keylist))}
x=['A','B','C']
y=['a','b','c']
list2dict(x,y)
# P38 0.5.31 zipを使って
def list2dict(L,keylist): return {x:y for x, y in zip(keylist,L)}
x=['A','B','C']
y=['a','b','c']
list2dict(x,y)
# P38 0.5.31 失敗例
def list2dict(L,keylist): return {x:y for x in keylist for y in L}
x=['A','B','C']
y=['a','b','c']
list2dict(x,y) # P38 0.5.32
def all_3_digits_numbers(base,digits): return { a*base**2+b*base+c for a in digits for b in digits for c in digits}
b=10
d={x for x in range(b)}
print(all_3_digits_numbers(b,d)) # P39 0.6.1
import math
help(math)
print(math.sqrt(3)**2,math.cos(math.pi),math.log(math.e))
math.sqrt(-1) #これはエラーになる
# P40 0.6.2
from random import randint as ri
rev=["See it!","A gem","Ideological claptrap"]
def movie_review(name):
return name+" : " + rev[ri(0,2)]
movie_review("劇場版 探偵オペラ ミルキィホームズ 〜逆襲のミルキィホームズ〜") # P40 0.6.3
# dictutil.py で保存
def dict2list(dct, keylist): return [dct[keylist[x]] for x in range(len(keylist))]
def list2dict(L, keylist): return {keylist[x]:L[x] for x in range(len(keylist))}
#同じディレクトリで下記を実行
import dictutil
x={'a':'A','b':'B','c':'C'}
y=['b','c','a']
print("dict2list",dictutil.dict2list(x,y))
x=['A','B','C']
y=['a','b','c']
print("list2dict",dictutil.list2dict(x,y)) # P41 0.6.4
# dictutil.py で保存
def dict2list(dct, keylist): return [dct[keylist[x]] for x in range(len(keylist))]
def list2dict(L, keylist): return {keylist[x]:L[x] for x in range(len(keylist))}
def listrange2dict(L): return {x:L[x] for x in range(len(L))}
#同じディレクトリで下記を実行
from imp import reload
reload(dictutil)
x=['A','B','C']
print("listrange2dict",dictutil.listrange2dict(x))
# P42 0.6.5
for x in [1,2,3]:
y=x*x
print(y) # P44 0.6.6 全然pythonぽくない。誰かに書き直して欲しい。
def makeInverseIndex(strlist):
sl=strlist.replace('.',' ').replace(',',' ').replace(':',' ').replace(';',' ')
word_list=sl.split()
word_dic={wd:set() for wd in word_list}
f=open('stories_small.txt')
line_list=dict(enumerate(list(f)))
for num in line_list:
line_set = set(line_list[num].split())
for w in word_dic:
if w in line_set:
word_dic[w]=word_dic[w]|{num}
return word_dic
g=open('stories_small.txt')
linest=dict(enumerate(list(g)))
w_dic=makeInverseIndex(lines[0])
print(w_dic) # P43 0.6.7
def orSearch(inverseIndex, query):
setObj=set()
for s in inverseIndex.keys:
for word in query:
word == s
setObj=setObj|inverseIndex[s]
return setObj
ss=makeInverseIndex('stories_small.txt')
print(orSearch(ss,["word","found","went"])) # P44 0.6.8
def andSearch(inverseIndex,query):
check_word = "__z?z!"
keys=list(inverseIndex.keys())
while check_word in inverseIndex.keys():
check_word = check_word*2
and_set={check_word}
for k in inverseIndex.keys():
and_set=and_set|inverseIndex[k]
for w in query:
if keys.count(w)==0:
and_set=set()
break
and_set=and_set&inverseIndex[w]
return and_set
g=open('stories_small.txt')
lstr=""
for line in list(g):
lstr=lstr+' '+line
w_dic=makeInverseIndex(lstr)
w_list=['an','then']
orObj=andSearch(w_dic,w_list)
print(orObj) 【犯罪者追放のお願い】
違法派遣(偽装請負・多重派遣・偽装出向・事前面接等)についての刑事罰
【告訴権者=業務委託、準委任、共同受注、業務請負契約および特定派遣(契約・正規)、一般派遣、正規社員】
@職業安定法第44条の労働者供給事業の禁止規定に違反(1年以下の懲役または20万円以下の罰金)
■偽装請負・多重派遣・偽装出向・多重出向
■事前面接(顔合わせ・面談・職場見学等)と履歴書・職務経歴書・スキルシート等提出による労働者の特定(※)
(音声録音で立証可能)
A労働基準法第6条(中間搾取の禁止) (1年以下の懲役又は50万円以下の罰金)
■多重派遣・多重出向
※違法派遣(派遣労働者の特定)→派遣法で認められた派遣労働者ではない→労働者供給事業→職業安定法44条違反というの
が前提となる法解釈となります。派遣法における罰則が軽微なのは法律の不備や労働者軽視などが原因ではありません。
違法派遣は全て職業安定法44条で裁くことが可能なため、刑罰の重複を避けるために派遣法には軽微な罰則(主に裁量行政による)しかないのです。
使用者に有利な民事訴訟や労働関係諸局への通報等の対極にあるのが書面(告訴状)による刑事告訴(※告訴先は検察の直告班)です。
労働関係諸局への通報・斡旋による軽微な「適正化」や監督・指導に対して、法律に定められた刑事罰を問うことになり、
違法派遣業者にとって有罪は考えられる限り最大の処罰となります。同時に刑事罰を受けた
担当者が取引先に与える悪印象を考慮すれば、通常会社側は告訴が受理された時点で告訴取り下げに
動くのが妥当でしょう。懲役、前科がつく刑罰が下される可能性から、告訴取り下げの和解金は高額となることが多いのです。
告訴の流れとしては、
刑事告訴⇒告訴受理⇒告訴取下げ要請⇒取下げ和解金入金⇒告訴取下げ
となります。告訴の懲役刑適応は犯罪者個人に対してのみですので、告訴する対象は
派遣先・派遣元 社員
派遣先・派遣元 社長
派遣先・派遣元 担当者・責任者・管理役員・取締役
派遣先・派遣元 人事管理担当者・人事管理役員・取締役
が妥当です。
刑事告訴取り下げの和解金額は犯罪者個人と交渉するとよいでしょう。(告訴状は人数分提出する必要あり) ■ このスレッドは過去ログ倉庫に格納されています