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

korondemoのメモ

記憶の助けとして

test2.m (ロボコンマガジン45)

2006-04-17 14:48:53 | Scilab
clear
m=0.002;
w=2*%pi*2;
z=0.1;
k=m*w^2;
c=m*2*z*w;
fff=logspace(-1,2,2000);
for ii=1:2000
ww=2*%pi*fff(ii);
GO(ii)=(c*%i*ww+k)/(m*(%i*ww)^2+c*%i*ww+k);
end
scf(1);
clf()
xgrid
plot2d(fff,abs(GO),rect=[0.1 0.001 100 10],logflag='ll')
xtitle('','freq[Hz]','Gain[times]')
legend('line 1');
scf(2);
clf()
xgrid
plot2d(2*%pi*fff,20*log10(abs(GO)),logflag='ln')
xtitle('','freq[rad/s]','Gain[dB]')
legend('line 1');

多項式 (組み込みプログラミング入門より)

2006-04-15 20:13:03 | Scilab
x^2+x-6=0 の解は
y=[-6 1 1];
y=poly(y,'x','coeff');
roots(y)
で求められます.
係数は次数の低い方から書きます.

逆に
1, 1, 1 が解の多項式は
x=[1 1 1];
y=poly(x,'x','roots')
とすると求められます.
なお poly の 3 つ目の引数は
省略すると 'roots' とみなされるので
y=poly(x,'x')
としても OK です.

a=[4 1 3;7 9 2;8 6 5];
b=poly(a,'x');
のように poly の引数に行列を与えると
固有方程式になります.
roots(x)
として求めた解は固有値です.

(x^2+x-1)(x^3-2x+x)
のような多項式の積は
f=poly([-1 1 1],'x','coeff');
g=poly([1 -2 0 1],'x','coeff');
f*g
とすると求められます.

(x^5+x^4-2x^3+x^2-3x+1)/(x^2-2x+1)
のような多項式の割り算は
f=poly([1 -3 1 -2 1 1],'x','coeff');
g=poly([1 -2 1],'x','coeff');
[r q]=pdiv(f,g)
とすると求められます.
q が商
r が余りです.