🏠
令和6年12月4日 (水)
工業技術概論

🔷 プログラミング言語-C,JavaScript,Python-

山形大学  理工学研究科(工学系)  物質化学工学専攻  🔋 C1 立花和宏

🔚 👨🏽‍🏫 工業技術概論 2023 2024 Web Class files syllabus 52253 📆 🎑 後期・火曜日 🏫4-116教室 C1
工業技術概論2023は、 工業技術概論になります。

アプリの利用

  1 アプリの種類
種類説明
文書作成 ワープロ deepl

論文報告書、あるいはそれらの 要旨などの 文書を作成、印刷するアプリです。 1 )

表計算 数値を計算し、表や グラフなどの図表を作成するアプリです。 平均標準偏差などの統計量も計算できます。 データ の件数は 30件程度までが適切です。 それ以上の件数の場合、データベースアプリと連携して 抽出した データ を使う方が効率的です。
🔷 プレゼンテーション

講演スライドや ポスターを作成できます。 2 )

グラフィックス 図形地図写真などの 画像の作成や編集をします。
CAD Solid works * 図面
Autodesk AutoCAD Web 図面
Webページ作成 HTML editor
データベース Microsoft Access Microsoft SQL Server
動画編集
プログラミング google colab
ビジネス ・グループウェア
  • メール
  • チャット
    • Slack
  • 会議 Zoom, Teams, Meet
  • カレンダー、連絡先、名刺交換
  • SNS

アプリ には、 オペレーティングシステム (OS) 上で動く、インストールアプリと、 Webブラウザ 上で動く Webアプリがあります 3 )

アカウント を有効化して、 サービスアプリ を利用する(ログイン、ログオン、サインイン)には、 認証が必要です。

人気 プログラミング言語 は、java script、そしてpyton*と続きます。 *


プログラミング言語

  2 プログラミング言語の種類
種類 分類 言語 特徴
インタプリタ Webアプリ JavaScript Webブラウザ上で動作(クライアントサイド)
vb script(vbs,vba,asp) 4 ) 1964 開発 キーボードとディスプレイが必要
AI Webアプリ python パイソン 5 ) * ビッグデータ データサイエンス * 、 マテリアルズインフォマティクス *、AI
教育 Scratch ビジュアルプログラミング
コンパイル OS C 6 ) ポインタ、構造体
汎用 VB.NET オブジェクト指向(多重継承なし)
汎用 Kotlin アンドロイドアプリ向け
OS C++ オブジェクト指向
colab jupyter

ファイルベースのシステムでは、コンパイラ言語は実行可能なファイルを生成し、 インタプリタ言語はそれを生成しないという違いがありました。 しかし、クラウドベースになって、実行ファイルそのものをクライアントにダウンロードしなくなり、 ジャストインコンパイルで実行結果だけを利用するようになると コンパイラ言語とインタプリタ言語の違いは、あまり本質的でなくなりました。

科学技術用の伝統的な言語としては、FORTRANがあります。 FORTRAN系列の言語としては、BASIC、pythonがあります。 統計用言語としてRがあります。

アルゴリズム重視の伝統的な言語としてALGOLがあります。 ALGOLは、Pascal, C, C++, C#,java, javascript, typescript, Kotlinと進化してきました。 juliaはCに迫る計算速度を誇ります。

サーバーサイドで使われてきたPerlや Ruby もクラウドで利用できるようになってきました。

人工知能で伝統的な言語Lispは、F#Schemeもクラウドで利用できるようになってきました。

人気 プログラミング言語 は、java script、そしてpython*と続きます。 *


デジタル記憶、記録での数値の表現

  3 デジタル記憶、記録での数値の表現
プログラミング言語
整数 整数 Basic (Int), C(int),
単精度浮動小数点 実数 Basic (Single), C(float),
倍精度浮動小数点 実数 Basic (Double), C(double), Python (float)
複素数 Python (complex)

測定値などを表す数字のうちで、位取りを示すだけの0を除いた、意味のある数字を有効数字と言う。 たとえば、1.234g±0.012gという測定結果があり、これを 不確かさ を無視して1つの値y=1.234gとして表すことを考える。 不確かさ を考慮した値はおおむね1.222g~1.246gの範囲にあると考えられる。 7 )

このことは、測定値に限ったことではありません。 たとえば、円周率という数には、確かな値がありますが、数字で表現しようすれば、 3.14あるいは3.14159という具合に表現しなければなりません。 やはり有効数字が存在するのです。

さらにこれは10進数に限ったことではありません。 コンピュータの内部では、2進数で表現されることが多くあります。 その表現形式もさまざまです。 単精度浮動小数点や倍精度浮動小数点といった形式があるのは、そのためです 8 )

倍精度浮動小数点は、実数を64ビットで表現します。 実数は無限集合です。それに対して64ビットの表現は264の有限集合です。 実数とデジタル数値を1:1対応させることはできません。 必ず量子化誤差が入ります。

デジタルコンピュータのようなデジタルデバイスでは、 データは、 デジタル情報として記憶または記録されます 9 )


注釈(コメント)

  4 注釈(コメント)
言語 説明
html <!-- コメント -- >
Python (パイソン)
# 注釈
#(クロスハッチ)を使います。
Basic (ベーシック)
REM 注釈
' 注釈
予約語REMを使うか、'(アポストロフィー)を使います。
C
/* 1行コメント */

/*
複数行に渡る
コメント
*/
javascript
// 1行コメント
/* 1行コメント */

/*
複数行に渡る
コメント
*/

ほとんどの言語には、注釈機能があります。 人間がよみやすくするためです。 (可読性)


変数

  5 変数
言語 記述例 説明
Basic Dim A As Integer 整数、浮動小数点、文字列、配列
C 厳密な型宣言
Python
# タプルの配列を円の座標で初期化
t = np.arange(start = 0, stop = 2 * math.pi, step = 0.05)
xy = [ (math.sin(p), math.cos(p))  for p in t]
複素数、リスト、タプル 配列の初期化の記述が柔軟

変数には変数名を付けます。 ほとんどの言語では、予約語があり、予約語は変数名に使えません。

変数名の命名規則にはいろいろありますが、スネークキャストがおすすめです。 *


関数

  6 関数
言語 呼び出し 説明
Basic Function Sub 変数のスコープに注意。
C 関数名は、関数のポインタの変数とほとんど同義。
Python
#関数定義 再帰呼び出しに挑戦
def func(xy,x1,y1,x2,y2,i):
  if i < 0:
def ():で宣言。呼び出す前にボディが記述されている必要があります。 関数の記述は、インデントされている必要があります。

python(パイソン)

  7 python 言語の使い方
応用例
無作為抽出
extracted = random.sample(data, 10)
平均
average = statistics.mean(data)
average = np.mean(data)
標準偏差
std = statistics.stdev(data)
std = np.std(data)
std = np.std(data, ddof=1) # 標本標準偏差
散布図 *
import numpy as np
import matplotlib.pyplot as plt
 
# 乱数を生成
x = np.random.rand(100)
y = np.random.rand(100)
 
# 散布図を描画
plt.scatter(x, y)
ヒストグラム
import matplotlib.pyplot as plt
ax1 = fig.add_subplot(211)
ax1.hist(x1, bins=bins)
画像 (matplotlib) の例:

ともひろてすと

可読性重視の科学計算向け。 10 ) 11 )

Phthon (パイソン)は、多様なデータ構造が組み込まれているので、データ処理しやすい 言語です。 Anaconda(アナコンダ)や、 Google Colaboratoy などの開発環境があります。 Phthonには、数値計算ライブラリNumPyがあります。 NumPyは、CやふFORTRANで、実装されていて、高速で実行できます。 ほかにも、Matplotlib(グラフ描画ライブラリ) pandas(データ分析ライブラリ) TensorFlow(機械学習ライブラリ) OpenCV(画像処理ライブラリ) など便利なライブラリが多数あります。

pymatgenライブラリは、まだあまり普及していない。 *

Webアプリ を書くには、 django プラットフォームがあったほうがいいかも。


★星形

  1 星形
©K. Tachibana

★星形

# ■■■  ★星形 ■■■
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import math
from google.colab import files

xy = [ (math.sin(p), math.cos(p))  for p in \
      np.arange(start = 0, stop = 4 * math.pi, step = 4 * math.pi/5)]

fig, ax = plt.subplots(figsize=(5.8, 4.2)) 
plt.axis("off") 
ax.set_aspect('equal');ax.set_xlim([-1,1]);ax.set_ylim([-1,1])
ax.add_patch(patches.Polygon(xy, \
                             closed=True,facecolor="y",edgecolor="none"))

plt.savefig('star.SVG');files.download("star.SVG")
plt.savefig('star.PNG');files.download("star.PNG")
plt.show()
# ■■■  ★星形 ■■■

♥ハート形

  2 ♥ハート形
©K. Tachibana

♥ハート形

# ■■■  ♥ハート形 ■■■
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import math
from google.colab import files

xy = [(math.cos(p), math.sin(p)+math.sqrt(math.fabs(math.cos(p)))) \
      for p in np.arange(start = 0, stop = 2 * math.pi, step = 0.02)]

fig, ax = plt.subplots(figsize=(5.8, 4.2)) 
plt.axis("off")
ax.set_aspect('equal');ax.set_xlim([-1,1]);ax.set_ylim([-1,2])
ax.add_patch(patches.Polygon(xy, \
                             closed=True,facecolor="r",edgecolor="m"))

plt.savefig('heart.SVG');files.download("heart.SVG")
plt.savefig('heart.PNG');files.download("heart.PNG")
plt.show()

# ■■■  ♥ハート形 ■■■

コッホ曲線


コッホ曲線 Koch curve

# ■■■  コッホ曲線 Koch curve ■■■
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import math
import sys
from google.colab import files

sys.setrecursionlimit(100)

#関数定義
def func(xy,p1,p2,i):
  if i < 0:
    xy.append(p1)
    xy.append(p2)
    return
  else:
    x1 = p1[0];             y1 = p1[1]
    x2 = p2[0];             y2 = p2[1]
    x3 = (x1 * 2 + x2) / 3; y3 = (y1 * 2 + y2) / 3
    x4 = (x1 + x2 * 2) / 3; y4 = (y1 + y2 * 2) / 3
    xx1 = x4 - x3
    yy1 = y4 - y3
    xx2 = 0.5*xx1 + math.sqrt(3)/2* yy1
    yy2 = -math.sqrt(3)/2*xx1 + 1/2* yy1
    x5 = xx2 + x3;          y5 = yy2 + y3
    xy.append(p1)
    func(xy, p1, [x3,y3], i - 1)
    func(xy,[x3,y3], [x5, y5], i - 1)
    func(xy,[x5,y5], [x4, y4], i - 1)
    func(xy,[x4,y4], p2, i - 1)
    xy.append(p2)
    return

xy = []

n=4
func(xy,[0,0],[1,0],n)
func(xy,[1,0],[0.5,math.sqrt(3)/2],n)
func(xy,[0.5,math.sqrt(3)/2],[0,0],n)

fig, ax = plt.subplots(figsize=(5.8, 4.2)) 
plt.axis("off") 
ax.set_aspect('equal');ax.set_xlim([0,1]);ax.set_ylim([-0.5,1])
ax.add_patch(patches.Polygon(xy, closed=True,facecolor="c",edgecolor="b",lw=0.1))

plt.savefig('Koch.SVG');files.download("Koch.SVG")
plt.savefig('Koch.PNG');files.download("Koch.PNG")
plt.show()

# ■■■  コッホ曲線 Koch curve ■■■

ワイブル分布の形

# ■■■ ワイブル分布 ■■■
import math
import numpy as np
import matplotlib.pyplot as plt

alpha = 0.5 # 尺度パラメータ、放射能では半減期、プロセス制御では時定数と呼ばれる
beta = 2 # 形状パラメータ(ワイブル係数)
gamma = 0 # 位置パラメータ

t = np.arange(0, 3, 0.1)
f = [ (beta/alpha)*pow((p-gamma)/alpha,beta-1) * \
     math.exp(-pow((p-gamma),beta)/alpha)  for p in t]
plt.plot(t, f)

# ■■■ ワイブル分布 ■■■

寿命時間の 確率分布として ワイブル分布が知られています 12 )

散布図を描くには、値域と定義域のそれぞれの集合を準備します。 pythonで、たとえば、0<t<3の定義域のそれぞれの値tiを 設定するには、

t = np.arange(0, 3, 0.1)

とすれば、定義域が0から3、公差0.1の数列が集合として、リスト型の変数に格納できます。

pythonは、このような数学的な概念が、文法として言語に組み込まれているので、 Basic CJavaScriptのように forループで繰り返し処理を書く必要がなく、すっきりとしたエレガントなコードを書くことができます。


import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(-10, 10, 0.1) # x軸
y = np.arange(-10, 10, 0.1) # y軸
 
X, Y = np.meshgrid(x, y)
Z = 0
for Y_off in np.arange(-7.5,7.5,0.1):
  Z = Z + 1/np.sqrt((X-5)**2 + (Y-Y_off)**2+1) - 1/np.sqrt((X+5)**2 + (Y-Y_off)**2+1)
#∞を回避するのに分母に1を足した 
cont = plt.contour(X,Y,Z,colors=['r', 'g', 'b'])
cont.clabel(fmt='%1.1f', fontsize=14)
 
plt.xlabel('X', fontsize=14)
plt.ylabel('Y', fontsize=14)
 
plt.show()
©K.Tachibana



  • 工業の歴史と現代の生活
  • 工業技術基礎(加工技術と測定技術)
    • 精度と有効数字
  • 工業と理科(物理、化学、生物、地学)
    • 工学と理科の違い
  • 工業数理基礎(工業数学、数値と単位)
  • 工業技術英語(工業英語、科学英語)
  • 工業と物理(物理化学、分析化学)
  • 工業と化学(工業化学、化学工学)
  • 材料技術基礎(材料製造、材料加工)
  • 工業と機械(機械加工と製図、CAD、プラント記号)
  • 工業と電気(電気回路と記号)
  • 工業と土木(測量と建築)
  • 情報技術基礎(情報処理、ディジタル回路、マイコン制御)
  • 工業所有権(特許権、実用新案権、意匠権、商標権、著作権)
  • 工業管理技術(安全管理、品質管理、規格、生産管理)
  • 技術者倫理(リサイクル、廃棄物、環境)
シラバス案
💯 課外報告書 Web Class

QRコード

🎄🎂🌃🕯🎉
〒992-8510 山形県米沢市城南4丁目3-16

Copyright ©1996- 2024 Databese Amenity Laboratory of Virtual Research Institute,  Yamagata University All Rights Reserved.