掲示板

スマホで数値計算(山崎純一)

10_フーリエ変換

% 2021-08-13 Ver 1.

% フーリエ変換するデーターを読込み、プロット
F0 = importdata('FFTTest-01.txt');
plot (F0)

% F0の1から300番目を取り出しプロット
F0s = F0(1:300,:);
plot (F0s)

% フーリエ変換し、プロット
t = 0.01; % サンプリング周期
l = 1024; % データー点数
F1 = fft(F0); % フーリエ変換
F2 = abs(F1/l);
F3 = F2(1:l/2+1);
ts = 1/t;
tt = ts*(0:(l/2))/l;
plot (tt,F3)

% 横軸を拡大
xlim([0,20])

 

06_二次元グラフ

% 2021-8-13 Ver 1.00

% 関数を-5 5の区間でプロット
fplot(@(x) sin(x))


% 関数を0 5の区間でプロット
fplot(@(x) 3*sin(x)^2+cos(x),[0 5])


% 関数を2ポイントのラインでプロット
fplot(@(x) sin(x+pi/5),'Linewidth',2)


% 関数を2ポイントのラインでプロット
fplot(@(x) sin(x+pi/5),'Linewidth',2);
hold on
fplot(@(x) sin(x^2+pi/5),'--or');
fplot(@(x) sin(x^3+pi/3),'-.*c');
hold off

 

04_三角関数の微積分

% 2021-8-13 Ver 1.00

% sin(x) の微分 高校数Ⅲ
syms x
f = sin(x)
diff(f)

% cos(x) の微分 高校数Ⅲ
syms x
f = cos(x)
diff(f)

% tan(x) の微分 高校数Ⅲ
syms x
f = tan(x)
diff(f)

% y = 5*e^x * sin(x) のx= 4.7におけるyの微分
syms x
y = 5*exp(x)*sin(x)
g = diff(y)
vpa(subs(g,x,4.7))
ezplot(g)

% 台形則を用いた数値積分 1
d = pi/10000;
x = 0:d:pi;
y = sin(x);
a = d*trapz(y)
plot(x,y)

% 台形則を用いた数値積分 2
d = pi/5;
x = 0:d:pi;
y = sin(x);
a = d*trapz(y)
plot(x,y)

 

 

03_行列の入力と計算

% 2021-8-13 Ver 1.00

% 行の入力
clear
A = [1, 2, 3, 4, 5]

% 行の結合
A = [1, 2, 3, 4, 5]
B = [6, 7, 8, 9, 10]
C = [A, B]

% 列の入力
A = [1; 2; 3; 4; 5]

% 行から列へ
clear
clc
A = [1, 2, 3, 4, 5]
% B = A'
B = A'


% 固有値 1
% 物理と工学で使う行列と固有値 P38
%
% | 0 -1 1 |
% A = | -1 2 1 |
% | 1 1 2 |
%
A = [0 -1 1 ; -1 2 1 ; 1 1 2]
e = eig(A)


% 固有値 2
% 物理と工学で使う行列と固有値 P38
%
% | 0 -1 1 |
% A = | -1 2 1 |
% | 1 1 2 |
%
A = [0 -1 1 ; -1 2 1 ; 1 1 2]
e = eig(A, 'matrix')

 

 

 

02_簡単な四則演算,階乗等

% 2021-8-13 Ver 1.00

% 加減乗除
a = 1;
b = 3;
c1 = a + b
c2 = a - b
c3 = a * b
c4 = a / b
c5 = a \ b

% 可変(任意)精度の演算
c4
disp('digits(10)')
digits(10)
vpa(c4)

% 可変(任意)精度の演算
disp('digits(30)')
digits(30)
vpa(c4)

% 可変(任意)精度の演算
disp('digits(3)')
digits(3)
vpa(c4)

% 階乗
a = 11;
b = a^2
c = a^3


% 平方根
a = 64;
b = sqrt(a)
c = -1;
d = sqrt(c)


% 実数のn乗根
a = 8;
b = nthroot(a,3) % 3乗根
c = -27;
d = nthroot(c,3) % 3乗根


% vpasolve 方程式の数値的な求解 1
% 例:方程式 x + 2 = 23 を数値的に解き、x を求める
% syms はシンボリック変数の作成
syms x
vpasolve(x + 2 == 23,x)


% vpasolve 方程式の数値的な求解 2
% 例:方程式 x^2 + 4 = 3 を数値的に解き、x を求める
syms x
vpasolve(x^2 + 4 == 3,x)


% vpasolve 方程式の数値的な求解 3
% 例:方程式 x^2 + 3 = 13 を数値的に解き、x を求める
syms x
vpasolve(x^2 + 3 == 13,x)

 

01_基本操作法

% 2021-8-13 Ver 1.00

% 変数のリストを表示する
who

% 名前付き変数のクリア
% 3 つの変数、a、b、c を定義し、その後、a と c をクリアする。
a = 1;
b = 2;
c = 3;
who
clearvars a c
who


% whos 変数リストの詳細表示
a = 1;
b = 2;
c = 3;
who
whos


% clear すべての変数を削除する
a = 1;
b = 2;
c = 3;
who
clear
who


% 変数 a b c のうち、b を削除し、a と b は残す
a = 1;
b = 2;
c = 3;
who
clear b
who


% dir フォルダー内容の一覧表示
dir


% ls 現在のフォルダー内容の一覧表示
ls


% pwd 現在のフォルダーの識別
pwd

実習用データ

クラウドにあるMATLAB Driveにサインインすることで,データをパソコンでもスマホでも共有できます.ダウンロードしたファイルをクラウドの置けば,MATLABのパスを気にせずにアクセスできます.

■ポケモンステータスファイル数値解析用
ポケモン800種のステータスデーター

PKAtk.txt
PKDef.txt
PKGene.txt
PKHP.txt
PKName.txt
PKSpAtk.txt
PKSpDef.txt
PKSpeed.txt
PKTotal.txt

元データー Kaggle Pokemon with stats
https://www.kaggle.com/abcsds/pokemon  

■フーリエ変換 実習用データーファイル

FFTTest-01.txt

スマホでMATLABの学習の進め方

■お手持ちのスマホやタブレットにMATLABをインストール(無料)して参加されると,実習ができます.
スマホやタブレット(ipadでもandroidでもOK)にMATLABをインストールします.私(谷)は,パソコンwindowsで,Scilab(無料,MATLAB互換)を使っていますが,高価なMATLABがスマホで無料とは知りませんでした.
スマホにインストールするMATLABアプリは,スマホでGooglePlayなどから探します(windows版ではありません).

このとき,MathWorksアカウント(無料)を作ります.これでクラウドにMatlab driveが持てます.
Matlab driveにアップロードしたファイルは,Matlabで使えます.Matlab driveはクラウドにあり,パソコンからでもスマホからでも使えます.  

学生さんはスマホを持っていますから,MATLABを数学(特に,行列)の学習に利用できます.
(ただし,MATLABはクラウドを使いますからインターネットの環境は必要です)

■山崎先生ZOOM講演の進め方:

①スマホで数学月間の会HPを開く
http://sgk2005.saloon.jp/bbses/bbs_articles/view/123/7494b7293580efbec898d504b9c819a7?frame_id=155

プログラムの必要部分をコピーする.

②MATLABアプリを開き,>>の位置にコピーしたプログラムをペーストする.
実行

このとき,データファイルのあるディレクトリに移動(cdやlsなどのunixコマンドを使う)して実行する.

(注意)ZOOM講演を視聴するのは,スマホとは別のパソコンなどがあるとベストです.1台のスマホで,ZOOMの視聴,数学月間ホームページを開く,MATLABを使うの3役をさせることも可能ではありますが,操作が煩雑です.