2014年2月4日火曜日
xojo
xojoの2月の課題があったのでやってみた。
全然きれいじゃないし分ってないことを認識しているが、
とりあえずやってみみた。
下記ページを参考にさせていただいた。
http://www.geocities.co.jp/SiliconValley/2413/tips.html#16
なんかプリントスクリーンが巧くいかない・・・。
2013年9月4日水曜日
蛙跳び2
こんな感じでした。鈍るんです。
LeapFrogは空間積分の右辺をf^{n+1}とf^{n-1}の平均値である0.5*(f^{n+1}とf^{n-1})を使うような良い加減な方法なんであまり好きではないのですが、これ見ると、RungeKuttaを使って計算コスト書けるなら、LeapFrogの方が楽だし、鈍らないし、と判断してしまいますね。何か間違ってることを信じたいです(笑)
2013年9月3日火曜日
蛙跳び
' Leap Frog Method
dim n as Integer
dim i as Integer
dim f(100) as double
dim fo(100) as double
dim fn(100) as double
dim mojiretsu as String
'Initial Condition
For i = 1 to ixmx
if i > 10 And i<20 then
fo(i) = 1.0
f(i) = 1.0
fn(i) = 1.0
else
fo(i) = 0.0
f(i) = 0.0
fn(i) = 0.0
end if
next i
'Time Marching
for n =1 to itmx
'Leap Frog
for i = 2 to ixmx
fn(i) = fo(i) - 2*u*dt/dx*(f(i) - f(i-1))
next i
'Shift Variables
for i = 2 to ixmx
f(i) = 0.5*(fn(i)+fo(i))
fo(i) = fn(i)
next i
next n
'Output
for i = 1 to ixmx
mojiretsu = Str(i) +"," + Str(f(i))
ListBox2.AddRow(mojiretsu)
next i
4次精度ルンゲクッタと比較すると、2次精度の蛙飛びの方が、鈍りが少ないです。
なぜなんだろう・・・。
2013年9月2日月曜日
ListBox
//ListBoxのクリア
Listbox1.deleteAllRows
Winで作ったバイナリファイルをMacで初めて開きました。
OS依存の機能を使ってないことはありますが、特に問題なく開きました。
ただし、r2でも日本語入力がおかしい箇所がありました。
まあ、日本語使わなければいいんですけどね(笑)
ホビー用途なら、すごくいい環境ですが、
日本語の解説書が充実しないと広まらない気がします。
勿体ない・・・。
Listbox1.deleteAllRows
Winで作ったバイナリファイルをMacで初めて開きました。
OS依存の機能を使ってないことはありますが、特に問題なく開きました。
ただし、r2でも日本語入力がおかしい箇所がありました。
まあ、日本語使わなければいいんですけどね(笑)
ホビー用途なら、すごくいい環境ですが、
日本語の解説書が充実しないと広まらない気がします。
勿体ない・・・。
2013年9月1日日曜日
値への変換とか(Xojo)
FortranやCを使ってると、値の読み込み時点で型指定をするが、
その他の言語だと、すべて文字列で読み込んで、キャストすることが多いみたいです。
Xojoの型変換は下記のとおり。
Str(数値等):値をstringに変換
Val(文字列):文字列を値に変換
使わないとすぐ忘れます・・・。
ところで、下記に値のやり取りの記録を書きます。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.ListBox1を配置して、表示の場合。
//ListBoxの表示をすべて消す。
ListBox1.deleteAllRows
//ListBox1に文字列Program START!を追加
ListBox1.AddRow("Program START!")
2.TextField1に書き込まれた値を変数に代入
//TextField1に書き込まれた文字列を、別途定義した文字列「strings」に代入
//その後、数値型に変換
Dim strings as string
Dim i as Integer
strings = TextField1.Text
i = Val(strings)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
早くいろいろ晒したいです。
その他の言語だと、すべて文字列で読み込んで、キャストすることが多いみたいです。
Xojoの型変換は下記のとおり。
Str(数値等):値をstringに変換
Val(文字列):文字列を値に変換
使わないとすぐ忘れます・・・。
ところで、下記に値のやり取りの記録を書きます。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.ListBox1を配置して、表示の場合。
//ListBoxの表示をすべて消す。
ListBox1.deleteAllRows
//ListBox1に文字列Program START!を追加
ListBox1.AddRow("Program START!")
2.TextField1に書き込まれた値を変数に代入
//TextField1に書き込まれた文字列を、別途定義した文字列「strings」に代入
//その後、数値型に変換
Dim strings as string
Dim i as Integer
strings = TextField1.Text
i = Val(strings)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
早くいろいろ晒したいです。
2013年8月21日水曜日
XOJO
新しくなっていたので、更新したら、無言で落ちなくなりました。
やはり、こまめな更新は大事ですね。
数値解析、テキスト処理、WEBアプリ等々ありますが、
速度は別にしてXOJOは全部いけます。
速さは厳しいですが、可能性大だと思ってます。
GUI周りは扱いやすいです。
やはり、こまめな更新は大事ですね。
数値解析、テキスト処理、WEBアプリ等々ありますが、
速度は別にしてXOJOは全部いけます。
速さは厳しいですが、可能性大だと思ってます。
GUI周りは扱いやすいです。
2013年8月3日土曜日
無題
Linux(Cent OS 6.4)にXojoを入れてみました。
インストールはダウンロードしてダブルクリックするだけという簡単さでした。
LinuxでGUI環境を整えるならxojoが一番良いかと。
Webアプリもいけますし。
WinならVisual Studio、MacならXcodeですが、xojoはすべてのプラットフォームでいけますし、どのプラットフォームでも、他のプラットフォームの実行ファイルを作成できます。
ライセンスがないと実行ファイルの作成は出来ないですが、デバッグ環境でも良く、勉強したいだけなら、フリーのはずです。(間違ってたらすみません)
サードパーティの可能性を感じます。
インストールはダウンロードしてダブルクリックするだけという簡単さでした。
LinuxでGUI環境を整えるならxojoが一番良いかと。
Webアプリもいけますし。
WinならVisual Studio、MacならXcodeですが、xojoはすべてのプラットフォームでいけますし、どのプラットフォームでも、他のプラットフォームの実行ファイルを作成できます。
ライセンスがないと実行ファイルの作成は出来ないですが、デバッグ環境でも良く、勉強したいだけなら、フリーのはずです。(間違ってたらすみません)
サードパーティの可能性を感じます。
2013年7月26日金曜日
無題
Real Basicのファイル出力です。
変数iと配列f、f_exactをストリングで繋いでラインで出力する。
fは計算値、f_exactは厳密解です。
'ファイル出力用
fout=GetFolderItem("output.txt")
txtout=fout.CreateTextFile
txtout.delimiter =Chr(13)
txtout.WriteLine "i,f"
for i =1 to ixmx
outs = str(i*dx)+","+str(f_exact(i))+","+str(f(i))
txtout.WriteLine outs
next i
txtout.Close
'ファイル出力用終わり
2013年7月7日日曜日
2013年7月1日月曜日
ダムブレイク3
いろいろ弄って、運動方程式の記述を間違っていることに気づいた。
修正したけど、急変するところでは、1次風上を使っても、振動が残ります。
ただ、ベースは出来たので、ようやくFDSの人工粘性を入れられます。
Leap Frog、1st_Order_upwind、人工粘性でスーパーロバストにしてやる予定。
修正したけど、急変するところでは、1次風上を使っても、振動が残ります。
ただ、ベースは出来たので、ようやくFDSの人工粘性を入れられます。
Leap Frog、1st_Order_upwind、人工粘性でスーパーロバストにしてやる予定。
2013年6月30日日曜日
ダムブレイク2
膨張波と伸縮波がうまく表現できてないことが分りました。
もう少し、考えてみます。
とりあえずCで書いてますが、いろんな言語で書くにします。
履歴書書かなきゃ・・・。
そろそろ会社に行くかな?
もう少し、考えてみます。
とりあえずCで書いてますが、いろんな言語で書くにします。
履歴書書かなきゃ・・・。
そろそろ会社に行くかな?
ダムブレイク
DamBreakはオイラーの方程式を基礎方程式として、FDS系の解法が一番良い気がします。コロケート格子で。
スタッガードスキームだと、そのまま離散化すれば良いですが、ショックキャプチャリングがうまくいかなくて、若干の数値振動が残ります。
シビルエンジニアリングの世界ではほとんど1次風上が多いですね。
正直気に食わないですが。。。
FDS系の解法はXojoで書いてみることにします。そのうち、ソース晒しますね。
今のところbetter C的なC++で書いてます。
もう少し考えてみます。
スタッガードスキームだと、そのまま離散化すれば良いですが、ショックキャプチャリングがうまくいかなくて、若干の数値振動が残ります。
シビルエンジニアリングの世界ではほとんど1次風上が多いですね。
正直気に食わないですが。。。
FDS系の解法はXojoで書いてみることにします。そのうち、ソース晒しますね。
今のところbetter C的なC++で書いてます。
もう少し考えてみます。
2013年6月23日日曜日
xojo
minmode(r)
if r>=1 then
r =1.0
end if
if r>0 then
return r
else
return 0.0
end if
vanLeer(r)
return (r+abs(r))/(1+abs(r))
vanLeerは分母が0になっても構わないので使いやすいと思われます。
その他の制限関数は海外のWikiに載ってます。
2013年6月22日土曜日
名称未設定
TVD法のうち、流束制限関数に関して、ソースを晒したいが、まとまってないので、躊躇してます。
そのうちに。QUICK法とかLaxWendroff法とか、今日ではあまり使わないかもしれませんが、非常に勉強になります。
スキームはこだわりを持って使いたいものですね。
「解ければ何でも良いじゃん!」
はちょっと、バカすぎます。
その場合、1次精度のみでロバスト性を求めるだけで良くて、ぼーっと格子点が増やせるハードが出てくるのを待っているだけです。
CIP法(CSL系)が一番好きですが、既存のコードに対して、フラクショナルステップを使って、移流項のみ改善したい場合は、既存のオイラリアンのスキームの方が良いみたいですね。
ゼロから書くなら、CIP法+その他の項があれば完全陰解法にします。
ロバストかつ高精度。
そのうちに。QUICK法とかLaxWendroff法とか、今日ではあまり使わないかもしれませんが、非常に勉強になります。
スキームはこだわりを持って使いたいものですね。
「解ければ何でも良いじゃん!」
はちょっと、バカすぎます。
その場合、1次精度のみでロバスト性を求めるだけで良くて、ぼーっと格子点が増やせるハードが出てくるのを待っているだけです。
CIP法(CSL系)が一番好きですが、既存のコードに対して、フラクショナルステップを使って、移流項のみ改善したい場合は、既存のオイラリアンのスキームの方が良いみたいですね。
ゼロから書くなら、CIP法+その他の項があれば完全陰解法にします。
ロバストかつ高精度。
2013年6月21日金曜日
Xojo先ほどの続き
とりあえず、Actionに下記ソースを加えると、ファイルへ出力できる
'ファイル出力用
fout=GetFolderItem("output.txt")
txtout=fout.CreateTextFile
txtout.delimiter =Chr(13)
for i =1 to ixmx
txtout.WriteLine str(f(i))
next i
txtout.Close
'ファイル出力用
fout=GetFolderItem("output.txt")
txtout=fout.CreateTextFile
txtout.delimiter =Chr(13)
for i =1 to ixmx
txtout.WriteLine str(f(i))
next i
txtout.Close
LaxWendroff法とXOJO
Dim s as string
Dim i as integer
dim f() as double
dim fn() as double
dim n As Integer
dim fout as FolderItem
Dim txtout as TextOutputStream
s = "Program START!"
lbResult.AddRow(s)
Redim f(ixmx)
Redim fn(ixmx)
For i = 1 to ixmx
f(i) = 0.0
fn(i) = 0.0
If i>10 And i<20 Then
f(i) = 1.0
fn(i) =1.0
end if
s =str(i) +","+ str(f(i))
lbResult.AddRow(s)
next i
For n=1 to 100
for i =2 to Ixmx-1
'1次風上
fn(i) = f(i) - u*dt/dx *(f(i) - f(i-1))
'オリジナルLaxWendroff法
fn(i) = f(i) -u*dt/(2.0*dx)*(f(i+1)-f(i-1))+0.5*u*u*dt*dt/dx/dx*(f(i+1)-2*f(i)+f(i-1))
next i
for i = 2 to ixmx
f(i) = fn(i)
next i
next n
For i = 1 to ixmx
s = str(i) + ","+str(f(i))
lbResult.AddRow(s)
next i
Dim i as integer
dim f() as double
dim fn() as double
dim n As Integer
dim fout as FolderItem
Dim txtout as TextOutputStream
s = "Program START!"
lbResult.AddRow(s)
Redim f(ixmx)
Redim fn(ixmx)
For i = 1 to ixmx
f(i) = 0.0
fn(i) = 0.0
If i>10 And i<20 Then
f(i) = 1.0
fn(i) =1.0
end if
s =str(i) +","+ str(f(i))
lbResult.AddRow(s)
next i
For n=1 to 100
for i =2 to Ixmx-1
'1次風上
fn(i) = f(i) - u*dt/dx *(f(i) - f(i-1))
'オリジナルLaxWendroff法
fn(i) = f(i) -u*dt/(2.0*dx)*(f(i+1)-f(i-1))+0.5*u*u*dt*dt/dx/dx*(f(i+1)-2*f(i)+f(i-1))
next i
for i = 2 to ixmx
f(i) = fn(i)
next i
next n
For i = 1 to ixmx
s = str(i) + ","+str(f(i))
lbResult.AddRow(s)
next i
2013年6月11日火曜日
2013年6月9日日曜日
2013年6月8日土曜日
技術屋
民主主義、わらりやすい説明、低コスト、精度向上。
低コスト。これは 異論を挟まない。
精度向上。これも異論を挟まない。
ただし民主主義と分りやすい説明。
これは一部同意しかねます。
専門家は、一般市民出来ない近似精度とコスト感覚のバランスを取るのが大事です。
ただ、その説明は非常に難しい。
さぼってる訳ではなく、先人たちが一生かけてきたことを数年で理解し、他人に説明することなんて無理なんです。説明相手も勉強する余裕がないんです。
だから、専門家は必ず自浄作用をもって、大きく間違わない方向の精度を提示した上で、納税者を納得させるのが必要だと思います。
加えて、一般市民(業界外の方々)に対して、しつこく説明すべきだと思います。そうしないと、技術屋は必ず減ります。魅力がない。やったことが、「税金の無駄遣い!」。
それが世論で、政治家がそれをよしとするなら、誰も目指さないし、下手したら、海外に技術が流出します。自国のグランドデザインを国の民間事業をうまく制御できなれば、荒廃がひどいことになります。
それを受容するだけの納税者がどれだけいるのか?
国家のために自分が何が出来るのか?
真剣に考えましょう。
専門家、非専門家、「そしてそれを短絡的に報道するマスコミ」みんな協力しましょう。信号なくなるかもしれませんよ。道路だって平気で壊れっぱなし。「仕方ないよ。お金内んだもん」あり得ないですね。日本という国家がどんな検討ツールとしての武器をもち、一技術者としてどのような判断が必要なのか。関係者の皆さん、お金を引っ張ることだけなく、グランドデザインとして、日本という国家がどうあるべきなのか?考えましょう。その検討のためにどのような勉強が必要なのか、それを勉強するのが専門学校だったり大学だったりします。
みんな得意、不得意は必ずあります。それが最適化されてるとも思いません。
日本のみなさん、選挙に行って、どう考える、悩みましょう。
低コスト。これは 異論を挟まない。
精度向上。これも異論を挟まない。
ただし民主主義と分りやすい説明。
これは一部同意しかねます。
専門家は、一般市民出来ない近似精度とコスト感覚のバランスを取るのが大事です。
ただ、その説明は非常に難しい。
さぼってる訳ではなく、先人たちが一生かけてきたことを数年で理解し、他人に説明することなんて無理なんです。説明相手も勉強する余裕がないんです。
だから、専門家は必ず自浄作用をもって、大きく間違わない方向の精度を提示した上で、納税者を納得させるのが必要だと思います。
加えて、一般市民(業界外の方々)に対して、しつこく説明すべきだと思います。そうしないと、技術屋は必ず減ります。魅力がない。やったことが、「税金の無駄遣い!」。
それが世論で、政治家がそれをよしとするなら、誰も目指さないし、下手したら、海外に技術が流出します。自国のグランドデザインを国の民間事業をうまく制御できなれば、荒廃がひどいことになります。
それを受容するだけの納税者がどれだけいるのか?
国家のために自分が何が出来るのか?
真剣に考えましょう。
専門家、非専門家、「そしてそれを短絡的に報道するマスコミ」みんな協力しましょう。信号なくなるかもしれませんよ。道路だって平気で壊れっぱなし。「仕方ないよ。お金内んだもん」あり得ないですね。日本という国家がどんな検討ツールとしての武器をもち、一技術者としてどのような判断が必要なのか。関係者の皆さん、お金を引っ張ることだけなく、グランドデザインとして、日本という国家がどうあるべきなのか?考えましょう。その検討のためにどのような勉強が必要なのか、それを勉強するのが専門学校だったり大学だったりします。
みんな得意、不得意は必ずあります。それが最適化されてるとも思いません。
日本のみなさん、選挙に行って、どう考える、悩みましょう。
登録:
投稿 (Atom)