Math Adventures with Python
An Illustrated Guide to Exploring Math with Code
楽天ブックス(Kobo)
紀伊国屋書店(Kinoppy)
開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
- Processing 3 (プログラミング言語、統合開発環境、グラフィック機能)
Math Adventures with Python: An Illustrated Guide to Exploring Math with Code (Peter Farrell(著)、No Starch Press)のPART 2(RIDING INTO MATH TERRITORY)、8(USING MATRICES FOR COMPUTER GRAPHICS AND SYSTEMS OF EQUATIONS)、EXERCISE 8-2(ENTER THE MATRIX)の解答を求めてみる。
コード
Python 3
sample2_test.py
import unittest from sample2 import gauss class TestGauss(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_B(self): B = [[2, 1, -1, 8], [-3, -1, 2, -1], [-2, 1, 2, -3]] expected = [[1.0, 0.0, 00, 32.0], [0.0, 1.0, 0.0, -17.0], [-0.0, -0.0, 1.0, 39.0]] actual = gauss(B) self.assertEqual(expected, actual) if __name__ == '__main__': unittest.main()
sample2.py
#!/usr/bin/env python3 def gauss(A): for j, row in enumerate(A): if row[j] != 0: divisor = row[j] for i, term in enumerate(row): row[i] = term / divisor for i, row_i in enumerate(A): if i != j: add_inverse = -1 * row_i[j] for l, _ in enumerate(row_i): row_i[l] += add_inverse * row[l] return A if __name__ == '__main__': import pprint A = [[2, -1, 5, 1, 3], [3, 2, 2, -6, 32], [1, 3, 3, -1, 47], [5, -2, 3, 3, -49]] B = gauss(A) pprint.pprint(B)
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...>py -3 sample2_test.py -v test_B (__main__.TestGauss) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.000s OK C:\Users\...>py -3 sample2.py [[1.0, 0.0, 0.0, 0.0, -7.333333333333336], [0.0, 1.0, 0.0, 0.0, 10.666666666666666], [0.0, 0.0, 1.0, 0.0, 6.333333333333334], [0.0, 0.0, 0.0, 1.0, -3.3333333333333344]] C:\Users\...>
0 コメント:
コメントを投稿