goo blog サービス終了のお知らせ 

korondemoのメモ

記憶の助けとして

非線形系

2006-03-03 09:37:25 | Scilab
Av=u-B(2gx)^0.5

のような非線形系は図のようになります.
A=1, B=0.05, g=9.8, u=0.1
としています.
x(0)などとして実行してみましょう.

BlockPaletteSetValue
ConstantSourcesConstant0.1
IntegralLinearInitial Condition0.5
u^aNon Linearto the power of0.5
ScopeSinksRefresh period10
Ymin0.2
Ymax0.5

伝達関数,状態方程式・出力方程式

2006-03-01 09:00:43 | Scilab
伝達関数を使って表すこともできますし
状態方程式と出力方程式を使って表すこともできます.

BlockPaletteSetValue
continuous SISO transferLinearNumerator1
Denominator10+s+s^2
continuous linear systemLinearA[0 1;-10 -1]
B[0;1]
C[1 0]
D0
Initial state[0;0]


Scilab で以下のようにすると伝達関数から各行列を求めることができます.

s=poly(0,'s');
tf2ss(1/(10+s+s^2))

逆に以下のようにすると各行列から伝達関数を求めることもできます.

a=[0 1;-10 -1];b=[0;1];c=[1 0];
ss=syslin('c',a,b,c);
ss2tf(ss)

線形系のステップ応答

2006-02-28 08:50:46 | Scilab
ma+cv+kx=u

m: 質量
k: バネ定数
x: 変位
v: 速度
a: 加速度

速度vに比例する抵抗cvが働く場合です.

m=1, c=1, k=10
とした場合の絵です.

BlockPalette
SaturationSources
IntegralLinear
+Linear


ブロックの上で右クリック
[Flip]を選択
とするとブロックを左右反転することができます.

Scicos

2006-02-27 12:53:06 | Scilab
Scilab のメニューバーから
Applications => Scicos
とすると Scicos が起動します.

Scicos のメニューバーから
Edit => Palettes
とすると必要なパレットを選択し
表示させることができます.

配置したブロックの上で右クリック
[Open/Set]を選択
とするとパラメータを設定することができます.

図のようにブロックを配置し必要なパラメータを設定します.
ブロックの存在するパレットと設定するパラメータは以下の通りです.

BlockPaletteSetValue
Gen_SinSources
ClockSources
GainLinearGain5
MuxBranchng
ScopeSinksRefresh period10


Scicos のメニューバーから Simulate => Setup
Final integration time を 10 とし
[OK]ボタンをクリック
Simulate => Run として実行します.

グラフ(3D)

2006-02-22 18:49:41 | Scilab
function [x y]=meshgrid(x0,y0)
x=(x0.')*ones(1,length(y0));
y=ones(length(x0),1)*y0;

という 3 行の中身のテキストファイルを
meshgrid.sci
という名前で保存しておきます.

getf('meshgrid.sci');
d=linspace(-3,3,50);
[x y]=meshgrid(d,d);
z=cos(x)+sin(y);

plot3d3(x,y,z)
a=gca();
a.axes_visible=['on' 'on' 'on'];
xgrid

グラフ

2006-02-15 16:43:50 | Scilab
x=0:%pi/10:2*%pi;
y=sin(x);
plot(x,y)

とするとsin(x)のグラフが描けます.

y1=sin(x);
y2=cos(x);
plot(x,y1,x,y2)

とするか

y(1,:)=sin(x);
y(2,:)=cos(x);
plot(x,y)

とすると
sin(x) と cos(x) が重ね描きされます.

xtitle('title','x','y')

とするとタイトルと軸の名前を入れることができます.

legend('sin','cos')

とすると凡例を入れることができます.