システムとモデリング

エンジニアリング, Julia, SysML, Matlab/Simulink,他モデリング全般について。

PlantUMLでマインドマップを作成する

コードで図が書ける便利なPlantUMLに最近マインドマップ描画機能が追加されたので試してみたいと思います。 PlantUML関連の記事は以下 otepipi.hatenablog.com otepipi.hatenablog.com otepipi.hatenablog.com otepipi.hatenablog.com マインドマップの例題 …

PlantUML WBSのVisual Studio Codeスニペット

前回、PlantUMLのWBSについての記事を書きました。 otepipi.hatenablog.com 今回はこのPlantUML WBSのVisual Studio Codeのスニペットを作成していきます。 Visual Studio Codeは軽量多機能のエディターで、開発環境としては最もシェアがあります。 insights…

PlantUMLでWBS (Work Breakdown Structure)を作成する

PlantUMLはプログラムコードから図を生成できる便利なツールですが、2019年の3月末に機能が追加されWBS(Work Breakdown Structure)が作成できるようになりましたので、この記事で紹介します。 当ブログでは以前にもPlantUMLでいろいろな図を作っていました…

捕食者の個体数をPID制御する

今回は前回に引き続き、PID制御とはあまり関係のなさそうな分野で無理やりPID制御を導入してみます。 前回の記事は以下 otepipi.hatenablog.com 今回は生物の捕食ー非捕食関係下の個体数の変動を取り扱います。 捕食者、非捕食者の個体数の関係はロトカ・ヴ…

魚の体重をPID制御する

今回はPID制御を用いて魚の体重をコントロールしてみます。 魚の体重の成長曲線を示すモデルとしてフォン・ベルタンフィーモデルがよく知られています。 $$ \frac{dw}{dt} = \alpha w^{2/3} - \beta w $$ ここで$w$は魚の体重を示します。また右辺第一項は栄…

OctaveとMatlabの速度比較

前回に引き続きOctaveとMatlabで速度比較をしてみます。 前回は以下 otepipi.hatenablog.com 今回はOctave, Matlabともに前回と同じ以下のコードで計算させてみます。 n = 10000; step = 100; A = rand(n,n); v = rand(n,1); T = [ ]; sizeA =[ ]; for k = 5…

OctaveとJuliaの行列演算速度を比較する

今回はOctaveとJuliaの行列演算速度を比較してみます。 高速と言われるJuliaですが、Octaveと比べてどの程度早いのでしょうか? 題材は以下より、n ×n行列とn×1列の積をとります。 この計算速度は一般的にO(n2)になるとされています。 MATLABとOctaveによる…

Octaveでメッシュを作成する DistMesh

今回は制御工学ではなく有限要素法に関係する内容です。 有限要素法についても全く素人なのですが、Octaveでメッシュを作成するプログラムが公開されていましたので、それのチュートリアルを試してみたいと思います。 DistMesh DistMeshはMATLABとGNU Octave…

プラントの理論モデルに使用する式には注意しよう(戒め)

以下の記事に使用した計算モデルに間違いがあったため修正と、教訓のために記事を残しておきます。 otepipi.hatenablog.com otepipi.hatenablog.com 何を間違ったか プラントモデルに使用する数式を間違えました 上記記事では以下の例題を扱っておりました。…

JuliaでPID制御:自動調整の検定

これまで何回かJuliaでPID制御をする記事を書きましたが、コードの正しさを確認する検定を行っていなかったので今回はそれを確認します。 過去の記事は以下 otepipi.hatenablog.com otepipi.hatenablog.com otepipi.hatenablog.com 今回の検定内容 ジーグラ…

ブログテーマを変更しました

突然ですがブログテーマを『Push-up』に変更しています。 blog.hatena.ne.jp タイトルの文字の大きさやタイトルの高さなど、CSSをいくら弄っても反映されず(私の環境からはそう見える)苦戦している状況です。 しばらくの間レイアウトがコロコロ変わるかと…

MarkdownでJuliaを実行する

今回は前2回と同様にMarkdown Preview Enhancedを使い、今回はJuliaを実行してみます。 otepipi.hatenablog.com otepipi.hatenablog.com shd101wyy.github.io 前提として、Juliaがシステム環境変数Pathに登録されている必要があります。 Markdownで下記のよ…

MarkdownでOctaveのコードを実行させる試みが失敗

前回に続きMarkdown Preview Enhancedで遊んでみます。 shd101wyy.github.io このマニュアルにはコードチャンク内でプログラムを実行する方法について書いてあり ~~~javascript {cmd="node"} const date = Date.now() console.log(date.toString()) ~~~ のよ…

Markdownで gnuplotのグラフを作成する(Visual Studio Code)

今回はVisual Studio Code の拡張"Markdown Preview Enhanced"を使用して文章中にグラフを挿入してみたいと思います。 レポートの作成の際に文書とグラフを単一ファイルで管理できるので色々便利です。 gnuplotのダウンロード 昔からあるグラフ描画エンジン…

Dockerの導入とJulia/Octaveセッションの起動まで(win10 Home)

最近巷ではDockerが流行していることもあり、私も勉強のためシミュレーション環境をDockerに移行してみたいと考えています。 導入に向けての記録を備忘録代わりにとっておきます。 環境 win10 Home 64bit intel core i7 事前準備としてタスクマネージャーの…

JuliaでPIDのオートチューニング その2進捗状況

この記事中のプログラムコードには誤りがあります。 詳細は下記記事を御覧ください。 otepipi.hatenablog.com 前回からの続きです。今回は前回のオートチューニングで得られたパラメーターを当てはめてPIDしてみます。 前回は↓ otepipi.hatenablog.com 得ら…

JuliaでPIDのオートチューニング その1

この記事中のプログラムコードには誤りがあります。 詳細は下記記事を御覧ください。 otepipi.hatenablog.com 今回はJuliaでPIDパラメーターのオートチューニングを行ってみます。 今回、PIDのオートチューニングにはジーグラ・ニコルスのステップ応答を使用…

JuliaでPID制御を実装する。

前回、JuliaでPI制御を実装しましたので、今回はそれに微分ゲインを加えてPID制御にします。 otepipi.hatenablog.com 離散的であるプログラムでの実装では微分制御は以下の式で実装できます。 $$ \begin{equation} u_d(t)=k_d \frac{e_t - e_{t-1}}{⊿t} \end…

JuliaでPI制御を実装する

今回はプログラミング言語JuliaでPI制御を実装してみます。練習のため制御関係のパッケージは使用せず、一から実装してみました。 例題は下記書籍のものになります。 エンジニアのためのフィードバック制御入門作者: Philipp K. Janert,野原勉,星義克,米元謙…

制御工学の書籍紹介

私は制御工学についてはズブの素人なのですが、最近この分野に興味が出てきたので関連書籍をたまに読むようになりました。 その中で今回紹介したいのはこちらの本です。 エンジニアのためのフィードバック制御入門 作者: Philipp K. Janert,野原勉,星義克,米…

Juliaで過渡応答解析(by ControlSystems)

今回はJuliaの制御工学系パッケージ"ControlSystems.jl"で遊んでみたいと思います。 GitHub github.com Document juliacontrol.github.io バネマスダンパ台車系の過渡応答解析 下記Matlab用制御工学の参考書から例題を解いてみます。 制御のためのMATLAB作者…

微分方程式を行列で差分化して解く その3

今回も前回に引き続き行列を使用して1階微分の微分方程式を解いてみます。 前回までは初期値が $$ y(0) = 0 $$ でしたが、そうではない場合について考えていきたいと思います。 前回までの内容は以下になります。 otepipi.hatenablog.com otepipi.hatenablog…

微分方程式を行列で差分化して解く その2

前回からの続きです。 前回は以下 otepipi.hatenablog.com 今回は計算にJulia言語を使用しています。この文章自体も一部Weave.jlを使って書いています。 otepipi.hatenablog.com まず使用するパッケージを読み込んでおきます。 using Gadflyusing LinearAlge…

Weave.jlを使ってJuliaのノートブックを作成する

今回はJuliaのパッケージ"Weave.jl"を使ってjupyter notebookのように文章とプログラミングの演算結果を同時に掲載できるノートブックを作っていきます。 "Weave.jl"と数値計算に強いJuliaを使えば簡単に技術資料を作ることができそうです。 Weave.jl github…

微分方程式を行列で差分化して解く?

ストラング先生の計算理工学に、行列で微分方程式を差分化して解く方法が載っていました。 浅学のためこういった解法は初めてであまり理解もできていませんが、練習してみたいと思います。 世界標準MIT教科書 ストラング:計算理工学作者: ストラングギルバ…

微分方程式を行列で差分化して解く?

ストラング先生の計算理工学に、行列で微分方程式を差分化して解く方法が載っていました。 浅学のためこういった解法は初めてであまり理解もできていませんが、練習してみたいと思います。 世界標準MIT教科書 ストラング:計算理工学 作者: ストラングギルバ…

書評:PROJECT MANAGEMENT FOR THE UNOFFICIAL PROJECT MANAGER

プロジェクトマネジメント洋書の書評になります。 最近出版される技術系和書は入門書が多く、洋書と内容面で隔たりを感じています。プロジェクトマネジメント分野の洋書を読むのは今回が初めてですがAmazonでこの本が人気だったのでKindleで購入してみました…

Juliaで最適化計算

今回はJuliaのパッケージ"JuMP.jl"を使って最適化問題を解いてみます。 JuMP.jlについて Juliaの最適化計算パッケージです。 www.juliaopt.org 特徴は下記のようですね。 本来の数式に近い記述が可能 速い 記述がsolverに依存しない 例題を実行する。 下記ド…

JuliaでModelicaライクなシミュレーション

今回はJuliaのパッケージ"Modia.jl"を使用してModelicaのような非因果モデリングでシミュレーションしてみます。 Modelicaについては以前の記事を参照してください。 otepipi.hatenablog.com Modia.jlについて Modia.jlはJulia言語による方程式ベースのシス…

R Markdownでプロジェクトマネジメント(ガントチャート編

前回に引き続いてR Markdwnを使ってプロジェクト計画書を作成していきます。今回はWBSテーブルからガントチャートの生成を行います。 前回の記事は↓ otepipi.hatenablog.com ガントチャートライブラリ ガントチャートを生成するにはライブラリを使用します。…