• 締切済み

高次元な方程式

100元ほど高次元な連立一時方程式をガウス法を用いて解くことは可能なんでしょうか?

みんなの回答

  • keyguy
  • ベストアンサー率28% (135/469)
回答No.7

久しぶりに見てみるとLU分解に対する批判が載っていました 行列を解く場合に今のパソコンでのボトルネックは行列を格納する容量です 従って計算時間は問題になりりません 100や1000などあっという間です むしろ収束型のほうが誤差が大きく誤差を小さくしようとすると計算時間がかかります 非対称ならばLU分解を もし対称ならば改訂コレスキー法を使いましょう 相当早いですぞ 昔変形コレスキー法を大幅に改良した未公開の新改訂コレスキー法によって(従来の3倍以上)8192×8198の対称行列係数連立1次方程式を486(なんと64MHz)のPCで解いた事があります

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.6

できるといえばできますが、ガウス消去法やLU分解は、高次元だと時間がかかりすぎるため(100元くらいだったら大丈夫かもしれませんが)、ヤコビ法、ガウス・ザイデル法、SOR法といった反復法が使われることが多いです。 共役勾配法という、さらに凝った方法もあります。

  • ryuta_mo
  • ベストアンサー率30% (109/354)
回答No.5
参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=898650
tyuukichi
質問者

お礼

かなり詳しい内容が発見できました。 ありがとうございます。

  • keyguy
  • ベストアンサー率28% (135/469)
回答No.4

Ax=b を解くときに最も人気の方法はLU分解による方法でしょう A=LU とAを下三角行列と上三角行列に分解して解きます 直説法ですから誤差は少なくなります

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>ガウス法は知ってました。。その他に方法あるのかな~と思って。。 ん~と、意味が良くわかりません。 質問文と矛盾します。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

とりあえず、サンプルを作ってみました。 2元一次方程式の場合のヤツだけど、Nを大きくすればいいだけですよね。 参考にしてみて下さい。 ピボットを選ぶ方法(ガウス法)も、できるけど、それは、考えてみて下さい。 ていうか、 C言語を知っていて、 ガウス法を知っているなら、 なにも思いつかないってことはないよね?? /* ガウス・ジョルダン法による連立一次方程式を解く */ #include <stdio.h> /* 3x+2y=5 x- y=0 */ #define N 2 double X[N][N+1]={ {3,2,5}, {1,-1,0}}; void GaussJordan(void){ int i,j,k; for(k=0;k<N;k++){ for(j=k+1;j<N+1;j++) X[k][j]/=X[k][k]; for(i=0;i<N;i++) if(i!=k) for(j=k+1;j<N+1;j++) X[i][j]-=X[i][k]*X[k][j]; } } void main(void){ int i,j; for(i=0;i<N;i++){ for(j=0;j<N;j++) printf("%gx%d ",X[i][j],j+1); printf("= %f\n",X[i][j]); } GaussJordan(); for(i=0;i<N;i++) printf("x%d=%g\n",i+1,X[i][N]); }

tyuukichi
質問者

お礼

ありがとうございます。 ガウス法は知ってました。。その他に方法あるのかな~と思って。。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

可能だと思いますけど、 解があるかどうは、別。

tyuukichi
質問者

補足

お返事ありがとうございます。 どのようにプログラムを作ればいいのか考え方だけでも何かないでしょうか。 すいません、何も思いつかないもので…。

関連するQ&A

  • 連立方程式

    C言語で反復法の「ヤコビ法」と「ガウス・ザイデル法」、消去法を用いて連立方程式を解くプログラムを作りたい。 また、プログラムは任意の元数に対応できるように作りたい。 分かる方がいましたら、回答よろしくお願いします。

  • 連立方程式

    こんばんは。 本来はN元連立方程式を考えているのですが、ここでは5元連立方程式として質問させていただきます。 今、下記の5元の連立方程式を考えます。 u[0]-2*u[1]+u[2]=a u[1]-2*u[2]+u[3]=b u[2]-2*u[3]+u[4]=c u[3]-2*u[4]+u[5]=d u[4]-2*u[5]+u[6]=e (a~eは定数で、左辺はu"を差分表示したものです) これでは方程式の数が2つ少なくて解けないので、条件としてu[0]=u[5]、u[1]=u[6]とします。 上の条件を考慮して行列になおすと、 -2 1 0 0 1 1 -2 1 0 0 0 1 -2 1 0 0 0 1 -2 1 1 0 0 1 -2 となり、これをガウス・ジョルダン法で解こうと思っているのですが、行列式が0になってしまい解けません。つまりこの連立方程式は自明な解しか存在しないと言うことでしょうか?ガウス・ジョルダン法以外の別の解く方法か良いテクニックがありましたらアドバイスお願いします。 また分かりにくい場合は補足要求お願いいたします。

  • 連立方程式の解法

    有限要素法のプログラムにおいて、連立方程式を解く方法にガウスの消去法を使用しています。ガウスの消去法の他に、行列を解く方法や計算精度が上がるテクニックなどあれば教えてほしいのですが‥‥

  • 連立方程式について・・・

    連立方程式の解法でガウス法に代表される直接法と傾斜法の簡単な原理や長所・短所を知りたいのですが、ネット検索ではわかりやすいサイトがみつかりませんんでした。。。授業のノートを見ても微妙な感じで、テストも近いのでかなり焦っています。 どなたか教えていただけませんか??お願いします!!

  • 連立一次方程式を解くプログラム

    すこし煩雑な(21×11です)の連立一次方程式を解くプログラムを作りたいのですが 何か良い文献、HPなどは無いでしょうか? いろいろなものを見ましたが大体縦横が同じ(n次元?)の 計算のヒントみたいなのしか見つけれませんでした。 プログラムはほとんどやったことが無いので、 ソースなどが公表されていてそれをちょっと書き換えれば 目的のものがつくれるというのが理想ですが・・・。 解法はガウスジョルダンとかガウスサイデル あるいは他にもっとよいものがあればそちらで構いません。 また、連立一次方程式のちゃんとした答え(言い方悪いですね)が求まらない場合、 近似解を算出することになると思うのですが これはどういった基準で「解」とされるのでしょうか? 計算の反復回数とかでしょうか? まとまりのない質問ですがよろしくお願いします。 何かあれば補足をお願いします。

  • 三次元空間においた図形の方程式

    三次元における図形の方程式の表し方が分かりません。 ・n次元の図形の方程式は『等号』が(n-1)個で表現される。 という文章も目にしましたがその理由も分からず。。。 例えば,三次元における円の方程式として,『円の中心座標,O1(x0,y0,z0)』と『円周上の三点,P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)』がそれぞれ得られた場合,どのような方法でどのような方程式が求められますか? 一つ考えた方法としまして,三点を通る球と平面をそれぞれ求め,それらの連立を解いてみましたが,それだけだと確実に変数が一つ無くなってしまいます。 上記の『三次元は等号が二つ』という事が関係してくるのでしょうか。。。 三次元空間に対しての知識が不足していますので,出来れば『具体的な式』や,さらには『具体的な係数など』まで頂けると非常に助かります。 お願い致します。

  • 連立一次方程式を解くプログラムについて

    数値計算の本を見たら必ず載っている連立1次方程式の解法ですが、どのようなタイプの行列でも解くことができるものにはどのような解法があるでしょうか。もちろん、解くことができる範囲でということではあります。その意味でガウスの消去法(ピボット付)になるでしょうか。ガウスの消去法は解き方に基本的な制約はないですね。一方、共役勾配法の説明を見ると"対称正定値行列の場合、..."となっており、その範囲でしか考えていないということでしょうか。そうなるとかなり絞られることになってしまいます。任意の行列は変換して対称正定値に変換できる、ということでもないと思いますが。 有限要素法に関連した連立方程式解法についても書籍1冊分の解説とかありそうですが。高速化のために長い解説があったとしても前提によって使える範囲が狭いものが多いように思えるのですが。よろしくお願いします。

  • 4次元配列を2次元配列にするには?

    多次元配列を1次元配列に組み替える方法をよく目にするのですが、4次元配列を2次元配列にする方法がわかりません。 4次元配列で表したものを連立一次方程式で解きたいので2次元配列に置き換えなければなりません。 配列の中はどういう風におけばいいのでしょうか。 よろしくお願いします。

  • 2次元の波動方程式の導出について

    2次元空間における波動方程式の導出の手順なんですけど、膜を考えるのではなく、2次元の弾性体をモデルとして導出することはできないのでしょうか? 1次元の波動方程式を導出する時は1次元の弾性体をモデルとしたものがあったので気になりました。

  • 方程式と不等式の指導について

    方程式と不等式の指導について 次の方程式や不等式はいつ指導すべきだと思いますか。 (1)1次方程式 (2)2次方程式 (3)簡単な高次方程式 (4)連立2元1次方程式 (5)連立3元1次方程式 (6)1次と2次の連立2元方程式(直線と二次曲線の連立) (7)1次不等式 (8)2次不等式 (9)連立1元1次不等式

専門家に質問してみよう