このブログの中を検索する

ラベル 仕組み/アルゴリズム の投稿を表示しています。 すべての投稿を表示
ラベル 仕組み/アルゴリズム の投稿を表示しています。 すべての投稿を表示

2013/03/10

係数図法 : 特性多項式の表現を用いて制御系の設計を行う手法、真鍋氏

title: 係数図法 : 特性多項式の表現を用いて制御系の設計を行う手法、真鍋氏
url: http://www.cityfujisawa.ne.jp/~manabes/
http://www.cityfujisawa.ne.jp/~manabes/CDMBook.htm
http://www.cityfujisawa.ne.jp/~manabes/CDMCAD.htm

snippet:
-----引用-----

係数図法の中心は「係数図」である。係数図では、特性多項式の係数を対数目盛りで縦軸に、その係数の次数を線形目盛りで横軸にとる。それらを繋ぐ図形の曲率が安定度を表し、その傾斜が応答の速さを表している。またあるパラメータの変化に対する、図形の変形の度合いがロバスト性の尺度である。このように制御系の3個の重要要素、安定性・応答性・ロバスト性が一つの図形で表されることになる。特性多項式は、開ループ伝達関数の分母多項式と分子多項式の和であるから、これらの多項式も係数図上には示されている。これらの多項式を用いれば、周波数特性と時間特性を概略推定することができる。このように係数図は一つの図の中に非常に豊富な情報を包含しており、しかもそれらを直感的で理解し易い形で図式表現している。すなわち係数図は、設計・シンセシス問題でボーデ線図が果たしている役割を、さらに効果的な形で果たしているのである。

-----引用-----

2012/04/11

マネージ ヒープ = ガベージ コレクション(garbage collection)機能によって管理されたメモリ


title: マネージ ヒープ = ガベージ コレクション(garbage collection)機能によって管理されたメモリ
url: http://csharptan.wordpress.com/2011/12/15/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/

snippet:

-----引用-----
.NETのように、ガベージ コレクション(garbage collection)機能によって管理されたメモリをマネージ ヒープ(managed heap)と言います。

マネージ ヒープの性質:
  • マネージ ヒープは、全体としてのスループット的には非常に性能がいいです
  • ヒープ(動的なメモリ確保)が必要なら、素直にマネージ ヒープに任せる方がいいです
  • ただ、処理負荷がある1点に集中してしまうことがあります
  • 手動管理ではそもそもヒープを使わないような最適化が可能ですが、自動管理の場合はそういう最適化がしにくいです
  • 下手なことをすると、ガベージ コレクションの仕事を阻害して、かえって遅くなります
  • マネージ ヒープは、確保できる物理メモリ量が多めにある時に良い性能を発揮します
  • 省メモリ環境は苦手です
  • 物理メモリを目いっぱい使うようなキャッシュ処理は苦手です
-----引用-----

.NETの共通型システム


title: .NETの共通型システム
url: http://csharptan.wordpress.com/2011/12/15/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/

snippet:

-----引用-----
今はもう、ライブラリやフレームワークなくしてアプリなんて作れません。.NETやJavaを見ての通り、標準ライブラリの時点で膨大な量のライブラリがあり、さらに、第3者提供のライブラリも山ほど見つかります。

これだけ大量のライブラリがあって、使いこなすことが要求されると、プログラミング言語自体を覚えることよりも、ライブラリを覚えるコストの方がはるかに大きいです。逆にいうと、ライブラリさえ共通利用できるなら、言語の違いなんて微々たるものです。

.NETのライブラリは、C#からでもVBからでも、なんなら、PowerShellやIronPythonなどからでも共通利用可能です。これが可能なのは、共通型システム(common type system)という、型の取り扱いに関する規格を持っているからです。

Windows 8で、共通型システムの適用範囲が広がります。.NETのメタデータ規格を流用して、ネイティブやJavaScriptでも型を共通利用できるようになります。
-----引用-----

2012/04/09

C#とILコード(.NETの中間言語)の対比


title: C#とILコード(.NETの中間言語)の対比
url: http://csharptan.wordpress.com/2011/12/17/net%e3%81%ae%e4%b8%ad%e9%96%93%e8%a8%80%e8%aa%9e/

snippet:

-----引用-----
  • intなどのいくつかの型は、加減乗除など、専用の命令を持っています(プリミティブ型と呼ばれます)
  • ちなみに、decimalはプリミティブではないです。ただの構造体
  • デリゲート、列挙型は特別扱いを受けています
    内部的にクラスになったりするわけではなく、別定義
  • 一方、null許容型ただの構造体です
  • 配列も結構特殊な扱いを受けています
  • 文字列(stringクラス)は単なるクラスですが、リテラルの扱いが多少特殊です
    C#で、文字列だけは参照型なのにconstを付けれるのはそのため
  • ポインター型もあります
  • 加減乗除などの命令には、オーバーフローのチェックをするタイプとしないタイプとがあります
    チェックするタイプでは、オーバーフロー時に例外を発生させます
  • switchステートメント相当の専用命令があります
    状況に応じて、if-else的なコードにJITするか、ジャンプテーブル的なコードにJITするか選んでくれるそうです

C#にはあるけど、ILには直接はないもの:
  • インデクサー
    内部的にはプロパティ扱いです
  • ユーザー定義の演算子
    単なる静的メソッドになります
  • ループ(while, for, foreach)
    ifとgoto的なコードに展開されます
  • ラムダ式、イテレーター、非同期メソッド、dynamic
    かなり込み入ったコード生成してます
    イテレーターとかラムダ式に至っては、クラスが生成されたりしてます
  • クエリ式
    割かし単純なメソッド呼び出しへの置き換え
  • lockステートメント
    Monitorクラスに丸投げ
  • 拡張メソッドデフォルト引数、dynamicな引数
    属性が付くだけ

ILにはあるけど、C#にはないもの:
  • 本当の意味での可変長引数
    C#のものは、配列の自動生成で実装しています
    ILレベルでは、任意個数のスタックを消費してメソッドを呼び出す方法があります
  • 変数の間接参照
    C#だと、引数を参照渡しするときしか間接参照がおきませんが、ILレベルではもっといろいろ使える参照ロード/ストア命令があります
  • デリゲートとは別に、関数ポインターを持っています
-----引用-----

スタック型とレジスター型


title: スタック型とレジスター型
url: http://csharptan.wordpress.com/2011/12/17/net%e3%81%ae%e4%b8%ad%e9%96%93%e8%a8%80%e8%aa%9e/

snippet:

-----引用-----
.NETのILに限らないんですが、多くの仮想マシンはスタック型マシンになっています。

一方で、実CPUはだいたいレジスター型と呼ばれる構造をしています。スタックとは別に、レジスターと呼ばれる、高速に読み書き可能な記憶領域(個数が限られています)を持ちます。

コンパイラーがスタック型の命令を作るのは結構簡単です。仮想マシンの命令がスタック型になっていることが多いのはこのためです。レジスター型のCPU向けのコンパイラーであっても、一度スタック型の中間言語を生成した後で、実際のレジスター型の命令に置き換えるようなものも多いです。
-----引用-----

2012/04/06

コレクションの内部実装


title: コレクションの内部実装
url: http://csharptan.wordpress.com/2011/12/13/%e3%82%b3%e3%83%ac%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3-2/

snippet:

-----引用-----
配列リスト
配列がいっぱいになったら、新しい配列を確保して要素をコピーします。

ハッシュ テーブルの原理
確保するバケツのサイズは十分大きくなければいけません。事前に大き目の領域を取れない場合、被りやすくなり、性能を落とします。

-----引用-----

2012/03/29

値型と参照型


title: 値型と参照型
url: http://csharptan.wordpress.com/2011/12/07/%e5%80%a4%e5%9e%8b/

snippet:

-----引用-----
値型と参照型:
  • 継承や仮想メソッドを使う場合、 値型でなく参照を使わないとうまく動かない 
  • 参照型を使うと、1段階余計な間接参照が起こります。
  • オブジェクトのサイズが小さく、読み書きの頻度が高い場合、無視できないコストになります。
-----引用-----

主成分分析


title: 主成分分析
url: http://csharptan.wordpress.com/2011/12/05/%e7%b5%b1%e8%a8%88%e6%95%b0%e5%ad%a6/

snippet:

-----引用-----
X={xij} (第i週のj曜日のPV)
RX=X^T X (Xの相関行列)
RX=V^T Λ V (相関行列を固有値分解)
として、固有値のうち、絶対値が最大のものが、Λ の k 行目に現れるものとします。すると、
Y=V^T X (Xを相関行列の固有ベクトルを使って分解)
のk行目に、主成分(データ系列をもっともよく表す成分)が現れます。
-----引用-----