ゲームのための物理(力学)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/04/08 17:38ID:dlksSYkA例えば、坂道を転がる球の加速度だったら。
その球の密度が一様ならば、慣性モーメントは(2/5)MR^2なので
dV/dt = 5*g*sinθ/7;
と表せるよとか。
他にも剛体運動、力積とか語ってください。
0571名前は開発中のものです。
03/12/18 12:00ID:WRCSjk9kえ?マジ?
終わってんじゃんそれ。
0572名前は開発中のものです。
03/12/18 16:38ID:Aj4qSTs8計算自体は正しくても、仕様書もなく個人で作ってる工房にとっては、
後から見たら「これ何の計算してんだっけ?」てなりかねないなぁ(藁
やっぱ要素ごとに行列にして、最後なんらかに出力する前に行列演算するかなぁ漏れなら。
>>570
どうせ高校で習う行列や微積分なんて、なんだかんだいって算数の域なんだから
それらが必要になる人間は線形代数学や解析学なんかで深く学ぶさ・・・。
0573名前は開発中のものです。
03/12/18 19:56ID:YXhvjhORマジ。でもってセンター数学の選択にBASICなんてのがある。莫迦じゃねーの。
>>572
その「算数」ができないから困るんだってば。
非常勤で教養の物理実験や力学の面倒みたりするけど、
「カイテンギョーレツってなんですかー?まだ習ってませーん。」
なんて事をキラキラした目で言われてみ。何を教えろっつーんじゃ。
0574名前は開発中のものです。
03/12/18 20:05ID:/ty9xPG0回転行列は自分の頃はもうなかったから、8年前なんだっけ? なくなったのは。
行列の計算自体は今でもあるはず。
0575名前は開発中のものです。
03/12/18 20:58ID:0/gVf4Xo代数幾何と基礎解析がこんなところで結びついているのかー、と。
とりあえず大学院時代のバイトで数学の副手やってたが、そのときはもう散々なありさまだった。
0576名前は開発中のものです。
03/12/21 19:23ID:NMvqfey4高校で教えることが変わってるんだから、それに合わせて
大学の実験や講義の内容も変えていけばいい。
柔軟な院生が教壇に立つ場合はまだマシだけど、
基本的に大学で教える人たちは使いまわすだけで横着だからね、
特に非常勤講師とか。
0577名前は開発中のものです。
03/12/24 06:48ID:tizWXAHC準同型だしな。(たぶん)
回転行列よりも計算は単純と思う、あとn乗がぐるぐる回転してオモロイ
0578名前は開発中のものです。
03/12/24 20:53ID:BZpFTtZIそうそう。うちらの時は逆にガウス平面ってやらなかったからね。
これで考えれば√i が簡単に出来ること、周りの連中がどうすればよいか四苦八苦してたことが懐かしい。
0579名前は開発中のものです。
04/01/07 11:24ID:SQoLA4NA所詮、高校生の70なんてこの程度なんですね。
0580名前は開発中のものです。
04/01/08 01:03ID:y051rs8o大学入って数学の講座をとればそんな難しいことは逝ってないのが解る。
0581名前は開発中のものです。
04/01/27 00:08ID:Z2uYoNlBしたらこの板の話題はそんなに難しいものではなくなるよ。
力学の話題 > そこらへんの本、力学とか連続体力学等を読めばわかるかも
代数の話題 > ここでの話は線形代数あたりに書いてるよ。準同型とかイデアルの話題は代数でも群論とか
3Dの話題 > これも初等代数(幾何)だけど、ここでの内容はその応用とか、もしくはCG関連の本にまとめられてる
ルンゲクッタとかの話題 > 計算機科学、近似とかその辺の話題
ゲームの理論的側面をみると、RPG、賭博などは確率統計学とかにも依存してるし
また、ゲームのテストなんかをみると、人工知能とか巡回セールスマン問題とかにも関係してくるかもね。
ただ、こういう勉強をしたからといって良い作品が作れるわけではないし、
結構学歴は関係ないのかもしれない・・難しい大学に入ると、
アカデミック過ぎて理想と現実のハザマで揺れ動く事になるよ。(研究が主になる)
0582名前は開発中のものです。
04/01/28 19:44ID:voPG9Hwm0583名前は開発中のものです。
04/01/28 20:49ID:TX0crs1Q力学ゲーで最も成功し愛されているパネキットですら
投げたした人は多数だし(オレモナー
0584ニュートソ
04/04/26 05:59ID:idjw26Kx3Dで単一の剛体があり、剛体の重心が点oに固定されている運動方程式を
導こうと思ったのですが、ラグランジアンの時点でとても計算する気になれないくらいの式量になってしまいました。
オイラ角使用で、回転エネルギは 1/2ω・(Iω)→をオイラ角で記述(この時点でものすごい量)
行く行くは複数剛体をリンクで繋いで。。などと考えていたのですが、計算を間違わない自身がないです。。。
こんなもんでしょうか?
0585名前は開発中のものです。
04/05/04 12:06ID:qKEkic75rx,ry,vx,vy,ax,ayを位置、速度、加速度ベクトル、
cx,cyをばねが自然長になった時の位置としました。
case WM_TIMER:
rx=(rx+vx)%width;ry=(ry+vy)%height;
vx+=ax;vy+=ay;
ax= (cx-rx)/50;ay= (cy-ry)/50;
InvalidateRect(hw,NULL,TRUE);
break;
こうすると、単振動の振幅が増大していってしまうんです。
どうやったら解決できますか?
0586名前は開発中のものです。
04/05/04 12:37ID:27DJ661l0587名前は開発中のものです。
04/05/04 13:50ID:PRlvGj/iある程度の複雑さは避けて通れないと思う。
それでも難しいときは他の方法をかんがえたほうが良いんじゃ?
いろんな解決方法があるみたいだよ。
>>585
バネができないってのはまだ基本が理解できてないっぽい。
要勉強
0588名前は開発中のものです。
04/05/04 14:07ID:NixkOk4w0589名前は開発中のものです。
04/05/04 21:21ID:Pn9M8zaSそれ、整数で計算させてないか?
時間間隔を小さくする。ロン毛食った法で計算させる。
といったとこかな。
0590名前は開発中のものです。
04/05/04 23:52ID:qKEkic75教科書とか参照しないでやろうとしてたのですが、
無理みたいですね。
それらしい本漁って見ます。
>>589
はい、整数で計算させてました。
型をfloatにして、時間間隔を短くしましたが、
やっぱり上手くいかないです。
「ロン毛食った法」っていうのはモンテカルロ法の事ですか?
0591名前は開発中のものです。
04/05/05 00:32ID:UKg3AzNV詳しくは教科書を読んで
0592名前は開発中のものです。
04/05/05 10:43ID:Q4emnZJi単振動でもいいんじゃないか?
0593名前は開発中のものです。
04/05/05 16:01ID:797y1y3d0594584
04/05/05 17:40ID:8LeTquOfそうですか。なんか数値計算には向かないみたいなことが書いてあったので(場合によるでしょうが)
ニュートソオイラ運動方程式でやってみまつ。
>>585
数値積分でググッたらそれなりの資料は簡単に集まると思いますよ
ルンゲクッタがいいとおもいますが発散を抑えるだけなら他にも簡単なのがいろいろあったと思います。
ゲームなんかではダンパを設けてそれなりに。。。ってのが妥当でしょうか。
ルンゲクッタもそんなに時間はかからないと思いますが。
0595名前は開発中のものです。
04/05/10 11:59ID:N/fVdOPT0596名前は開発中のものです。
04/05/10 12:12ID:OfW6Z+uy0597名前は開発中のものです。
04/05/10 12:18ID:0QopKbcW0598名前は開発中のものです。
04/05/10 12:22ID:N/fVdOPTソウス。
あーあー、もったいない。
0599名前は開発中のものです。
04/05/10 12:55ID:G2PAIqPn0600名前は開発中のものです。
04/05/10 19:44ID:+YhZAZMF0601名前は開発中のものです。
04/05/12 23:43ID:10PMy/KQググるならキーワードにsymplecticを追加してみるといいかも
0602名前は開発中のものです。
04/05/21 04:47ID:ud8TfJ4K計算誤差が溜まっていくやつの典型だな。
回避は不可能だから、速さによる減衰項でも設定すれば?
sin使うやつでも十分物理的だと思う。
微分方程式とくと出てくるし。
ルンゲクッタってどんなんか忘れたけど、
計算による誤差がどうのって内容だったと思う。
でも、誤差は減らせても十分時間がたつとやっぱダメかも?
0603名前は開発中のものです。
04/05/23 18:32ID:9Va5aQ+H「力を及ぼしあっている」(運動方程式)のか
「衝突した」(運動量保存の法則)のか
をどうやって判断したらいいのでしょうか?
0604名前は開発中のものです。
04/05/23 18:42ID:lXyRypt60605603
04/05/23 19:26ID:9Va5aQ+H「腕が箱を押している」と言われたら運動方程式
「腕と箱がぶつかった」と言われたら運動量保存を適用しますよね。
でもこのような分類の仕方はコンピューターにはできないですよね?
もちろん理論的にはどちらを適用しても間違いではないんでしょうけど
それぞれ適する状況があると思うので。
0606名前は開発中のものです。
04/05/23 19:34ID:Z1lcpfE7衝突後のエネルギーを計算する式が運動量保存則なのではないか
0607名前は開発中のものです。
04/05/23 20:12ID:xVOPY9Zu運動量保存則って何か、ざっくりとでいいからココに書いてみません?
0608603
04/05/23 20:33ID:9Va5aQ+H走っている車が箱と接触した場合、
非常にゆっくりとだったら車と箱が接したまま移動するから
車が箱を押す力と摩擦力を考えて運動方程式を立てればいい
しかし猛スピードだった場合車と箱はすぐに離れるから
車と箱それぞれの質量・速度と反発係数を考えて運動量保存の法則を使う。
しかしどこからがゆっくりでどこからが速いのか?ってことです
>>607 衝突の前後で二つの物体の質量×速度の合計は変わらない
0609名前は開発中のものです。
04/05/23 20:35ID:akRKG8io>回避は不可能だから
symplecticでググる
0610名前は開発中のものです。
04/05/23 20:41ID:UheGu9T+ゲームの物理シミュなら、物体にダンパーとバネ組み込んだモデルで力に換算して
計算すれば、運動量保存の法則を持ち出すまでもないと思うんだが?
ひょっとして、反射係数から、ダンパーとバネのパラメータを求めたいってこと?
0611603
04/05/23 20:55ID:9Va5aQ+Hその場合仮に反発係数1の衝突を再現したい場合、
反発力の大きさをどれくらいに設定すればいいかは
どうやったら求められますか?
0612名前は開発中のものです。
04/05/23 20:59ID:UheGu9T+・・・言いたいことはなんとなくわかったw
普通の数値計算の場合、跳ね返りは、一瞬の出来事ではなく、
一定の時間がかかるものとして処理する。(ゲームなら数フレームとか)
そうすると、上の二つの現象は同じ問題として計算できるよ。
0614名前は開発中のものです。
04/05/23 21:14ID:UheGu9T+//質量、バネ係数、反発係数から減衰係数を求める
double CalcDampingCoefficient( double fm,double fk,double fe )
{
//fm 質量
//fk バネ係数
//fe 反発係数
double dLnE = log(fe);//ln(反発係数)
double dLnEE = dLnE * dLnE;//ln(反発係数)の二乗
double dtmp = (dLnEE * 4.0f * fk * fm) / ( dLnEE + 9.869604401f);
double dRet;
dRet =sqrt(dtmp);//SQRT(4*バネ*質量*LN(反発)*LN(反発)/(PI*PI+LN(反発)*LN(反発)))
return dRet;
}
0615名前は開発中のものです。
04/05/24 13:54ID:WZbryid6//運動方程式(ダンパー付)
a=-cv-kx
// x1,x2 前ステップ、求める変位
// v1,v2 前ステップ、求める速度
// dt きざみ時間
v2=(-c*v1-k*x1)*dt
x2=v2*dt
で質問なのですが、この積分方法であらかじめ発散するパラメーターの範囲
って計算する事できるのでしょうか?
0616名前は開発中のものです。
04/05/24 15:26ID:G4h0hiPP発散するか振動するか減衰るかの判別は、振動学の本とか見ればでてるよん。
式は、テキストじゃかけないw
0617602
04/05/25 01:38ID:62M9HfrAれすサンクス、あんまり詳しく見てないけど、
微分を使って高精密解を求める手法であってる?
>Symplectic法は位置や運動量などの保存量ではない物理量の厳密さまでは保証しないが、
>エネルギーが超高精度に保存されるので他の物理量の信頼性も著しく高い。
とあるように、少しずつでも計算誤差は溜まっていくのでは?
たぶんこのバネぐらいならほとんど問題無いのだろうけど・・
何次の近似式を使うかによっても精度が変わってくる様だし。
むかーしやった数値計算の演習かなにかでも上と似たような方法使ってたけど
(それは2次元で適当な関数の数値計算するやつ、微分を使ってどうのこうの)
意外と誤差が溜まるのって早いような気がする。マセマティカ?とか使ってたけど・・
0618602
04/05/25 01:59ID:62M9HfrAうまく指数関数を使って運動量と位置を別々に計算してんだね。
n 次Symplectic数値積分法を用いれば、
エネルギーの計算誤差がO(Δt^{n+1})になると、
つまりより高次の式を用いる事で
エネルギーの計算誤差を指数関数的に減らせるんだね。
結構便利かも。
0619585
04/05/25 18:33ID:BScYV9oYハミルトニアンHをハミルトニアンH'で近似して、
「H'の厳密解」を求める方法みたい
理論的にはH'の厳密解が求まるから、誤差が蓄積していく事がないらしい
0620602
04/05/27 05:00ID:H+VDgLaB自分もよく分かった訳ではないですが理論的には厳密解が求まる
ってなってますけど、やはり高次の展開は面倒くさいですし
無限次に展開できる訳ではないですから、極小の誤差は出るのではないかと・・
それに、系のエネルギーは精度よく出ますが、(積になってるため)
位置やら運動量についてはそれほどでもないようです。
(書店でそれ関係の本探してみたけれど、無くってよく分かりませんが・・)
0621名前は開発中のものです。
04/05/29 11:15ID:0MZ6mwtdってのがウリなんじゃないの?
0622名前は開発中のものです。
04/06/14 17:10ID:LcwM6cnh0623名前は開発中のものです。
04/06/14 17:23ID:bccvdXS80624名前は開発中のものです。
04/06/18 00:08ID:EMUT2NSb0625名前は開発中のものです。
04/06/18 12:00ID:fgcAvitrv=a^3/b^3
aは厨パワー
bはパッチ
0626名前は開発中のものです。
04/06/18 13:13ID:BMXm3Ikx0627名前は開発中のものです。
04/06/18 16:38ID:xHeZzj8T>>626
IDがBMXカコイイ。
>>624
IDがEMUカコワルイ。ROM厨は氏ね
0628名前は開発中のものです。
04/06/18 21:43ID:F29KhlRt0629名前は開発中のものです。
04/06/18 21:57ID:xHeZzj8T0630名前は開発中のものです。
04/06/21 00:30ID:N/rTx0YDをVisualStudio.NET2003で実装しようとしたのですが、「コンストラクタ
の宣言に戻り値の型が含まれています」というエラーが出ます。このコン
パイラでは使えないのでしょうか。
0631名前は開発中のものです。
04/06/21 00:36ID:X4sdLydqC++は忘れたし、その本もってないが、
コンストラクタは戻り値持てないんじゃなかった?
関数の前にvoidついてたら外すとか。
0632名前は開発中のものです。
04/06/21 00:45ID:N/rTx0YDinline Vector::Vector(void)
{
x = 0;
y = 0;
}
//コンストラクタ
inline Vector::Vector(float xi, float yi)
{
x = xi;
y = yi;
}
コンストラクタはこれです。
0633632
04/06/21 00:54ID:N/rTx0YD0634名前は開発中のものです。
04/06/21 10:36ID:qOJWro2I0635名前は開発中のものです。
04/06/22 04:19ID:mg7GE6my0636名無しさん@そうだ選挙に行こう
04/07/11 11:47ID:/yFc1fy2dtの時間内に、1個の物体が2個の物体に連続して
衝突するような場合、どのようにしたらいいか迷っています。
まぁ所詮ゲームということで、考慮しないというのもありとは
思うけど、速度が速い場合にすりぬけとかしそうで・・
ビリヤードゲームとかどうやってるのでしょうか
0637名無しさん@そうだ選挙に行こう
04/07/11 14:28ID:8VEeCcnxそれで同時判定になったとしても誤差はだいたい10分の1だぞ。
0638名無しさん@そうだ選挙に行こう
04/07/11 14:46ID:k8nFCFcRこことかどーよ?
ttp://www.se.cs.titech.ac.jp/~oda/tips/billiard.html
0639名無しさん@そうだ選挙に行こう
04/07/11 16:04ID:lYJpyuro計算量も10倍になるからね〜
まぁ画面表示の処理よりは、軽いのかな。
>>638
ども。衝突を感知したら、そこだけdtを短くして計算するということですね。
というかこのひとのビリヤードアプレット見てたら、
とりあえず多少雑でもいいや、という気になってきました。w
あと、この人のアルゴリズム論に「滑る剛体」って書いてあるけど、
摩擦も回転エネルギーも式に出てこない・・、質点の力学じゃん!みたいな。
参考になりました。どうもでした。
0640名無しさん@そうだ選挙に行こう
04/07/11 18:23ID:r8Nk5A0eゲームとしてはそれっぽく見えればいいので、
いかに処理を端折るかが大事。
「(2Dの)クォータービューのプログラムを作るのに三角関数が…」
とかアフォなことを言い出すようになっては
ゲームプログラマ失格。
0641名無しさん@そうだ選挙に行こう
04/07/11 18:47ID:6WfdSZuvそういう場合は、当たっても球たちをそのフレームは動かさない。
力(加速度x質量として)だけ与えておく。
この動かさないというところが、最大∬F/m dtの誤差になるわけだが。
0642名無しさん@そうだ選挙に行こう
04/07/11 18:53ID:JnYo6778ゲームのジャンルによってはそうかも知れなけど、
3Dゲームだと、どれだけ自然現象を正確にゲーム内に取り込めるかが
議論の中心になってるよ。
物理シミュは当然のこと、AI、機械工学、自然科学の知識まで求められて、もう最悪。
0643名無しさん@そうだ選挙に行こう
04/07/11 18:55ID:6WfdSZuv2Dには2Dのテクがあるけど、今どきsinテーブル使えとか言う人ですか?
シェーダーでマクローリン展開する時代ですよ。
Quaterだったら3Dでやっちゃった方がめちゃ楽。
0644名無しさん@そうだ選挙に行こう
04/07/11 18:58ID:/iADttXZ0645643
04/07/11 18:59ID:6WfdSZuvでしょ。
0646643
04/07/11 19:01ID:6WfdSZuv当たった瞬間で寸止めしておき、物体間のエネルギー交換をしておくということです。
0647名前は開発中のものです。
04/07/11 23:04ID:L4QcjmvWそういうワガママが通じるプラットフォームだけで
作り続けられることを祈っておいてやるよ
0648名前は開発中のものです。
04/07/11 23:09ID:j7YGQS/50649名前は開発中のものです。
04/07/11 23:18ID:DjIuzFY1フェードアウト組が
涌いてくるんだよ
0650639
04/07/11 23:32ID:nlwuxChRそれいいアイデアすね。ゲーム向き!
採用させてもらっちゃいます。ありがとうござます。
>>642
個人的にとても興味がある単語がならんでて、いいなーと
ちょっとうらやましいです。
SEはつまらないですよ・・。数学使わないし・・。
個人的には、材料力学や流体力学が効いてるゲームが
超おもしろそうと思ってます。
>>643
シェーダーでマクローリン展開ですか・・
いっそのこと、物理計算全般を専用ボード等に任せてしまえればいいのにね。
CPUは物理諸元の指定やイベントドリブンなとこを扱えばいいみたいな。
0651名前は開発中のものです。
04/07/11 23:49ID:k8nFCFcR0652名前は開発中のものです。
04/07/12 00:14ID:x9G4Zj2F物理計算専用ボード&チップ。
ttp://jun.artcompsci.org/papers/grape_comptoday9905/grape_comptoday9905.html
ゲーム機に積めたらすごいことになるけど、値段がちょっと……。
0653639
04/07/12 00:37ID:9Xwjmc87ごめん。ハードでの非線形計算の難解さ?は理解してないのだけれど、
ゲーム用途であれば、線形近似したものできっと十分でしょ?
あと、有限要素法なんかもリアルタイムでゴリゴリ解いちゃうみたいな。
重要なのは、よく使う物理モデル等が組み込まれていて、最適化されてることかな。
ゲームでどう使われるかというと、例えば剣をモンスターに向かって振り下ろすとき、
モンスターの体への食い込みを有限要素法で計算したり、
モンスターの表面がつるつるですべって、バランスをくずすプレイヤーの運動を計算したり、
モンスターのよろいに、はね返されて剣が折れたり、腕に振動が来たりみたいな。
諸元を与えるだけで、結果がでてくる。素敵なボード。
>>652
うわ。すごい。読ませていただきます。
0654名前は開発中のものです。
04/07/12 01:21ID:9Xwjmc87ゲームごとに回路を書き換えちゃう。
そうなると、プログラマの手にはおえなくなるね。チップの専門家登場。
http://member.nifty.ne.jp/fpga/start.html
0655名前は開発中のものです。
04/07/13 10:08ID:hctXK+7Sわかんらんので教えて。
1、sinとかcosをテイラー展開するとn次式になるけど
皆さんはn次まで使うの?8次とかは大杉?
2、例えば、多項式 [ x^8 + ax^7 + bx^6 + cx^5 + dx^4 + ex^3 + fx^2 + gx + h = 0 ]
があったとして、この根を求めたい場合
こんな8次まで使わなくても、例えば4次ぐらいで止めていても
解にそう差は出ないもんですか?
0656名前は開発中のものです。
04/07/13 11:28ID:/CvgO/Ka計算結果を
プロットすれば
いいだろが
この怠け者
己の用途に適した精度を選べばいいんだよ。
0657名前は開発中のものです。
04/07/13 11:39ID:mqn4RiL+正解
0658名前は開発中のものです。
04/07/13 11:47ID:VjeNZG6v0659名前は開発中のものです。
04/07/13 11:53ID:/CvgO/Ka0660名前は開発中のものです。
04/07/13 12:16ID:hctXK+7Sんだな、まんどくせがってねえで
やってみるべぎだよな。わりな。
>>658-659
ttp://yukai.jp/~rwf/note/math/taylor/99.gif
これがい?
これみっとやっぱ7次ぐらいがいいみてぇだな。
どもな。
0661名前は開発中のものです。
04/07/13 12:46ID:/CvgO/Ka0662名前は開発中のものです。
04/07/13 13:30ID:e99RBpbHfloat math_sin( float fRad ) {
__asm
{
fld dword ptr [fRad]
fsin ;←こいつが何ステートだかが問題だが。少なくとも近似式解くより速そうだ。
}
}
0663名前は開発中のものです。
04/07/13 15:31ID:8Vlr85G7そういうのは、次数を上げると桁落ちが激しくてできる限り低次で計算をするようにしたほうがいい結果になるッス。
んて、低次の計算で精度を上昇するためには、係数に細工を入れてテーラー展開の値から少しずらす訳なんだけどこれのやり方が幾つかあって
一番簡単なのは、最少二乗法という物で多項式近似をしてみるといいです。
やり方は「統計学」「最少二乗法」「多項式」「曲線の当てはめ」辺りで検索して下さい
double 精度の{ sin(x) , x }の組をサンプルにして当てはめた関数を探って係数を求めるといいです。
必要精度は誤差の二乗和を参考にして次数は決定してやってやればいいかと思います。
他にもエルミート関数から攻める方法とかいろいろあります。
今一まとまってなくてすんまそ
0664名前は開発中のものです。
04/07/13 17:11ID:Aoo+TQQn>2、例えば、多項式 [ x^8 + ax^7 + bx^6 + cx^5 + dx^4 + ex^3 + fx^2 + gx + h = 0 ]
>があったとして、この根を求めたい場合
>こんな8次まで使わなくても、例えば4次ぐらいで止めていても
>解にそう差は出ないもんですか?
解xと係数の大きさによる。
解の桁を大まかに見積もれば各項の大きさが判るので、
大きい項だけで計算してもそれなりの近似は得られる。
精度を上げるには近似を初期値にして元の式を解く。
(計算誤差よりも小さい項は無視しても可)
0665名前は開発中のものです。
04/07/13 20:49ID:Q2z7u57h参考までになんだけれど、
随分昔にやったので、うっすらとしか記憶に残ってないんだけど、2の問題は sin とかの逆関数を求めたいってことなのかな?
もしそうだとすると、この種の級数には反転公式っていう
y=a+bx+cx^2+...
を
x=A+By+Cy^2+...
に反転する公式があったはず、公式集とか探してみたら何か出てくるかもよ。
0666名前は開発中のものです。
04/07/15 14:18ID:9sR90p1I統計学とかメビウスの反転公式とかですかね?
アルティメット難し杉
0667名前は開発中のものです。
04/07/15 16:18ID:JJUiGMY4やさしく解説できないのが悲しい
0668名前は開発中のものです。
04/07/15 18:27ID:9sR90p1I関数 : f3 * x3 + f2 * x2 + f1 * x1 + f0 * x0 = F(x) があったとして
横軸を[x]グループ、縦軸を[f]グループをとった2Dのグラフを作り
各点それぞれにバランスがよくなるような直線を求め、
その直線を使って、任意の[x]から[f]を求めるって感じでいいですか?
0669名前は開発中のものです。
04/07/15 20:42ID:U/3mv6yKちょっと違う気がしますぅ
例えば、近似したい関数を sin(x) としましょうか。
そして、近似関数を f(x) = A*a(x) + B*b(x) + C*c(x) ... とします。
ただし A , B , C は定数 a b c は高速に計算できそうな適当に選んだ関数で
今回は a(x) = 1 , b(x) = x , c(x) = x^3 としておきます。
{ sin(x) - A*a(x) + B*b(x) + C*c(x) ... }^2 == 誤差(x)
{ sin(x) - A + B*x + C*x^3 }^2 == 誤差(x)
として、できる限り小さい誤差になるように A B C を決めようにという物です。
誤差が絶対値ではなく二乗なのは、こうしておけば解析的(要するに式変形で)計算できるからです。
ただ、このままだと一点の誤差だけなので、f(x)の利用範囲で定積分して誤差を合計します。
∫ 誤差(x) dx = 誤差の合計
0670名前は開発中のものです。
04/07/15 20:42ID:U/3mv6yK誤差は最少の点は、誤差の増減量が0になる場所です。
そこで、連立方程式
0 = δ誤差の合計(A,B,C,...)/δA
0 = δ誤差の合計(A,B,C,...)/δB
0 = δ誤差の合計(A,B,C,...)/δC
...
を作ります、この連立方程式は連立一次方程式です。
これを鶴亀算で解いて A B C ... を決めると
f(x) = A*a(x) + B*b(x) + C*c(x) ... ≒ sin(x)
となります。
ちなみに ∫ 誤差(x) dx の値の平方根の大体三倍ぐらいが最大誤差になっています。
以上を公式表片手にガリガリ解きますです。
■ このスレッドは過去ログ倉庫に格納されています