応用数学1(2021)
教科書
https://gyazo.com/d84f0c733be776ac46f167572010b228
オフィスアワー:毎週金曜日 16時40分-18時10分
過去のページ
定期試験
日時 2021/8/2 月 10:30--12:00
場所 工学部 B-202
まとめの資料,毎回のプリント,昨年の定期試験の問題の解答例を WebClass 上に公開しています.復習しておいてください.
B-202
2年生: 学籍番号のうち,最後の数字を捨てたあとの,下2桁の数字が 1から40(これを主要2桁とよぶ)
どこに座ればいい? 学籍番号の主要2桁の数字が書かれた席.黄色の番号.
https://gyazo.com/e512973a588e10584868a07e88885daa
空席: 15
3年生:以下の通り.個別に座席を指定します
06 → 56
08 → 57
14 → 58
29 → 59
50 → 60
54 → 61
5年生:以下の通り.個別に座席を指定します
46 → 62
レポート課題 よくある質問
課題 その1 式(7)
$ x' + x = x^2e^t
これの解析解(手で解ける)は,$ x(t) = \dfrac{1}{C-t}e^{-t}
初期値を $ x(0)=1 で,走らせると
code:ode107.py
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
def f(x, t):
return [ -x0 + x0*x0*np.exp(t) ] # この x0 の意味は,2変数以上の微分方程式を扱うとよくわかる t = np.arange(0, 10, 0.1) # 横軸tの作成.0から10を0.1 おきに.t は横ベクトル.
x = odeint(f, x0, t)
fig=plt.figure(0) # 以下は結果の表示
plt.plot(t, x, linewidth=2, color="red", linestyle="solid",label="$x'=-x +x**2e**t$")
plt.xlabel('time ($t$)', fontsize=14, color='black')
plt.ylabel('$x$', fontsize=14)
# plt.xlim(-1, 5) # 表示範囲を指定したい場合
# plt.ylim(-0.5, 1.2)
plt.grid()
plt.legend()
plt.show()
fig.savefig('fig_ode107.pdf')
https://gyazo.com/e97e62b8e9b6e1f38b8f859ea3f3d9fb
なんかおかしい.warning(警告)がでている.
考えよう!!!
(手で解ける)解析解は,$ x(t) = \dfrac{1}{C-t}e^{-t} ,$ Cは定数.
初期値が $ x(0)=1 の場合,定数 $ C を求めると
$ x(0) = \dfrac{1}{C}e^0 = 1 \Longrightarrow C=1 \Longrightarrow x(t) = \dfrac{1}{1-t}e^{-t}
ということは,$ t=0 から $ t の値が進んで,$ t=0.9999999 になると,分母が小さくなり,$ \dfrac{1}{1-t} は $ \infty になる.
これ以降計算できず.
初期値を変えて実験してみる.
$ x(-10) = 1 としてみる.
code:tmp
x0 = 1.0 # 1.0 は初期値 x(-10) t = np.arange(-10, 10, 0.1) # 横軸tの作成.-10から10を0.1 おきに.t は横ベクトル.
https://gyazo.com/eb66011e87fedc59f5663a1cec3ce37d
初期値を $ x(-10)=1 の場合,定数 $ C は
$ x(0) = \dfrac{1}{C+10}e^{10} = 1 \Longrightarrow C+10=e^{10} \Longrightarrow C \approx e^{10} \Longrightarrow x(t) = \dfrac{1}{e^{10}-t}e^{-t}
この場合も,$ t=e^10 付近(分母がゼロ)になると $ \cdots
ここで紹介した値を使って満足するのでなく,いろいろ,自分で考えて試して,考察してください.
くどいですがが,解は,$ x(t) = \dfrac{1}{C-t}e^{-t} ,$ Cは定数.
2021.5.31 対面形式で実施! (B-102, B-112)
↑ これをクリックして登録すると
レポートを提出する際の注意点:
これが動かないと始まらない
Google アカウントでログインしておく
code:ode101.py
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
def f(x, t):
return [ -3.0*x0 ] # この x0 の意味は,2変数以上の微分方程式を扱うとよくわかる t = np.arange(0, 10, 0.1) # 横軸tの作成.0から10を0.1 おきに.t は横ベクトル.
x = odeint(f, x0, t)
fig=plt.figure(0) # 以下は結果の表示
plt.plot(t, x, linewidth=2, color="red", linestyle="solid",label="$x'=-3x$")
plt.xlabel('time ($t$)', fontsize=14, color='black')
plt.ylabel('$x$', fontsize=14)
# plt.xlim(-1, 5) # 表示範囲を指定したい場合
# plt.ylim(-0.5, 1.2)
plt.grid()
plt.legend()
plt.show()
fig.savefig('fig_ode101.pdf')
https://gyazo.com/6087e255d7b1aacd0b08c65e4a0f3e9c
https://gyazo.com/14d501e34684e1abc7d4d02dcbe8bf3f
np.arrage とは? 例で説明。Copy & Paste ではなく、自分の手でキーボードから入力してみる。
code:tmp102.py
t = np.arange(1, 2, 0.1)
print(t)
https://gyazo.com/a5f615f6c4de4d9eb79dbb032d708eb3
code:tmp105.py
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5, 5, 0.1) # 横軸の作成
y = np.sin(x)
plt.plot(y)
code:tmp106.py
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5, 5, 1.0) # 横軸の作成
y = np.sin(x)
plt.plot(x,y)
plt.plot(x,y,'ro')
https://gyazo.com/fcc63910cd4ddc263813f1e3629e1063
https://gyazo.com/de8aed46ba2ecb5d41b5f658b3b8ef36https://gyazo.com/54208a7bdf68fbd3366760ff09ec5430
code:tmp107.py
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5, 5, 0.1) # 横軸の作成
y = np.sin(x)
plt.plot(x,y)
plt.plot(x,y,'ro', markersize=2)
https://gyazo.com/c319fccb966c89acc27ab4fb1d0e2ca2
def は関数の定義
code:tmp107.py
def add(a, b):
x = a + b
return x
x = add(2, 5)
print(x)
# 7
odeint(f, x0, t)
code:000.py
def f(x, t):
return [ -3.0*x0 ] # この x0 の意味は,2変数以上の微分方程式を扱うとよくわかる t = np.arange(0, 10, 0.1) # 横軸tの作成.0から10を0.1 おきに.t は横ベクトル.
x = odeint(f, x0, t)
x には微分方程式を解いた結果が返ってくる
引数の f は,微分方程式の定義.この場合は $ \dfrac{dx}{dt} = -3x の右辺を f で定義している.
引数の x0 は.x の初期値.
t は tそのもの.解きたい範囲のt をベクトルで与えている.
https://gyazo.com/06f91a47fb6ff688efb83f5f3240f551
よくある質問
課題 その1 式(7)
$ x' + x = x^2e^t
これの解析解(手で解ける)は,$ x(t) = \dfrac{1}{C-t}e^{-t}
初期値を $ x(0)=1 で,走らせると
code:ode107.py
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
def f(x, t):
return [ -x0 + x0*x0*np.exp(t) ] # この x0 の意味は,2変数以上の微分方程式を扱うとよくわかる t = np.arange(0, 10, 0.1) # 横軸tの作成.0から10を0.1 おきに.t は横ベクトル.
x = odeint(f, x0, t)
fig=plt.figure(0) # 以下は結果の表示
plt.plot(t, x, linewidth=2, color="red", linestyle="solid",label="$x'=-x +x**2e**t$")
plt.xlabel('time ($t$)', fontsize=14, color='black')
plt.ylabel('$x$', fontsize=14)
# plt.xlim(-1, 5) # 表示範囲を指定したい場合
# plt.ylim(-0.5, 1.2)
plt.grid()
plt.legend()
plt.show()
fig.savefig('fig_ode107.pdf')
https://gyazo.com/e97e62b8e9b6e1f38b8f859ea3f3d9fb
なんかおかしい.warning(警告)がでている.
考えよう!!!
解析解(手で解ける)は,$ x(t) = \dfrac{1}{C-t}e^{-t}
初期値を $ x(0)=1 の場合,定数 $ C は
$ x(0) = \dfrac{1}{C}e^0 = 1 \Longrightarrow C=1 \Longrightarrow x(t) = \dfrac{1}{1-t}e^{-t}
ということは,$ t=0 から $ t の値が進んで,$ t=0.9999999 になると,分母が小さくなり,$ \dfrac{1}{1-t} は $ \infty になる.
これ以降計算できず.
初期値を変えて実験してみる.
$ x(-10) = 1 としてみる.
code:tmp
x0 = 1.0 # 1.0 は初期値 x(-10) t = np.arange(-10, 10, 0.1) # 横軸tの作成.-10から10を0.1 おきに.t は横ベクトル.
https://gyazo.com/eb66011e87fedc59f5663a1cec3ce37d
初期値を $ x(-10)=1 の場合,定数 $ C は
$ x(0) = \dfrac{1}{C+10}e^{10} = 1 \Longrightarrow C+10=e^{10} \Longrightarrow C \approx e^{10} \Longrightarrow x(t) = \dfrac{1}{e^{10}-t}e^{-t}
この場合も,$ t=e^10 付近(分母がゼロ)になると $ \cdots
code:ode109.py
def f(x, t):
return [ (-x0+1.0)/0.1, (-x1+1.0)/1.0, (-x2+1.0)/10.0 ] t = np.arange(0, 20, 0.1)
x = odeint(f, x0, t).T
fig=plt.figure(0)
plt.plot(t, x0, linewidth=2, color="red",label='$\\tau=0.1$') plt.plot(t, x1, linewidth=2, color="green",label="$\\tau=1.0$") plt.plot(t, x2, linewidth=2, color="blue",label="$\\tau=10.0$") plt.xlabel('time ($t$)', fontsize=14, color='black')
plt.ylabel('$x$', fontsize=14)
plt.grid()
plt.legend()
plt.show()
fig.savefig('fig_ode109.pdf')
https://gyazo.com/afc75e057e54b7e81535cdb72c0825e0
連立の微分方程式
https://gyazo.com/3a354ae22e2f61ec6bf001157460f2c7
code:ode999.py
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
def f(x, t):
return [ x0 - 2.0*x1, x0 - x1 ] t = np.arange(0, 10, 0.1) # 横軸 t の作成
x = odeint(f, x0, t).T
fig=plt.figure(0)
plt.plot(t, x0, linewidth=2, color="red",label='$x(0)$') plt.plot(t, x1, linewidth=2, color="green",label="$x(1)$") plt.xlabel('time ($t$)', fontsize=14, color='black')
plt.ylabel('$x$', fontsize=14)
plt.grid()
plt.legend()
plt.show()
fig.savefig('fig_ode999a.pdf')
fig=plt.figure(1)
plt.plot(x0, x1, linewidth=2, color="red") plt.xlabel('$x(0)$', fontsize=14, color='black')
plt.ylabel('$x(1)$', fontsize=14)
plt.axis('equal')
plt.grid()
plt.show()
fig.savefig('fig_ode999b.pdf')
https://gyazo.com/9dc2140416a8e4b60b0cc2f277975881
2021.5.17
2021.5.10
2021.4.26
2021.4.19
SARTRAS(サートラス)
Society for the Administration of Remuneration for Public Transmission for School Lessons
一般社団法人 授業目的公衆送信補償金等管理協会
2021.4.12
(準備中)
https://gyazo.com/b69e71d9996d48799c30448a9a96a9e0