30
コンピュータの活用 2020.4.28 基礎物理学演習 ~表計算ソフトを用いて物理の諸問題を解く~

コンピュータの活用okamura/anonymous/...マクロ(VBA)の使い方 マクロとは、アプリケーション上で行うさまざまな処理を自動的に実行 するプログラムのことである。このプログラムを記述する言語を、マクロ

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • コンピュータの活用

    2020.4.28 基礎物理学演習

    ~表計算ソフトを用いて物理の諸問題を解く~

  • Contents

    ① 表計算ソフト(Microsoft Excel)とは

    ② Excelの使用法(基本編)

    ③ Excelの使用法(実践編)

    ④ Excelの使用法(応用編)

    Excelの基本操作について

    最小二乗法による近似線の求め方

    Excelによる微分、積分、近似法について

    ソルバー機能(エクセルアドイン)について

    VBA(マクロ)の使用法について

  • ① 表計算ソフト(Microsoft Excel)とは

    データを入力して様々な方法で集計させたり、数式を入力して計算させることができるソフト。

    1.計算(関数)機能に優れ、グラフやデータベース作成が可能

    3.マクロ言語が搭載されており、プログラムによる処理が可能

    2.汎用性が高い(物理学実験、研究、企業などで使用)

    → 関学サイトライセンスで最新バージョンを無償で入手可能

    Excelの特徴

  • 起動画面と基本的な画面構成について

    ② Excelの使用法(基本編)

  • 数式バー 列番号

    行番号

    アクティブセル

    セル

    メニューバー

    シート Ver. 2016

    リボン

  • 文字や数式、関数の入力法、表の作成法について

    ② Excelの使用法(基本編)

    C8に値入力 選択して右下ボッチをドラッグ or Ctrl + “D”

    = B8 * C8 *0.001 と入力して下にコピー

    桁数をそろえる

    C ; 1 μF5.4

    11.8・・・

    R ;10 kΩ

  • 表やグラフの作成法について

    ② Excelの使用法(基本編)

    図の挿入方法

    図の書式設定

  • Excelによる微分法について

    関数の微分をExcelで確かめる

    ③ Excelの使用法(実践編)

    a b

  • Excelによる微積分

    ⇒ 実験(数値)データの解析に有効

    ③ Excelの使用法(実践編)

    = ( B4 – B3 )/( A4 - A3 )

    ただし、実際のデータはバラツキやトビがあるケースが多く、少々工夫すること

    が必要である。

    移動平均等の処理が必要

    Excelによる微分

  • Excelによる積分

    ③ Excelの使用法(実践編)

    a b

    π

    0

    sin xdxx

  • Excelによる積分 関数の定積分をExcelで確かめる

    ③ Excelの使用法(実践編)

    π

    0

    sin xdxx

    a b

    =(C3+C4)*(B4-B3)/2

    行・列かセルを選択→ “表示”→ “ウィンドウ枠の固定”

    行・列を選択→ “分割”

  • Excelによる近似 Taylor展開

    ③ Excelの使用法(実践編)

    1

    132 1)1(31

    21)1ln(

    n

    nn xn

    xxxx

    x ln (1+ x) 1 次 2 次 3次 4次 8 次-0.9 -2.30259 -0.9 -1.305 -1.548 -1.71203 -2.04083-0.8 -1.60944 -0.8 -1.12 -1.29067 -1.39307 -1.55322-0.7 -1.20397 -0.7 -0.945 -1.05933 -1.11936 -1.19155-0.6 -0.91629 -0.6 -0.78 -0.852 -0.8844 -0.91383-0.5 -0.69315 -0.5 -0.625 -0.66667 -0.68229 -0.69275-0.4 -0.51083 -0.4 -0.48 -0.50133 -0.50773 -0.51078-0.3 -0.35667 -0.3 -0.345 -0.354 -0.35603 -0.35667-0.2 -0.22314 -0.2 -0.22 -0.22267 -0.22307 -0.22314-0.1 -0.10536 -0.1 -0.105 -0.10533 -0.10536 -0.10536

    0 0 0 0 0 0 00.1 0.09531 0.1 0.095 0.095333 0.095308 0.095310.2 0.182322 0.2 0.18 0.182667 0.182267 0.1823220 3 0 262364 0 3 0 255 0 264 0 261975 0 262363

    ‐2.5

    ‐2

    ‐1.5

    ‐1

    ‐0.5

    0

    0.5

    1

    ‐1 ‐0.5 0 0.5 1

    ln(1+x)

    1次

    2次

    3次

    4次

    8次

  • 最小二乗法による近似曲線の求め方

    1.公式を利用する

    2.グラフ機能を用いる

    3.分析ツールを使用する

    ③ Excelの使用法(実践編)

    ① グラフのデータ点左クリック

    ② データ点上で右クリック

    ③ “近似曲線の追加”

    ④ 近似または回帰の種類選択

    ⑤ “グラフに数式を表示する” Check

    ⑥ “OK”

    これらの方法では、Fitting関数を自由に設定することはできない。

  • 近似曲線の求め方(分析ツール、ソルバー機能を用いる)

    ④ Excelの応用例(アドイン) ※Ver.2007の例

    ① “Officeボタン” クリック

    ② “Excelのオプション”

    ③ “アドイン”

    ④ “Excelアドイン” “設定”クリック

    ⑤ “ソルバーアドイン” “分析ツール”

    ⑥ “OK”

  • 近似曲線の求め方(分析ツール、ソルバー機能を用いる)

    ④ Excelの応用例(アドイン) ※Ver.2016の例

    ① メニューバーの“ファイル”クリック

    ② “オプション”

    ③ “アドイン”

    ④ “Excelアドイン” “設定”クリック

    ⑤ “ソルバーアドイン” “分析ツール”

    ⑥ “OK”

  • コンデンサーの充放電特性を指数関数で解析したい。

    ④ Excelの応用例(アドイン)

    元のデータ

    したい。のような関数を Fittingceay bx

    マイナスデータがあると普通にFittingできない!

    ソルバー機能を使用する。

  • ④ Excelの応用例(アドイン)

    元のデータ

    モデル関数の値

    この値が最小になるようなa, b, cの値を網羅的に解析

    =C$21*exp(-B4/D$21)-E$21

    =C4-D4

    =SUMSQ(E4:E14)

    ①初期値(a, b, c)の設定(重要!) ②目的セル(平方和)の設定 ③変化させるセルの設定 ④“制約のない変数を非負数にする”のチェックを外す ⑤実行

    コンデンサーの充放電特性を指数関数で解析したい。

  • ④ Excelの応用例(マクロ)

    マクロ(VBA)の使い方

    マクロとは、アプリケーション上で行うさまざまな処理を自動的に実行

    するプログラムのことである。このプログラムを記述する言語を、マクロ

    言語(VBA)と言う。

    (注意) デフォルトの設定ではセキュリティーの問題からマクロは

    遮断されてしまう場合がある。マクロを用いる場合はセキュ

    リティーレベルの設定を下げる必要がある。

    マクロの例1 演習問題(惑星軌道)

    マクロの例2 多量の実験データの自動解析

  • ④ Excelの応用例(マクロ)

    (2007):Officeボタン → Excelのオプション → 基本設定 → “[開発]タブをリボンに表示する”にチェックを入れる

    (2010, 2013, 2016):ファイル → オプション → リボンのユーザー設定 →“[開発]”にチェックを入れる

    Ver. 2016

  • ④ Excelの応用例(マクロ) ※Ver.2016

    まずマクロの雛型を作成する。

    “開発”→“マクロの記録”→“OK”→“記録終了”→“VisualBasic”→“標準モジュール”

    ③⑥

    ⑤ ④

  • ④ Excelの応用例(マクロ) ※Ver.2007

    まずマクロの雛型を作成する。

    “開発”→“マクロの記録”→“OK”→“記録終了”→“VisualBasic”→“標準モジュール”

  • ④ Excelの応用例(マクロ)

    よく用いる命令文

    Dim i as integer - 宣言文(変数を使用する場合は必ず宣言する)Dim k as single

    For i = 1 to 100 - For ~next 文 繰り返し処理…

    Next i

    If a < 0.05 then - If文 条件分け… 例)aの値が0.05以下の時だけ塗りつぶす

    End if

    命令文がわからない場合はマクロの自動記録機能を使用する。

    マクロの記録 → “OK” → 実際の処理 → 記録終了 → Visual Basic

  • ④ Excelの応用例(マクロ)

    命令文 命令文の説明

    Sub macro1()

    Dim i as integer

    Dim N as single

    For i = 1 to 30

    N = cells( i , 1 ).value

    If N > 100 Then

    cells( i , 1 ).value = 0

    End if

    Next i

    End sub

    ← マクロのサブルーチン開始

    ← 使用する変数の型を決めるi を整数型で、 N を少数型で使用

    ← For ~ Next の間を30回繰り返す

    ← 変数Nにセルの値を入力

    ← If ~ End ifセルの値が100以上であれば0にする

    ← マクロのサブルーチン終了

    マクロの例 (異常値を見つける)

  • このマクロを実行すると・・・

    ④ Excelの応用例(マクロ)

  • ④ Excelの応用例(マクロ)

    Sub macro1()Dim i as integer

    Dim N as singleFor i = 1 to 30

    N = cells( i , 1 ).value

    If N > 100 Thencells( i , 1 ).value = 0

    cells(i , 1).Select

    With Selection.Interior

    .Pattern = xlSolid

    .PatternColorIndex = xlAutomatic

    .Color = 65535

    .TintAndShade = 0

    .PatternTintAndShade = 0

    End WithEnd if

    Next i

    End sub

    先程のコードのIf文の中に、これら

    のコード(自動記録機能により記

    述)を追記すればよい。

    ※不要なコードもそのまま出てくる

    こともある。

    該当セルを(黄色く)塗りつぶすには・・・自動記録機能の活用

  • ④ Excelの応用例(マクロ)

    等電位線をマクロで計算する(基礎物理学実験Ⅰテキストp.41参照)

    まずシートに以下のようなグラフを作成する。

    これらの数値は電極の座標

  • 次にマクロのひな型を作成し、以下のコードを入力する。Sub Macro1() ' Macro1 Macro

    Dim x, y, v As SingleDim sx(), sy() As SingleDim E, R As SingleE = 11.7647 '=2/0.17 V/mR = 0.035Dim i, h As IntegerReDim sx(5, 100)ReDim sy(5, 100)

    For i = 0 To 100y = 0.15 - 0.003 * i 'y座標:100点分計算For h = 0 To 100x = -0.085 + 0.00085 * h 'x座標:100分割して値をスキャンv = E * R * R * x / (x * x + y * y) - E * x '(8)式If v > 0.8 Then 'あるy座標においてx軸方向にvをスキャンsx(1, i) = xsy(1, i) = yEnd IfIf v > 0.6 Thensx(2, i) = xsy(2, i) = yEnd IfIf v > 0.4 Thensx(3, i) = xsy(3, i) = yEnd If

    If v > 0.2 Thensx(4, i) = xsy(4, i) = yEnd IfIf v > 0 Thensx(5, i) = xsy(5, i) = yEnd If

    Next hNext i

  • 次にマクロのひな型を作成し、以下のコードを入力する。

    For i = 1 To 5 'グラフ出力のためシートの適当な位置に値を出力For h = 0 To 100Cells(100 + h, i * 2) = sx(i, h)Cells(100 + h, i * 2 + 1) = sy(i, h)Next hNext i

    ActiveSheet.ChartObjects("グラフ 1").Activate '以下グラフに等電位線を出力For i = 1 To 5ActiveChart.PlotArea.SelectActiveChart.SeriesCollection.NewSeriesActiveChart.FullSeriesCollection(i + 3).XValues = Range(Cells(100, 2 * i), Cells(200, 2 * i))ActiveChart.FullSeriesCollection(i + 3).Values = Range(Cells(100, 2 * i + 1), Cells(200, 2 * i + 1))ActiveChart.FullSeriesCollection(i + 3).SelectWith Selection.Format.Line

    .ForeColor.RGB = RGB(255, 0, 0)End WithWith Selection.Format.Line

    .Weight = 2End WithNext i

    ActiveChart.PlotArea.Select

    End Sub

  • 自習課題

    1.Excelで以下のようなシートを作成し、横軸をx、縦軸をyとした時の、近似直線の式(y=Bx+A)を最小二乗法で求めよ。またA、Bそれぞれの誤差A、Bも算出すること。レポートには以下のような画面コピーを貼り付けること。

    29

    (ヒント)データの個数Nは“=count(C3:C12)”と入力すると得られる。同様に、x“=sum(C3:C12)”、x2“=sumsq(C3:C12)”、xy“=sumproduct(C3:C12,D3:D12)”と入力する 。

    (応用)分析ツールの回帰分析(アドイン)を使用しても良い!

    No. x y di 2

    1 1 22.12 2 32.73 3 33.84 4 38.35 5 46.8 N x y x 2 xy6 6 55.27 7 55.68 8 62.69 9 63.1

    10 10 69.9 A B

    y A B

    ABxy

  • 2. 次の表の値に対し、ソルバー機能を用いて指数関数

    (y = a[exp(-x/b)]+cx+d a, b, c, dは変数)

    をFittingし、最適解のa, b, c, d(それぞれの初期値は18、4、0.3、-5と設定せよ)の値を求めよ。またその解析結果の様子(目的セルや変化させるセル、図などがあればよい)を画面コピーし、レポートに添付せよ。

    3. 等電位線マクロの出力結果をレポートに添付せよ。

    質問は下記まで

    [email protected] 30

    x 0 1 2 3 4 5 6 7 8 9 10y 15 8.9 4.8 2.2 0.6 -0.3 -0.6 -0.7 -0.3 0.2 0.9