fc2ブログ

Macの32bitアプリを削除する

 久々にMacBook Airのファイル掃除を行おうとLaunchpadで確認していた所、禁止標識の付いたアプリを発見。LaunchPad_image_before_191116.png昔使っていたエディタのmiでした。クリックして実行しようとすると、 以下のエラーが出ました。Error_32bitApp_191116.png詳しい情報を確認すると、macOS_32bitApp_191116.png32ビットAppが使えないとのこと・・。先日、macOSをCatalinaに置き換えたのが原因ですね。

 最近、このアプリは使っていないので削除をしようと思い、AppCleanerを実行してこのアプリの名前を探しましたが、発見できず・・。削除方法をネットで調べたらすぐに出てきたので、早速試してみました。

 アップルメニューの「このMacについて」を選択し、About_Mac_191116.png「ストレージ」から右側の「管理...」ボタンを押しました。storage_menu1_191116.png次に、「書類」を選択して、storage_menu2_191116.png「未対応のアプリケーション」から該当のアプリを選択し、「削除」ボタンを押すだけです。App_delete_191116.png
 確認すると、削除されていることが分かりました。LaunchPad_image_after_191116.png OSアップグレードで、32bitアプリが一掃された感じですが、ソフトウェアのデベロッパーもユーザも64bitアプリへの更新が大変ですね。私もソフトウェアやシステムを組むことがあるのでよく分かります。ただ、時代の流れには逆らえませんね・・。
スポンサーサイト



RからPythonへの道(6)

 今回は「5.行列」の処理についてお話しします。行列の作成、加減乗除、行列式、逆行列、固有値、固有ベクトルを計算しました。計算した項目とコマンドをRとPythonに分けて、リストにまとめました。matrix_calc_list1_191110.pngmatrix_calc_list2_191110.png まず、Rのコードは以下の通りです。
# matrix creation
mat_a = matrix(data = 0:8, nrow = 3, ncol = 3, byrow = TRUE)
print("Matrix A")
print(mat_a)
mat_b = matrix(data = 9:17, nrow = 3, ncol = 3, byrow = TRUE)
print("Matrix B")
print(mat_b)

# matrix calculation
mat_add = mat_a + mat_b
print("Addition")
print(mat_add)

mat_sub = mat_a - mat_b
print("Subtraction")
print(mat_sub)

mat_mul = mat_a * mat_b
print("Multiplication")
print(mat_mul)

mat_div = mat_a / mat_b
print("Division")
print(mat_div)

mat_divquo = mat_a %/% mat_b
print("Division quotient")
print(mat_divquo)

mat_divrem = mat_a %% mat_b
print("Division remainder")
print(mat_divrem)

mat_exp = mat_a ^ mat_b
print("Exponentiation")
print(mat_exp)

mat_product = mat_a %*% mat_b
print("Matrix product")
print(mat_product)

# Matrix of zeros and ones
mat_zeros = matrix(data = 0, nrow = 3, ncol = 3, byrow = TRUE)
print("Matrix of Zeros")
print(mat_zeros)

mat_ones = matrix(data = 1, nrow = 3, ncol = 3, byrow = TRUE)
print("Matrix of Ones")
print(mat_ones)

# Determinant, inverse matrix, eigen value and eigen vector
# Square matrix
mat_c = matrix(cbind(c(1,1,-1), c(-2,0,1), c(0,2,1)), nrow = 3, ncol = 3, byrow = TRUE)
print(mat_c)

det_value = det(mat_c)
print("Determinant")
print(det_value)

mat_inv = solve(mat_c)
print("Inverse matrix")
print(mat_inv)

print("Matrix product")
print(mat_c %*% mat_inv)

mat_eigen = eigen(mat_c)
print("Eigen value")
print(mat_eigen$values)
print("Eigen matrix")
print(mat_eigen$vectors)

# Hermitian matrix
mat_d = matrix(cbind(c(1,-1,-1), c(-1,1,-1), c(-1,-1,1)), nrow = 3, ncol = 3, byrow = TRUE)
print(mat_d)

det_value = det(mat_d)
print("Determinant")
print(det_value)

mat_inv = solve(mat_d)
print("Inverse matrix")
print(mat_inv)

print("Matrix product")
print(mat_d %*% mat_inv)

mat_eigen = eigen(mat_d,symmetric = TRUE)
print("Eigen value")
print(mat_eigen$values)
print("Eigen matrix")
print(mat_eigen$vectors)
 次に、Pythonのコードは以下の通りです。Scipyのlinalgライブラリを利用しました。
import numpy as np
import scipy.linalg as linalg

# matrix creation
mat_a = np.arange(0,9).reshape(3,3)
print("Matrix A")
print(mat_a)
mat_b = np.arange(9,18).reshape(3,3)
print("Matrix B")
print(mat_b)

# matrix calculation
mat_add = mat_a + mat_b
print("Addition")
print(mat_add)

mat_sub = mat_a - mat_b
print("Subtraction")
print(mat_sub)

mat_mul = mat_a * mat_b
print("Multiplication")
print(mat_mul)

mat_div = mat_a / mat_b
print("Division")
print(mat_div)

mat_divquo = mat_a // mat_b
print("Division quotient")
print(mat_divquo)

mat_divrem = mat_a % mat_b
print("Division remainder")
print(mat_divrem)

mat_exp = mat_a ** mat_b
print("Exponentiation")
print(mat_exp)

mat_product = np.dot(mat_a,mat_b)
print("Matrix product")
print(mat_product)

# Matrix of zeros and ones
mat_zeros = np.zeros((3,3), dtype=np.int64)
print("Matrix of Zeros")
print(mat_zeros)

mat_ones = np.ones((3,3), dtype=np.int64)
print("Matrix of Ones")
print(mat_ones)

# Determinant, inverse matrix, eigen value and eigen vector
# Square matrix
mat_c = np.array([[1,1,-1],[-2,0,1],[0,2,1]])
print(mat_c)

det_value = linalg.det(mat_c)
print("Determinant")
print(det_value)

mat_inv = linalg.inv(mat_c)
print("Inverse matrix")
print(mat_inv)

print("Matrix product")
print(mat_c.dot(mat_inv))

mat_eigen_value, mat_eigen_vector = linalg.eig(mat_c)
print("Eigen value")
print(mat_eigen_value)
print("Eigen matrix")
print(mat_eigen_vector)

# Hermitian matrix
mat_d = np.array([[1,-1,-1],[-1,1,-1],[-1,-1,1]])
print(mat_d)

det_value = linalg.det(mat_d)
print("Determinant")
print(det_value)

mat_inv = linalg.inv(mat_d)
print("Inverse matrix")
print(mat_inv)

print("Matrix product")
print(mat_d.dot(mat_inv))

#mat_eigen_value, mat_eigen_vector = linalg.eig(mat_d)
mat_eigen_value, mat_eigen_vector = linalg.eigh(mat_d)
print("Eigen value")
print(mat_eigen_value)
print("Eigen matrix")
print(mat_eigen_vector)

 実行結果は以下の通りです。対比できるようにRとPythonを並べて記載しました。出力表記は微妙に異なりますが、逆行列までは全く同じ結果でした。matrix_calc_run1_191110.pngmatrix_calc_run2_191110.pngmatrix_calc_run3_191110.png 固有値、固有ベクトルについては、2種類の行列(一般的な行列と対称行列(Hermite行列))について計算しました。というのも、Rで計算した後に、Pythonで固有値、固有ベクトルを「eig関数」で求めてみると固有ベクトルがRの結果と異なっていました。調査すると、固有値、固有ベクトルを求める関数にeigとeighがあり、前者は一般的な行列に対して、後者は対称行列に対して利用することが分かりました。赤字は対称行列の固有ベクトルの結果(Pythonはeigh関数を利用)を示しています。
 また、Rでもeigen関数の「symmetricパラメータ」をTRUEにすると対称行列(Hermite行列)、FALSEにすると一般的な行列(非対称行列)の固有値、固有ベクトルを計算することができました。ただ、行列の対称性を自動で判断して?結果を出してくれるようで、symmetricパラメータ指定は特に行いませんでした。R、なかなかですね。

 今回はRとPythonでの行列計算についてお話ししました。固有値、固有ベクトルについては、改めて数学の勉強になりました。

『RからPythonへの道』バックナンバー
(1) はじめに
(2) 0. 実行環境(作業環境)
(3) 1. PythonからRを使う方法
   2. RからPythonを使う方法
(4) 3. データフレーム
(5) 4. ggplot

HP Windows10 PCをUbuntuに換装する

 今まで何度もブログの話題に登場している、ケチばかりついている「HP製のWindows10ノートPC(セカンドマシン)」ですが、いよいよOSのお別れの時が来ました。

 2017年4月に購入した「HP pavilion x360 convertible」で、電源をONした後に最低5分程度はHDDが動きっぱなしでディスクアクセス100%状態が続いたことも遠い過去の話です。問題のPCのスペックは以下の通り。
 CPU: Core i3-6100 CPU @ 2.3GHz
 Memory: 4GB
 HDD: 500GB
Memory 8GB、HDDではなくSSDに、欲を出してCPUもi5ぐらいにしておけば良かったなぁといまさらながら..。

 その後、使わない時期がありましたが、1年後にUbuntuのデュアルブートにしました。この話題もブログに紹介しました。ただ、Ubuntuに切り替えてもHDDの動きが遅くて気になっていました。

 その後、このHPノートパソコンは全く使われることもなく、本棚に収まっていました。メインパソコンは5年前に購入したMacBook Airで、快適に使い続けていました。先日、ふと本棚にたたずむHPノートパソコンが目に入りました。SSDも安くなってきたし、遅すぎるHDDを抹殺してSSDに換装しようと思い立ちました。OSは、Windowsにするとストレスが溜まりまくって体に悪いので、Ubuntuのみを入れることにしました。

 ノートPCを裏返しして、上部(ヒンジ側)のゴムクッションを剥がして5か所のネジ、下部の4か所のネジを外しました。HPノートPC裏面_191103次に、表に引っくり返し、キーボードとボディのはめ込みの隙間(写真の赤線部分)に精密ドライバを突っ込んで、傷つかないようにキーボードとボディに隙間を作った後に、プラスチック製のヘラを突っ込んで取り外しました。HPノートPC表面_191103ただし、キーボードとマザーボードが二か所(写真の赤枠)でフラットケーブルにて接続されているので、マザーボードのコネクタからフラットケーブルを取り外す必要があります。ケーブル長が短く、キーボードが若干浮いた状態で手探りでケーブルを動かしていると取り外すことができました。問題のHDDは青枠の位置にありました。HPノートPC内部1_191103HDDもフラットケーブルでマザーボードに接続されていたので、取り外しました。HPノートPC内部2_191103取り外したHDDは、TOSHIBA製のMQ01ABF050でした。TOSHIBA_MQ01ABF050.pngスペックは以下の通り。TOSHIBA_MQ01ABF050_spec.png換装品は、容量はHDDの4分の1になりますが、TranscendのSSD230S(128GB)にしました。楽天で3,380円也。Transcend_SSD230S.png装着後はこんな感じです。HPノートPC内部3_191103キーボードをボディにはめ込んで、裏面のネジをしめて作業は終了です。

 Ubuntuのインストールは以前のブログでお話しした方法を参考に行いました。インストール時のパーティションは、以下の通りに設定しました。ubuntu_partition_191103.pngインストールも無事に終わり、正常にUbuntuも立ち上がりました。HDDの時とは天と地の差のサクサクした動きです。こんなことならばすぐに換装しておけば良かったな・・。本棚に入れなくても今後普通に利用できそうです。
 さらば、Windows10。これでストレスのないPCライフが送れそうです・・。

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: