• 締切済み

【C言語】行列のランク(階数)の求め方

閲覧して頂きありがとうございます。 C言語で行列のランク(階数)を求めたいのですが、標準関数には用意されていないみたいなので 自分で関数を作成したいのですが、どう作ればいいのかも困っている状態です。 例えば、値が0と1で構成された4×4の行列の場合の ランクを求めるにはどういったアルゴリズムで作成するのでしょうか? ご回答者様の手間にならない範囲でヒントやソースコード、参考サイトなどあれば ご教示お願いできないでしょうか。 漠然とした質問で申し訳ございませんが、よろしくお願いします。

noname#142160
noname#142160

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「分かりやすい説明」があった.

参考URL:
http://okwave.jp/qa/q7077155.html
noname#142160
質問者

補足

ご回答ありがとうございます。 参考URLは私がランクがどういったものかわからなかったため 質問させて頂いたQAになり、ランク自体はどういったものかは 多少わかりましたが、C言語に書き起こすことが今の私では 難しかったため、今回の質問をさせて頂きました。 探して頂きありがとうございました。

関連するQ&A

  • 行列のランクについて

    行列のランク(階数)についての質問です。 wikiなどの情報をみて理解しようとしているのですが、 説明が小難しく私の頭ではうまく理解できません。 例えば下記のような0と1で構成されている行列があった場合 ランクは何になるのでしょう? (できれば途中過程も教えて頂ければ…) また、ランクを求めることの意味なども教えて頂けると助かります。 何か不明な点などあれば補足させて頂きますので よろしくお願いします。 ▼行列1の場合  1 0 1 0  0 0 0 1  1 0 1 1  1 1 0 0 ▼行列2の場合  0 0 0 1  1 0 1 1  0 1 1 0

  • C言語における対称行列の作り方は?

    「0」「1」のみの数値を用いてC言語で対称行列を作成したいのですが、アルゴリズムを知っている方がいたら教えてください。

  • 非正方行列の行列式をC言語で計算したいのですが。

    非正方行列の行列式を求めたいのですがどのような式になるのでしょうか? また、これをC言語で作成しなければなりません。 プログラミングはほぼ初心者なので、回答者様の手間にならない程度で優しく回答していただければと思います。 宜しくお願いします。

  • c言語で大きな値の階数を求めたいのですが

    c言語で関数を用いてn!を求めるプログラムを作ったのですが、 nの値が大きくなると0という値になってしまって正しい値が出てきません。 プログラムをどの様に修正したらきちんとnの値が大きくなっても 正しく値が表示されるでしょうか? ソースはこちらです。 #include <stdio.h> int func(int i); int func(int i){ if(i == 0) return 1; else return (i*func(i-1)); } void main(){ printf("%d",func(90)); /*90!を求める*/ } よろしくお願いします。

  • 「INT86(・・・・・・);」 って何でしょう?(C言語)

    C言語のソースをみていると、その中に INT86(); という関数が出てきました。 しかし、ソースのどこを見ても その関数が定義されているところがありません。 ほかにIncludeされているファイルは Windows標準のヘッダーファイルだけでした。 そこで質問なのですが、 この「INT86()」というのは標準の関数なのでしょうか? ご回答お願いいたします。

  • c言語の課題について

    (1)3行3列の行列の和を求めて表示するプログラムを作成しなさい。 (行列の要素はあとで適当な値を打ち込むこととする) (2)2行3列の行列と3行2列の行列の積を求めて表示するプログラムを作成しなさい。 (行列の要素はあとで適当な値を打ち込むこととする) プログラム言語を最近習いはじめたんで、あんまり難しいことは しないと思うんですが、全くわからなくて苦労しています。 わかる人がいたら至急教えてください。お願いします。

  • C言語のアルゴリズムについて

    C言語で「標準入力から英語の文章を読み込んで,文字列Ilmorが出現した行をその行番号とともに表示するプログラムを作りなさい.」とプログラムを作りたいのですが、文字列を発見するところまでは分かるのですが、その行どうやって表示すればいいのか分かりません。また、文章を読み込むのもすごくややこしく最後にエンターを二回押すなどの制限があります。(scanf) 参考になるプログラムを書いていただける方いませんか?できればC言語のアルゴリズムについて詳しく書いた本やサイトがあれば教えていただきたいです。 レベルは超入門的な本を2,3冊読んだ程度です。アルゴリズムなどにはまったく触れてなかったし、ライブラリー関数も少ししか載ってなかったので関数の本もあれば教えていただきたいです。

  • 行列のC言語プログラム

    行列を使ったC言語のプログラムの作成をしようとしているのですが、 最初で躓いてしまっています。次に内容を出すので何がダメなのか教えて下さい。 行列A=0 0 0 0      1 -2 0 0      0 0 0 -0.0201      0 0 1 -2.01005 #include<stdio.h> #include<math.h> void main(void){ double a[4][4]={{0,0,0,0},{1,-2,0.0},{0,0,0,-0.0201},{0,0,1,-2.01005}}; double det=0.0; det=a[2][1]*a[2][2]*a[4][3]; printf("%f\n",det); scanf("%lf",&det); } 確認用の計算で、1*-2*1=-2という結果になると思ったのですが、 実行すると表示される値が「0」でした。 箇所の指定も行列の内容も多分間違ってないと思え、どこに問題があるのかわかりません。 後、デバックによる出力の際に画面が一瞬出てすぐに消えるんですがそれについても 分かるならお願いします。(とりあえず最後にscanfを入れて凌げるのでついででいいです。)

  • C言語で地図を描きたい

    C言語で、地図を描くプログラムを作ろうと考えていますが、 どなたか参考になりそうなソースや文献などご存知でしょうか。 東京湾などの形状を描くつもりですが、将来的に 詳細/広域切り替え機能も必要になります。 海岸線を正確に描くためには、 画面外にある地形座標とも線を繋ぐ必要がありますが これをどう処理しようか考えあぐねています。 標準出力にXY座標を与えて線を描く関数や、 緯度経度をXY座標に変換する関数は用意しています。

  • C言語の質問

    Fortran言語にはsign(x,y)の関数があります、つまりxの絶対値をもち、かつyの符号をもつ値を生成する関数です。 C言語にこのような関数をも使いたいのですが、調べてみるとcopysignという関数がありました、関数の機能説明もFortaranのsignと同じとなっています。しかしながら、実際にCのソースファイルにcopysignを使うと、ビルド時に、「error C3861: 'copysign': 識別子が見つかりませんでした」のエラーが出てきました。また宣言時に「#include <math.h>も入れています。  どちら様がご存知ならば教えていただければ幸いなことです。  宜しくお願い致します!<^ ^>!!!