2ゲット。 まあ、俺は週末にしか触れそうにないわけだが。 PIDとかやれば工学だろ。
3 :
1 :03/11/15 21:52 ID:9jGh88rP
とりあえず高校入試用の参考書解いていこうとして2ページ目で躓いた。 ・無理数が無いっぽい ・素因数分解をする命令が見つからない …前途多難。無理数は黙殺、単純な素因数分解のルーチンを書いてみる。 メニューの一番右のEditorってのが関数を書くための代物らしく、そこで プログラムしてLoad into Scilabでオケー。 //my_factor::超ぶるーとふぉーすな素因数分解。 //入力チェックだけしてmy_factor_mainに投げます。 function [ret]=my_factor(arg) //入力チェック if ~(exists('arg')) then,error('***HIKISUU GA NAI!***'),end;//引数が無い if ~('constant'==typeof(arg)) then,error('***TEISUU WO IRERO!***'),end;//定数じゃない if ~(isreal(arg)) then,error('***JISSUU WO IRERO!***'),end;//実数じゃない if ~(arg == int(arg)) then,error('***SEISUU WO IRERO!***'),end;//整数じゃない if arg<0 then,error('***SEI NO KAZU WO IRERO!***'),end;//正じゃない if arg==1 then ret = 1;return;end; //本体は別。 ret = my_factor_main(arg,2); endfunction
4 :
1 :03/11/15 21:55 ID:9jGh88rP
…字下げ全滅かよ。泣ける。 //my_factor_main::素因数分解、つうか再帰な割り算。 //入力チェックしてないのでmy_factor()から呼ばれる。 function [ret] = my_factor_main(arg,n) if(modulo(arg,n)==0)then,//割り切れる arg = arg/n; if (arg == 1) then, //おしまい。 ret = n else, //まだなんか残ってる。 ret = [n,my_factor_main(arg,n)] end; else, //割り切れない ret = my_factor_main(arg,n+1); end; endfunction
5 :
1 :03/11/15 22:05 ID:9jGh88rP
今回のポイント: function ... endfunctionでの関数作成 errorによる簡単なエラー処理 exists,typeof,isreal等による型等チェック if ... then, ... else, ...end; による条件分布 行ベクトル返し mod()でもrem()でもなく、modulo() でした。で、スタートアップ時に自動でロードする方法はREADMEを読め、と。
6 :
1 :03/11/16 01:29 ID:3d4KMMbl
酒飲みながらのんびりやっている訳だが、高校受験参考書5ページ目 x+(x-y) → 2x-y が出来ん。 つうかx+yっていう式の定義すらできん。 Mathematicaならこれぐらい10年前近く前でもマニュアル無しで出来ただろ。泣かすぞコラ。 Tips: pause - retrn:pause(Ctrl-C)で入ったローカルな世界からは、'return'で抜けることができる。 環境および変数全般はメニューからセーブでき、ロードできる。 chdir(pwd()+'\My Documents\Scilab') とかでカレントディレクトリを変更できる。 clear('変数名')で変数を消去できる。 who_user()でユーザ変数っぽいもの+αが表示される。 今回のポイント: '...'+'...'で文字列の連結が出来る。 多項式の作成: poly([1,1],'x','coeff')//計数を指定して多項式を作る。1+x。 poly([1,1],'x','roots') //解を指定して多項式を作る。1-2x+x^2。 poly([1,1],'x')は、poly([1,1],'x','roots')と同値。1-2x+x^2。 つうか、x = poly(0,'x')とすれば後は A=1+2*x^-+x*2 とかで簡単に定義できる。
良くも悪くもUnixネイティブやね。.sciの行き当たりばったりな関連付け方法@Win。
ttp://www.dma.utc.fr/%7Emottelet/scilab/ から
ttp://www.dma.utc.fr/~mottelet/scilab/polyScilab1.0.zip を拾ってきて例えば C:\Program Files\Scilab-2.7.2\polyScilab に展開。
で、polyScilab\callsci.bat のSCIDIRとWINを適当に変更、鬱陶しいので
copy /Y %SCIDIR%\polyScilab\scilab.ini %WIN%\scilab.ini
の行コメントアウト。
polyScilab\scilab.iniを何か別の名前にしてしまう。
エクスプローラか何かでフォルダオプション→ファイルの種類で
sci拡張子のopen動作にpolyScilab\callsci.batを関連付ける。
以上で一応動く。多分。
Tips:
Scilab立ち上げのショートカットを弄って例えば↓を作業フォルダに指定。
C:\Documents and Settings\(ユーザ名)\My Documents\scilab
コントロールパネルのシステムの詳細設定→環境変数でユーザ変数
変数名:HOME
変数値:↑↑と同じディレクトリ。
であまりムカつかなくなる。HOMEって大胆な環境変数を作るのがイヤなら
scilab.starを弄る。
8 :
1 :03/11/16 17:17 ID:3d4KMMbl
とりあえず、SymbolicToolboxとかに相当するものは見当たらない。 s = poly(0,'s'); A = 's+s'; evstr(A) で 2s 、ぐらいは単純化してくれるけど多変数も三角関数もダメ。 数値処理ソフトであって数式処理ソフトではない、ってことかね。 今回のポイント: ・evstr('...') で文字列を評価してくれるけど、数式処理能力は無い。 ・似たようなものとして、execstr('...') で文字列を実行。
Tips…?
1:0.1:2 は1から2までの0.1刻みのベクトルを与える。
sin(0:0.1:%pi)とかやるとそれぞれの値が得られるわけだ。
1:5等、間の数字を省略すると刻みは1になる。
2次元配列aはb=a(:)により列ベクトルに変換される。
行と列の優先順位に注意。b(2)で読めるのはa(2,1)だ。つうか何故かa(2)でも読める。
空行列、スカラー、ベクトルそしてマトリクスは定数ならtype,typeofで見ると一緒(constant matrix)。
size()で行、列の数を得ることが出来る。hypermatrix (多次元配列)だとsize(size(行列))が大きくなるわけだ。
length(配列名)は配列の要素数を返すように見えるが、多次元配列で怪しい。size(配列名,'*')が正解っぽい。
ちなみにこれらのため、
>>3-4 の関数my_factorにベクトルとか突っ込むとエラー。難儀やね。
10 :
1 :03/11/18 00:20 ID:XBzMDZGo
深度104。某謎の潜水艦スレと勝負できる日も遠くはあるまい。 とりあえず高校入試用の参考書を解いていくわけだ。 方程式の解(根): x^2+7x+10=0の解を求めよ A = poly([1,7,10],'x','coeff'); roots(A) 約分 : (2x^3-18x)/2xを求めよ A = poly([0,-18,0,2],'x','coeff'); B = poly([0,2],'x','coeff') ; [n,d]=simp(A,B) ソート : 0.1,-0.3,2を小さい物から順に並べよ。また、最も小さい数を選べ。 v = [0.1,-0.3,2] ; gsort(v,'g','i') min(v) 二元一次方程式の解 : 2x+3y=1,5x-2y=12を解け。 1/[2 3;5 -2]*[1 12]'
11 :
1:続き :03/11/18 00:24 ID:XBzMDZGo
プロット : y=-2x+4、y=3x+2のグラフを書け、等。 ieee(2); xbasc(); x = [-5:0.1:5]'; plot2d(x,[-2*x+5 ((-4)./x)+2]) plot2d2(x,[3*x+2 ((6)./x)+2],style=[3 4],leg='Hello@World!',axesflag=5,frameflag=8) plot2d3(x,-0.2*x+5,style=5,axesflag=5,frameflag=8) ↑のどうでもいいポイント: グラフをプロットする時に使うのは列ベクトル。 グラフィックウィンドウクリアはxbasc();。 零で除算のエラーはieee(2);。 今日のポイント: ベクトル/行列xに対し、x'で転置。 xがベクトル/行列の時、1/xは行列演算。各要素毎は「./」、但し演算子の優先順位キモイ。
12 :
1 :03/11/22 19:50 ID:AB82hL51
13 :
あげ :03/11/28 16:52 ID:Oy7hO4i6
あげ
14 :
あげ :03/11/28 16:52 ID:Oy7hO4i6
15 :
あげ :03/11/28 16:58 ID:Oy7hO4i6
>>10 x=poly(0,"x");
clean(roots(x^2+7*x+10))
>>10 A=[2 3
5 -2];
B=[ 1
12];
inv(A)*B
と書くとカクイイ
18 :
1 :03/11/29 01:01 ID:Z3LhkJCO
19 :
名無しさん@3周年 :03/11/29 16:56 ID:UpPmzIH1
おい、入り口の入り口のところをおしえてくれよ ダウンロードしたあとどうしたらいいんだ?
octaveはatlas使ってsse2使えるようにすれば10倍程度速度あがることもあるけど scilabだとなかなかうまくいかないよ。
>>19 入り口:
http://www.scilab.org Windows版なら、ダウンロードして scilab272.exe を実行すれば、
普通にインストールされますので、普通にSCILABのショートカットを
「スタート」から起動すればいいですが?
Linux版とかは 知らね。
あと diary("log.log") というのもあるんだが、ファイルが存在するとエラーになるので (アペンドしてくれりゃいいのに) 今ひとつ使い道がわからない。
>>18 ScilabとMAXIMAは、例えば
MATLABとMathematicaは、どっちもカバーしきれていない部分があるので、
それと同じ事ですね。
scilab.star っていうのがあるのか。それみて初めて
$=poly(0,'$')っていうのが使えるのを知りました。
SCICOSの使い方 scicos(); 以上。
25 :
1 :03/12/02 23:02 ID:ccBQuWad
Windows版MAXIMAがちゃんとあったのでインストールしました。 ラプラス変換〜 LAPLACE(sin(t^2),t,s); よくわからんけど数式がやたらと出てブラボー。 調子に乗って逆ラプラス変換…ILT(%*s,s,t)…通らない模様(w 私はしばらくMAXIMAに潜ります。線形代数あたりまで復習したら こっちに帰ってきたほうが便利な面も出てきそうな雰囲気。
26 :
1 :03/12/02 23:14 ID:ccBQuWad
>>24 俺みたいな素人さんがいきなりそこに行っちゃうと何やっていいのかサパーリ。
倒立振り子ネタぐらい使って遊べるようになりたいんですけどね。
27 :
名無しさん@3周年 :03/12/03 09:59 ID:87nvEw8o
SCICOSの解説しているページってポンポコさんのサイトくらいしかないもんね
28 :
名無しさん@3周年 :03/12/03 10:00 ID:87nvEw8o
>>25 つっかあんた、MAXIMAを触ってみるスレをたててくれよ(w
>>27-28 MAXIMAのインストール以外に関するサイトもポンポコさんの所と後1つぐらいしか無いですね?(w
今はちょっと忙しいんだけど手が空いたらホントにMAXIMAスレ立てるかもしれません。
30 :
1 :03/12/07 00:38 ID:o7fvwPv1
結局さっさとScilabに戻って遊んでるし。判る人には常識かもしれないのだが、 VC++でのexampleディレクトリのサンプルコンパイル方法メモ。 まず、一応ActiveTclをインストール。 ScilabディレクトリのMakefile.incl.makがVC++用のnmakeのインクルードファイルなんで、 こいつの中、Tcl/Tkの項を、 TCLTK=c:\Tcl TKLIBS="$(TCLTK)\lib\tcl84.lib" "$(TCLTK)\lib\tk84.lib" とかに書き換える。 PVMの項は関係なさそうなのでコメントアウト。 #DPVM=-DWITH_PVM んで該当exampleディレクトリで nmake /F makefile.mak で通る。あとはそのディレクトリのREADME通り。
31 :
1 :03/12/07 00:50 ID:o7fvwPv1
ちなみにMAXIMA最初の一歩 ヘルプ:DESCRIBE(〜); 、もしくは ? 〜; とりあえず、Windows版ではto_lisp();が死んでる臭い。quit();も通じない。 下半分は何を放り込んでもISOでエンコード。 MAXIMA>>って出たら:qって打て。 # :!=。 = :等号。 : :割り当て。 := :関数定義。 $はただの出力抑制。
32 :
1 :03/12/07 00:54 ID:o7fvwPv1
二歩目。ここらへんさえ何となく覚えてればMAXIMAは数式処理電卓として活躍してくれるものと思われ。 DIFF,INTEGRATE:微分と積分。 DIPENDS:関数の従属性を宣言する、つまりkはtの関数じゃよ、とか。LAPLACE()はこれを黙殺。 LOAD(FOURIE)、FOURIER、FOUREXPAND、FFT,IFT, POLARTORECT 、RECTTOPOLAR :フーリエ周り LAPLACE、ILT:ラプラス変換。 ALGSYS:連立方程式を解く。 ALLROOTS :多項式の解を求める LET()関連:置き換え規則を作る。 SUBLIST:リストから条件を満たす要素を返す。 SUBST (a, b, c) :要素の入れ替え。 XTHRU (exp) :共通の分母で纏める。 %E,%I,MAX,MIN,MOD,SORT,SQRT,EXPAND,EV,EVAL,IS. MAXIMAネタここまで。
35 :
1 :03/12/07 20:53 ID:o7fvwPv1
>>33 イイ(・∀・)!
ちなみに今コンパイル待ち。
36 :
1 :03/12/07 22:10 ID:o7fvwPv1
intersciが言うこと聞かない。コンパイラがエラー吐いた事しか判らん。
つうわけでソースを落としてきてScilabをVC6++でコンパイルした。手順を以下に。
注:Tcl/Tk8.4ではバージョンコンフリクト。
8.4持ってるなら素直にアンインストールして
http://downloads.activestate.com/ActiveTcl/Windows/8.3.5/あたりからやり直すのが吉 。
んで、Scilabのbinディレクトリに*83.dllをコピーしとく、と。
8.4はちょっといじれば見掛けちゃんと動かせるけど根が深い臭いので幸せになれそうにない。
VC++のvcvars32.batをよくわからんが実行、
Makefile.incl.makのコンパイルオプションに/GX付けて、後
>>30 とかで適当にパス通す。
で、Scilabルートからnmake -f Makefile.mak。
一回目はf2c.exeがねえよって怒られるかもしれないけどもう一回やればオケー。
PVM関連が文句を言ってる気がするが気にしない。
以上で動いてるっぽい。testsディレクトリのmaketests.sceはノーエラーで通る。
これで何とかいろいろ覗き込む下地の出来上がり。
関係ないが、f2c.hの2行目からのコメントは微笑できる。小学館ってのがまた。
37 :
名無しさん@3周年 :03/12/09 08:36 ID:/Z/nrmmR
>>30 exampleディレクトリってコンパイルすると、何かいいことありましたっけ?
それよりSCILABそのものをコンパイルして、日本語(っていうか漢字)
が化けないようにしてくれたら神
38 :
1 :03/12/10 00:57 ID:hZUkwdVo
>>37 examplesディレクトリには独自関数のScilabへのリンク方法やら外からScilab を呼ぶ方法やらが書いてあるようで。
exe実行するとScilabを勝手に叩いてグラフ書いたりするデモも。でもC++通らないんで下調べ中です。
ローカライズ、彷徨いついでに調べてみました。書置き。
入出力系:
wtwxt.cのTextPutStr()、TextGetChE()は文字をバイトの細切れにしてTextPutCh()に放り込んでるだけ。
TextPutCh()はUpdateText()を呼ぶ。こいつはおなじみのAPI、TextOut()を呼ぶ。これで2バイト文字は入出力ともに全滅。
…read_line()呼んでるのは誰なんだ。見つからん。
メッセージ関連:
error.fとmsgs.fにエラーメッセージの羅列。FORTRAN、f2cがマルチバイト文字通すかどうかは謎。
basout()本体はroutines\sun\にあり、ぐるっと回って上のTextPutCh()に。
まあここらへんまでなら潜りついでに叩けるかも。
39 :
1 :03/12/10 01:06 ID:hZUkwdVo
本体のマルチバイト化を思いついた人へ(まあ居ないだろうが)。 routines\system\getsym.fからgetch.f、cvname.f、cvstr.cあたりっぽい。 原理的には可能臭いけど俺には無理。神遠し。
40 :
1 :03/12/13 22:28 ID:Zv1+KLU/
入力とかは一応日本語扱えるようになったぞ。IMEが変な所に表示されるけど。 多分、dllを入れ替えりゃオケー。でも8MBなんでウプする場所が無い。誰か要る? ちなみに、エラーメッセージはコードを日本語に書き直しても通る模様。
41 :
名無しさん@3周年 :03/12/14 09:45 ID:M35EtImH
>>40 scilab.orgへ、「日本語β作ったからためしてみてちょ」ってメール希望。
42 :
名無しさん@3周年 :03/12/15 11:48 ID:Bihst8Cd
43 :
1 :03/12/15 18:12 ID:XyStjyNP
>>41-42 αですってば。SJISだし。むう。
とりあえずYahooGeocitiesに店出してみます。
44 :
名無しさん@3周年 :03/12/16 14:06 ID:pKhuzBih
45 :
1 :03/12/20 16:12 ID:8ZulvDZc
46 :
名無しさん@3周年 :03/12/20 18:57 ID:GIr12gsF
>>45 ==========
scilab-2.7.2
Copyright (C) 1989-2003 INRIA/ENPC
==========
Startup execution:
loading initial environment
-->disp ">>1は神"
>>1は神
-->
47 :
名無しさん@3周年 :03/12/20 19:24 ID:KN8UyZmo
48 :
名無しさん@3周年 :03/12/20 20:07 ID:nScXwsbV
>>45 すいません、そのLibScilab.dllを置き換えて使うと、うちの環境では
s=%s;
G=1/(s+1);
t=0:0.1:10;
sys=syslin("c",G);
y=csim("step",t,sys);
wn=0;xbasc(wn);xset("window",wn);xselect()
plot(t,y)
wn=1;xbasc(wn);xset("window",wn);xselect()
bode(sys)
で、bode(sys)でハングします。どうでしょか?
49 :
1 :03/12/20 21:13 ID:8ZulvDZc
地雷踏みご苦労さまです。 (つうかまともにScilabを使ってる人がいたのか。いきなりバグ報告されてびびった。) で、今確認しました。確かに。 で、原因はコンパイル時に色気を出した最適化オプション(/O2)。 誰ですかいい加減なコーディングしてるのは? 修正したものを上げておいたので入れ替えお願いします。
50 :
惜しい! :03/12/21 10:28 ID:4XUhX+4y
>>49 bodeのハングが無くなりました。乙です。
あと、
a=1.234 ; printf("1)ans=%f\n",a)
a=1.234 ; printf("2)答えは=%f\n",a)
a=1.234 ; printf("3)%s%f\n","答えは",a)
で2)が化けます。
超期待していますので、がんがって下さい
51 :
1 :03/12/21 21:46 ID:hmahn+ef
しゅーせー。 ちなみに複数行に渡る日本語をエディットしようとすると死にます。 ゴマカシの所為なんだけど修正がバッファのの構成上ちょっと苦しい。
52 :
名無しさん@3周年 :03/12/22 10:46 ID:OWXt2jTD
VineLinux2.7にscilab2.7のRPMを入れようとしたら入んない。 INRIAで公開されているRPMはREDHAT用なのか? どうにかならんか?
53 :
名無しさん@3周年 :03/12/22 20:03 ID:g0cvXjq0
54 :
OKです(・∀・) :03/12/22 20:17 ID:g0cvXjq0
s=%s; printf("1次遅れのパラメータを入れてください(1とか)"); a=scanf("%f"); G=1/(s+a); t=0:0.1:10; sys=syslin("c",G); y=csim("step",t,sys); wn=0;xbasc(wn);xset("window",wn);xselect() plot(t,y) wn=1;xbasc(wn);xset("window",wn);xselect() bode(sys) --------------------------------------------- ちゃんと通ります。もう少し使い込んでみます。 有難うございました。
55 :
1 :03/12/23 09:07 ID:gHIRChx+
56 :
1 :03/12/31 22:34 ID:G3OEteCy
保守。よい御年を。
57 :
1 :04/01/12 14:12 ID:iKzGD9so
深度200。
58 :
名無しさん@3周年 :04/01/16 09:06 ID:Ej6dcuiM
あけおめことよろ
60 :
名無しさん@3周年 :04/01/26 11:00 ID:4MkKxq/7
>>60 メニューとステータスバー以外に言葉でてこないじゃん…
ちなみに
test1 = 'disp(''まいどー'')';
test2 = 'disp(''どうもー'')';
Actions = ['execstr(test1)';'execstr(test2)'] ;
addmenu('てすと',['てすと1','てすと2'],list(0,'Actions'));
が通るのでメニューの日本語化は可能。
ただしmacros\scicos内のsetmenu/unsetmenu/addmenu/delmenu周りを全部書き換えにゃならん。骨。
62 :
名無しさん@3周年 :04/01/28 15:52 ID:IzfbrY4d
>>61 SCICOSにブロックを何か置いて、
Object/Identification でそのブロックをクリックすると、
ブロックに名前を付けられるのですが、それが漢字で表示できナインすよ。
つっか、MISCのID FONTSもそうなんだし。
>>62 なるほど…SCICOSまだ使ってないので知らんかった。
ちょっと見てみる。
64 :
名無しさん@3周年 :04/02/27 10:30 ID:b7cdRtm/
気体あげ
密かに保守。
66 :
名無しさん@3周年 :04/05/11 00:16 ID:znOhZS94
定期あげ
保守sage
68 :
名無しさん@3周年 :04/06/16 15:51 ID:HL4RxvM7
70 :
名無しさん@3周年 :04/09/03 15:34 ID:m56byfG8
SCILAB3.0正式版出てますのでage
71 :
名無しさん@3周年 :04/09/11 22:16:52 ID:WqMtcUnl
72 :
400 :04/10/03 18:58:05 ID:W8zdde1E
WIN版のSCILABで SCICOSで波形出力の回路つくるまではできますが 音声ファイルに出力するにはどういう設定すればいいんですか
73 :
名無しさん@3周年 :04/10/05 08:31:53 ID:/2QdZqBO
74 :
72 :04/10/09 23:33:20 ID:OoOgt6ID
ありがdです
75 :
名無しさん@3周年 :04/10/30 16:24:26 ID:qm4HFvm4
- 3.331D-16のD-16ってどゆこと?
76 :
名無しさん@3周年 :04/10/31 10:31:03 ID:ewQCUOoN
77 :
名無しさん@3周年 :04/11/23 02:58:21 ID:EB+zDPLt
>>12 メルセンヌ・ツイスタを初めて使ったけど痺れた
M系列なんか目じゃ無い
78 :
名無しさん@3周年 :04/11/27 15:45:34 ID:gBOdJxOC
質問なのですが・・・ これ、微分方程式は解いてくれるけど、微分はしてくれないんでしょうか。 関数の導関数を求めさせたいんですが・・・ それぐらい自分で手計算でやれということでしょうか 一応differentiateとかで調べてみたんですけど、見つかりませんですた
80 :
名無しさん@3周年 :04/11/28 13:44:38 ID:oItCfyeJ
81 :
名無しさん@3周年 :04/12/09 11:32:49 ID:BOAibH2f
微分はdiffコマンドでできますよ。
82 :
名無しさん@3周年 :04/12/10 18:26:21 ID:/7aGS8ze
>>81 それは
t=0:0.1:%pil
y=sin(t);
dy=diff(y);
ってな数値微分であって、
>>78 の求めているものではないと思われ
83 :
78 :04/12/10 21:41:10 ID:TeygnH9q
もともとの意図は、>82氏の通りだったりするのですが、、、 しかし、ニュートン法なんかに使う限りはそれでも大丈夫そうですね? >81どうもです。
84 :
名無しさん@3周年 :04/12/21 23:32:03 ID:oB8MPv7z
インストール後GUI版起動時にVisualC++のランタイムエラーが発生するのですが、 何が問題なのでしょうか? コンソール版でもplotコマンドなどでウィンドウが開くときに表示ができずに固まります。 同様の症状が発生して解決した方がいらっしゃいましたらアドバイスお願いします。
85 :
名無しさん@3周年 :04/12/22 00:13:20 ID:28pam///
86 :
名無しさん@3周年 :04/12/22 00:20:49 ID:C+08ZLBu
OSがWinXPSP2でSCILABが3.0です
>>88 ありがとうございました。
でも2.7も3.0のunstable版も試してみましたが残念ながら同じエラーが出ました。
システム自体が不安定になってるのですかね。
90 :
名無しさん@3周年 :05/03/15 10:57:11 ID:oyfEm+Ai
フリーだしいろいろわやわやとさわれそうなんだけど。 odeの取り回しというかテクニックというかで躓いてしまいました。 質点mを重さのない長さlのひもでつるし初速を角速度で与える。 振り子の角度と書く速度はodeで容易に計算できますが 計算途中で状態変数が(いずれかでも両方でも)条件を満たしたとき モデルを変更したりすることはできないのでしょうか 上の例で言うとたとえば角度が鉛直下方向を0(rad)として計算途中π/3(rad) となった瞬間に質量が2mに変わるというような計算はどうすればよいのでしょうか。 できれば単一のodeでまわしたいのですが。 シミュレーションとしては非現実的なモデル変換ですが odeを使う手法でほかにもいくつか使いたい場面があるので どなたかお分かりになりませんか。 ode関係ではode,odeset,oderootのヘルプを呼んでみましたが いまいち使えないか自分の理解が足りないようです。
91 :
名無しさん@3周年 :05/03/18 01:39:00 ID:RTqLxYC4
>>90 odeで解く関数はdeffで定義するので、deffの中でif文を使えばいいんじゃないの?
92 :
名無しさん@3周年 :05/03/18 11:00:49 ID:mmA6pQew
>>91 なるほど1関数内は1モデルで頭が固まってました。早速試してみます。
ありがとうございます。
93 :
名無しさん@3周年 :2005/05/14(土) 07:50:07 ID:u+kE+hvL
保守age
95 :
名無しさん@3周年 :2005/06/30(木) 16:29:43 ID:Js55t9Gz
ppmファイルの画像処理をしたいんだけど, そもそも,5次元のデータてプロットできないんですか? つか,SCILABじゃ無理?
96 :
名無しさん@3周年 :2005/07/18(月) 19:44:34 ID:SDCH6uqP
保守保守
98 :
名無しさん@3周年 :2005/11/24(木) 23:53:47 ID:4gM91QsB
99 :
名無しさん@3周年 :2005/11/30(水) 19:46:08 ID:/xx5sTSu
制御やるならRよりはこっちが良いのかな? MATLAB/Simulink相当にはとても及ばないけど、MATLABは個人だと高過ぎるな。 Cで書くのは面倒すぎるし
100
101 :
名無しさん@3周年 :2005/12/04(日) 20:25:04 ID:tYMhdjp3
102 :
名無しさん@3周年 :2005/12/08(木) 19:54:24 ID:kLVi7ali
for k=1:10 y= y+1 end みたいなfor文でyの変化をグラフにするにはどうしたらいいんですか?
>>102 こういうことが望みか?
y=1;
for k=1:10
y=y+1;
mtlb_plot(k,y,'ro');
mtlb_hold("on");
end
>>103 それです!そんな方法があったんですね。
上手くいきました。ありがとうございました。
105 :
103 :2005/12/11(日) 15:57:23 ID:q8F7hK35
念のためmatlab互換コマンドを使用せずに scilabのコマンドを利用する例 y=1; set(gca(),"auto_clear","off") for k=1:10 y=y+1; plot2d(k,y,style=-1); end
106 :
SCILAB4.0 :2005/12/26(月) 18:45:44 ID:yGTc/B5g
107 :
scilabuser :2006/05/04(木) 17:23:22 ID:WZhhjrso
108 :
bo! :2006/05/26(金) 13:33:40 ID:1QGwhKJy
scilabのプログラムを考えてほしいんです。お願いします!! 「100000までの素数をすべて求めよ。」 誰かほんとにお願いします><。
>>108 効率悪いけど。まぁループ終端をsqrt(N)にするとか、適当に直して。
lines(0)
N=100;
printf("N=%d\n\n",N)
p(1:N)=1;
p(1)=0;
for i=2:N
for j=i+i:i:N
p(j)=0;
end
end
for i=1:N
if p(i)<>0 then
printf("%d\n",i)
end
end
disp "finish"
-->N=100 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 finish
111 :
名無しさん@3周年 :2006/05/29(月) 13:07:31 ID:7GVgeN7V
すみませんがこの問題教えてください。。。。 x,yを1000までの自然数として y^3=x^2+4 をみたすx,yの組をもとめよ 今日の17時が提出期限なんです↓
112 :
プジョル :2006/05/29(月) 13:14:37 ID:7GVgeN7V
申し訳ないのですが、この問題をなるべく早く解いてもらえませんか?今日の5時までが期限なんです。お願いします。 自然数nに対し、 n=a^2+b^2+c^2+d^2 を満たす整数a,b,c,dを求めるプログラムを作れ。 です。お願いします
113 :
名無しさん@3周年 :2006/05/29(月) 13:52:20 ID:g7vqhy2y
ほいっ
MacOS10.4 でScilabやってマス playsnd()等音声出力ができないんですけど、何かほかに設定いりますか? エラーメッセージは >Audio capabilities not available です。
115 :
114 :2006/09/04(月) 14:32:57 ID:9TlKPD9D
↑ Scilab 3.11 と 4.0でやってみますた 上のエラーメッセージは 3.11のもので 4.0では Writing Wave file: Microsoft PCM format, 1 channel, 22050 samp/sec 44100 byte/sec, 2 block align, 16 bits/samp Finished writing Wave file, 132302 data bytes と正常らしいですが、音はでませんです。
playsndのsciファイルを見るとPlaySoundという関数?で実際の再生を行なっているので こいつをscilabのunix関数とMacOSXのopen関数の組み合わせにすれば 音を鳴らすことはできると思う。
117 :
114 :2006/09/05(火) 22:02:34 ID:JROw1EaZ
即レス感謝です。 if MSDOS then savewave(TMPDIR+'/_playsnd_.wav',y,rate); PlaySound(TMPDIR+'/_playsnd_.wav'); return else if aplay<>'/dev/audio' then // should send aplay to PlaySound savewave(TMPDIR+'/_playsnd_.wav',y,rate); PlaySound(TMPDIR+'/_playsnd_.wav',aplay); これですね。 とりあえずTMPファイルをsavewave で作成してからそれをPlaySound関数で読み出しているっていう手順みたいです。 エラーメッセージからはとりあえずwavefileは作成できてるみたいですねー。 >こいつをscilabのunix関数とMacOSXのopen関数の組み合わせにすれば 実際どうすればいいか分かりません、スンマセン。octaveでは試してないですけど音出るみたいなんで、インスコしてoctaveのも見てみます〜。
PlaySoundの行をを以下に書き換えたらできないかな? (playsnd.sciからplaysnd.binを作り直す必要があるかも。 .sciファイルと.binファイルの関係は忘れました。) unix('open '+TMPDIR+'/_playsnd_.wav'); ただし、デフォルトではiTunesが立ち上がると思いますので ちょっと不便です。 Macのコマンドラインから音を再生するプログラム (例えばplaysoundってのがあります)がインストール してあれば unix('playsound '+TMPDIR+'/_playsnd_.wav'); のように書き換えれば(playsoundというプログラムが PATHの通っているディレクトリに入ってる必要が あります)できると思います。
119 :
名無し :2006/11/11(土) 04:11:29 ID:dpcozmDI
tan(x)=3をニュートン法で解くって、どうやったらいいですか??
>>119 1)
atan(3)
2)
clear fx
function y=fx(x)
y=tan(x)-3
endfunction
fsolve(0,fx)
121 :
名無し :2006/11/11(土) 11:54:09 ID:3TMpmDdE
早速のお返事、ありがとうございますっ
scilab 4.0でint16の挙動がWindows版とLinux版(どちらもバイナリ版をインス トールしました)で異なっているんですが、どちらが正しいんでしょうか。 Linux版 ------------------------------------------------------------------ -->int16([32767, 32768, 32769]) ans = ! 32767 -32768 -32768 ! ------------------------------------------------------------------ Windows版 ------------------------------------------------------------------ -->int16([32767, 32768, 32769]) ans = ! 32767 -32768 -32767 ! ------------------------------------------------------------------
123 :
名無しさん@3周年 :2006/11/23(木) 12:33:44 ID:HXGqiJ6s
>>122 32769っていう時点で想定外なので、どーなっても構わないということになっているので
気にするな、っていうかそんな数入れるな。
>>123 範囲外の値に対する動作は未定義ってことですね。
「Scilabで学ぶディジタル信号処理」という書籍で、sign bitが立つ値
は負値に変換されるという解説があり、Linux版のバグなのかと思ったもので。
125 :
GCofSS :2006/12/07(木) 22:57:11 ID:kmVMOtUV
Scilabを画像処理に使っているのですが、以前Matlabで画像処理をやっていて急遽freeの Scilabに書き換えなきゃならなくなって書き換えを行っているのですが、Matlabで使用している imagescに替わるScilabの関数を教えてください!
126 :
名無しさん@3周年 :2006/12/08(金) 12:31:19 ID:MlXhpj8S
>>125 imagescって、ナニやるものですか?
SIP (Scilab Image Processing)とか?
127 :
名無しさん@3周年 :2006/12/08(金) 13:50:08 ID:6AyRveCp
>>126 そうですね。imagescとはデータをスケーリングし Image を表示するものです。
SIPにあるいろいろな関数を試してみたのですが、なかなかうまくいかなくて・・・。
4.1age
129 :
名無しさん@3周年 :2007/01/01(月) 20:27:10 ID:LWLGrPE6
SCILAB-4.1をダウンロードしたのですが英語だらけで分かりません(>_<)すいませんが使い方を教えていただけないでしょうか?
根号の部分が小数表示されるのですが、根号のまま表示させることは可能でしょうか?
かたつむり
>>131 MAXIMAじゃないんだから、計算しちゃうんじゃない?
-->a=0 と入力すると a = 0. と自動的に表示されますが これを表示させない方法はありますか?つまり -->a と入力しない限り a = 0. が表示しないようにしたいのですが。 よろしくお願いしま。
す
>>136 ありがとうございました、それで出来ました(・∀・)
scilabでクラスは作ることはできますか? ヘルプで検索してもJavaインタフェースとmarkovなんちゃらのことしかでてきません・・・
>>138 tlistというのがあることがわかりました。
もうちょっと自分で調べてみます。
ScilabはCやFortranとの連携は出来るようですがC++はどうでしょうか?
ちょいメモ: グラフのXY軸のラベル名を変更する場合はtlistを使用する tlistでないと既定されているmatrixサイズが変更できない a=gca(); a.x_ticks=tlist(['ticks' 'locations' 'labels'],[1:5],['o' 'b' 'a' 'k' 'a']);
142 :
名無しさん@3周年 :2008/01/15(火) 01:40:12 ID:/68kNl3s
これを解いていただけませんか? (1)漸近安定性、可制御性、可観測性を調べる。 (2)極を(0.31±0.85*i)に配置するための、状態フィードバックゲインを計算。 (3)状態フィードバックの有無による状態変数の時間変化をシミュレーション。 ◆状態方程式 x[i+1] = A*x[i] + b*u[i] y[i] = c*x[i] x[0]=[1;2] A = [3, 8; 1, 5] b = [1;2] c = [1,0] ※不可制御となってしまう場合、A行列の数値の並びを変えてよい。
143 :
名無しさん@3周年 :2008/03/20(木) 20:04:30 ID:8ykkfMqd
保守
144 :
名無しさん@3周年 :2008/04/03(木) 23:54:52 ID:FSOW6Acv
保守
145 :
名無しさん@3周年 :2008/04/17(木) 00:23:13 ID:cm9SwHDQ
すいません。。自力で調べたのですがいまだに解決できないので、教えてください。 SIVPを用いてグレイスケール化された画像をg_imとしたとき、 位置P(i,j)とg_im(i,j)の値の関係を3次元プロットしたいと考えています。 plot3d関数を使おうと思ったのですが、できませんでした。
146 :
名無しさん@3周年 :2008/05/02(金) 21:52:54 ID:9/SQ+8wz
どうしてもjavaから呼べないんですけど、、教えてクンですみません。教えてください。
>>142 1.rankを使って可制御行列、可観測行列のランクを調べる
2.ppolを使う
3.scicos使えば簡単
寂れてますね・・・ みんなoctaveに引っ越したのかな
149 :
名無しさん@3周年 :2008/06/20(金) 00:09:55 ID:+OyVGt3V
はじめまして 突然質問でごめんなさい うちの環境だと csimで1000ポイント以上計算させると誤差が大きくなるんですけど ポイント数が多くても精度を保って計算させる方法とかないですか?
150 :
名無しさん@3周年 :2008/06/20(金) 10:42:47 ID:kgx2Gyj2
>>149 csimのパラメータに、誤差を指定するパラメータ : tol あるんだけど、
y=csim(u,t,sl,x0,tol)
試してみた?
>>150 どうもありがとうございます。
いろいろいじってみましたけど変わりません。
精度が悪くなるというかポイント数を増やすと
最終的に計算結果がめちゃくちゃになるんですよね。
152 :
昨日からはじめた人 :2009/01/11(日) 22:32:52 ID:eCuJyVOV
エディターで、 x=-π〜π y=sin(x) で、もしx>0 ならyを1にしたい場合、どういった記述に するのが妥当なのでしょうか? よろしくお願いします。
153 :
昨日からはじめた人 :2009/01/12(月) 00:14:39 ID:+ATel+I1
ちょっと質問が正しくなかったので訂正します。 変数に計算結果の行列を入れたいのですが、それに条件を入れたいのです。 たとえば、xの範囲を-πからπまで101ポイント取るとして、 y=sin(x)として ynの結果が0以下であったならynの値を強制的に0とする.. といった感じにしたいのです。 よろしくお願いします。
154 :
名無しさん@3周年 :2009/01/12(月) 00:17:14 ID:YmhqvdsU
y .* (y<0) みたいなので
155 :
昨日からはじめた人 :2009/01/12(月) 00:47:17 ID:+ATel+I1
できますた。 ありがとうございます。
156 :
155 :2009/01/12(月) 17:34:35 ID:+ATel+I1
ちなみにWindowsのユーザー名が2バイト文字だと起動しないようですね。 修正ができず、新たに1カウント作っちゃいましたよ。
157 :
昨日からはじめた人 :2009/01/12(月) 19:53:58 ID:+ATel+I1
度々すみません・・・ 演習として、ガウシアン分布の3Dプロット図を作ろうとしましたが、 xとyをマトリクスで演算させる方法がわかりません...。 d=0.5 x=[-2:0.01:2]'; y=[-2:0.01:2]'; z=exp(-2*((x/d)^2+(y/d)^2)); clf() plot3d(x,y,z,) よろしくご指南ください m(__)m
158 :
昨日からはじめた人 :2009/01/12(月) 20:03:44 ID:+ATel+I1
追記 要するに、xとyの行列同士のマトリクスの計算結果をzに入れたいのです。
159 :
名無しさん@3周年 :2009/01/12(月) 23:26:20 ID:YmhqvdsU
160 :
昨日からはじめた人 :2009/01/13(火) 00:37:49 ID:Gh1DJUVm
うーん、せっかくですがわかりません...
d=0.5 x=[-2:0.1:2]; y=[-2:0.1:2]; z=exp(-2*((x/d)^2+(y/d)^2)); clf() plot3d(x,y,z,) for iy=1:length(y) for ix=1:length(x) z(iy,ix)=exp(-2*((x(ix)/d)^2+(y(iy)/d)^2)); end end plot3d(x,y,z)
>161 ありがとうございます。 参考にさせて頂きます。 一応努力してみました。 clear d=0.5; x = linspace(-2,2,101); y = linspace(-2,2,101); [X,Y] = ndgrid(x,y); deff("z=f(x,y)","z=exp(-2*(x.^2/d+y.^2/d ))"); Z=f(X,Y); plot3d(x,y,Z)
>161 要約すると clear d=0.5 x=[-2:0.1:2]; y=[-2:0.1:2]; clf() for iy=1:length(y) for ix=1:length(x) z(iy,ix)=exp(-2*((x(ix)/d)^2+(y(iy)/d)^2)); end end plot3d(x,y,z) こうですね。
申し訳ないのですが Nクイーン問題をC言語ではなくScilabを使って解くやり方を教えてください。。。
165 :
名無しさん@3周年 :2009/08/04(火) 22:26:22 ID:ulGsLK4m
おお。まさか機械工学板に立ってるとは。
>>166 昔は、電電板とかシミュレーション板がなかったんでなー
>>167 そうだったんすか。古いスレですね
今期から授業で使う事になったんで9月頃から導入しました
先日何となくググったら2000年くらいのスレが見つかって、
そこからこのスレをようやく見つけたところです
169 :
名無しさん@3周年 :2009/11/23(月) 19:03:09 ID:rEG86hTV
>>169 ありがとうございます。色々見て回ってみます。
まだ数理統計の簡単な計算をすこし始めたところで、
質問や手助けできる事もあまりないですが、大変参考になります。
171 :
名無しさん@3周年 :2009/11/24(火) 00:34:34 ID:Jo5X+w17
>>171 ありがとうございます!
さうは一人で持ちきれぬ
ヨイヨイ。
173 :
名無しさん@3周年 :2009/11/26(木) 23:33:18 ID:Q4dEOwxg
SIVPでAVIファイル作成するときavifileを使用すると エラーが出てしまうのですが対応方法ないでしょうか。
174 :
名無しさん@3周年 :2010/01/20(水) 15:55:02 ID:sHka/2tm
MatlabからScilabに書き換えてるのですが,以下のエラーの解決策が分かる方がいましたら,教えてください. <以下エラーの内容> ii = 2. !--error 144 与えられたオペランドのための不確定の操作です。 負荷をかけすぎる関数 %s_3_s 定義、または、チェックです。 at line 34 of function bilinear called by : -d2(ii),d1(ii-1)-d2(ii-1),F1(ii-1),in1,st1,va1) at line 413 of exec file called by : exec(%fileToExec); disp(msprintf(gettext("Execution done.\n"))); while executing a callback どうやら,whileループでfunctionを実行しようとしたら1回目は回るのですが,2回目のループで引っかかるようで,Matlabでは上手く回るので,functionやmainに間違いは無いと思います. どなたか分かる方がいましたらよろしくお願いします.
175 :
名無しさん@3周年 :2010/01/20(水) 19:37:27 ID:IeUNBLEE
>>174 元のプログラムを載せないで、わかるやつがいたとしたら、そいつは悪魔と思わないのか?
176 :
名無しさん@3周年 :2010/01/21(木) 17:53:56 ID:HL/y7STt
過疎ってますね...。質問なんですが、小数点で数字を0.1ではなく0.10のように表示するにはどうすればいいんでしょうか?
177 :
名無しさん@3周年 :2010/01/22(金) 00:42:37 ID:iyxzOJ57
>>176 -->printf("%7.2f",0.1)
0.10
178 :
名無しさん@3周年 :2010/01/22(金) 16:11:49 ID:mZLwzyPr
>>175 すみません,プログラムの権利の問題上全て載せるわけにはいかないですが,
引っかかってるところを載せます.
abs_dd = abs(dd)
is = 2;
if (ds <= 0) then
is = 1;
end;
sn = (is+is-3);
select (st.ll)
Whileループの中の関数のプログラムの一部で,どうやらifの条件式のところで引っかかってるようです.
179 :
名無しさん@3周年 :2010/01/25(月) 17:45:49 ID:2Pb1QDme
>>177 遅れましたが、ありがとうございました。無事解決しました。
180 :
名無しさん@3周年 :2010/01/28(木) 01:34:21 ID:uh1fpJvM
>>178 解決したかい?
-->a = sqrt(-1)
a =
i
-->a <= 0
!--error 144
与えられたオペランドのための不確定の操作です。
負荷をかけすぎる関数 %s_3_s 定義、または、チェックです。
-->A = cell(2,2)
A =
!{} {} !
! !
!{} {} !
-->A <= 0
!--error 144
与えられたオペランドのための不確定の操作です。
負荷をかけすぎる関数 %ce_3_s 定義、または、チェックです。
とかあやしいいかも!
181 :
名無しさん@3周年 :2010/02/01(月) 22:08:42 ID:9NeAN59d
A=[1,2,3,4,5,6,7,8,9] の行列があるとき、三つごとの平均を出すにはどうすればいい? B1=2 B2=5 B3=8 みたいに出したい。
182 :
名無しさん@3周年 :2010/02/02(火) 01:14:02 ID:ElKSgX7+
>>181 エレガントにやってもいいが、
てっとりばやくやるのなら、 for ループで回すほうが速いかな
183 :
名無しさん@3周年 :2010/02/02(火) 09:02:48 ID:caO7N3gM
>>180 すみません遅くなりましたが,無事解決いたしました.
原因は,dsが複素数になっていたらしく,if文の条件式で判定できなかったようです.
real(ds)にすることで無事に解決できました.
ありがとうございました.
Scilab6はいつころ出るかな。。。 予想では1.5年後くらいか。。
http://www.scilab.org/products/scilab/roadmap Major Scilab 6 Family Objectives
より、期待できるのは、次の改良点か。
・New kernel (interpretor, syntax tree, memory management ...)
Fortran風の言語仕様を排除するらしい。
・Generator of C code
Enable Scilab to generate C code from Scilab script for embedded systems
ScilabからC言語コードを吐き出してくれると、確かにうれしい。
>>185 Scilab5.2.0winでScilab2Cを試してみたんだがエラーでCコードは生成できなかった
おまいらもやってみてよ
高階関数って使えます? f(x) = ax+b g(x) = gx+b とあるときに f(g(x))を関数として出力したいんですけど
188 :
186 :2010/04/23(金) 17:08:51 ID:s2MT2wIy
できました有難うございました
190 :
名無しさん@3周年 :2010/04/24(土) 08:36:32 ID:EC7SSe3P
191 :
名無しさん@3周年 :2010/05/10(月) 21:41:26 ID:n+KRhqro
複数の変数に一度に代入する方法はないだろうか? 関数だったら ------------------------- function [x,y] = myfunc( a ) x = a*2; y = a*3; endfunction [m, n ]= myfunc(5) ------------------------- でOKだけど、 ------------------------- [x, y] = [3, 8]; ------------------------- はエラーなる。 どうしてだろう? ベクトルとして、一度に複数の変数に値をセットできると、すっきりするのだが。
192 :
名無しさん@3周年 :2010/05/12(水) 20:05:19 ID:pYRZIkNv
えーっと、ス、ス、スシラブ
193 :
名無しさん@3周年 :2010/05/14(金) 20:42:58 ID:FyjEHlLi
Scilabは、サイラブ と呼びます。 もしくはサイラボ。
194 :
名無しさん@3周年 :2010/06/10(木) 23:55:13 ID:qlf27Rz7
scilabの正当後継は scilabなのかscicoslabなのか、 どっちなんだ?
誤差の2乗面積が最小になる関数をscilabで数値探索で求めたいのですが やり方が分かりません。
>>195 > 誤差の2乗面積が最小になる関数をscilabで数値探索で求めたいのですが
> やり方が分かりません。
具体的に、どんな問題?
式を立てられないのはScilabの問題ではないよね。matlabでも同じだろう。
>>198 初期のVer5,0のころに比べ
ver5.3 は動作が速くなった気がする。
Scilab 5.3.0とか、Windows7 Professionl 64bitにいれているんだけど、 64bit版も、32bit版もキーボードの入力を受け付けなくて、 なんにもできない状態なんですが、何が間違っていますか?
>>200 とりあえず、当方 WinXP(32bit)で Scilab5.3 beta2 は、それなりに動いています。
まだ、動作不安定なところがあるけど、Ver5.0のころと比べると、確実に安定かつ速くなっている。
202 :
名無しさん@3周年 :
2010/08/29(日) 23:50:18 ID:quRaKJ/J >>200 scicoslab にしろ。
これで全部解決だ