BASICのプログラムで「行列式の積」の計算をしたいのですが…どのようにして行ったらよいか分かりません。あいにく、大学の図書館が閉まってしまい、調べる事もできない状態で困っています。一例として、3行3列の行列式の積の計算をする方法のプログラムを教えてください。
後、計算結果がどのように表示されるかも教えていただけると嬉しいです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

どうも、失礼しました。


もうお分かりと思いますが、全角スペースを使っているためエラーが出ます。このOKweb/教えて!gooでの書きこみは複数の半角スペースが無視されてしまうので、見やすくするため全角スペースを使いました。

390行でのエラーはN88互換BASICのバグだと思います。コメント文を取り除いてください。
    • good
    • 0
この回答へのお礼

有難うございました。
お陰さまで、きちんと表示するようになりました。
これからも何かわからないことがあったら「教えて!goo」
で質問しますので、どうぞよろしくお願いします。

お礼日時:2001/08/26 10:17

質問が間違っていませんか。


「行列式の積」の計算ではなくて
「行列式の値」の計算又は「行列の積」の計算のどちらかでしょう。
行列と行列式はまったく別物です。

anisolさんがお答えになっているのは後者ですね。

この回答への補足

わかりにくい質問でどうもすみません。

「行列の積」の計算が行いたいのです。

補足日時:2001/08/25 15:01
    • good
    • 0

N88BASICでいいですか?



100 '初期設定
110 L=3:M=3:N=3 'A:L行M列, B:M行N列
120 DIM A(L,M),B(M,N),X(L,N) '配列は(行,列)の構成

130 '行列Aのデータの読み込み
140 FOR I=1 TO L '1行からL行まで
150  FOR J=1 TO M '1列からM列まで
160   READ A(I,J)
170  NEXT J
180 NEXT I

190 '行列Bのデータの読み込み
200 FOR I=1 TO M
210  FOR J=1 TO N
220   READ B(I,J)
230  NEXT J
240 NEXT I

250 '計算
260 FOR I=1 TO L '答の行列はL行N列になる
270  FOR J=1 TO N
280  X(I,J)=0 '初期化
290   FOR K=1 TO M '答の(I,J)成分を計算
300    X(I,J)=X(I,J)+A(I,K)*B(K,J)
310   NEXT K
320  NEXT J
330 NEXT I

340 '表示
350 FOR I=1 TO L '行の表示
360  FOR J=1 TO N '列の表示
370   PRINT USING"#### ";X(I,J);
380  NEXT J
390  PRINT '1行表示したら改行する
400 NEXT I
410 END

420 'データA
430 DATA -3,1,4
440 DATA 0,1,3
450 DATA -2,5,1
460 'データB
470 DATA 4,-1,0
480 DATA 1,0,3
490 DATA 0,1,0

この回答への補足

ご説明有難うございます。
組んでくださいましたプログラムをそのまま「N88互換性BASIC」のプログラムに入れ、計算させました所…150行の所でメッセージが定義されてないとのエラーが出てしまいました。何処を訂正したら宜しいのでしょうか???素人なもので…全くわかりません。ご説明よろしくお願いいたします。

補足日時:2001/08/25 15:05
    • good
    • 0
この回答へのお礼

先ほどのエラー何とか成りました。
でもまだ390行でエラーが出てしまい、行列式の表示が上の一行しか表示されずすべての表示が上手くいきません。何処を直したらよいのでしょうか?アドバイスいただけないでしょうか?

お礼日時:2001/08/25 18:29

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【京都市】美味しいアップルパイを売ってる店

妻がとてもアップルパイが好きなので
チャンスがあれば色々な店のアップルパイを
会社帰りにでも買って帰りたいと思ってます。
京都市内でアップルパイが美味しいお店を教えて下さい。

Aベストアンサー

初めまして、こんにちは。

【松之助】
アメリカンケーキがどれも絶品のケーキ屋さんです。
こだわりのアップルパイは、サクサクっとした食感があって美味しいですよ♪
京都には2店舗あります。
http://www.matsunosukepie.com/index.html

お役に立てればイイのですが・・・。

QBASIC:行列式の値を求めるプログラム

BASIC言語で行列式の計算を求めるプログラムを作りたいのですが、どなたか具体例等で教えていただけると助かります。

Aベストアンサー

HP OpenVMS の BASIC なら
DIM A(5, 5), B(5, 5)
MAT INPUT A
MAT B = INV(A)
PRINT DET
でよさそうだけど....

Q緊急!アップルパイのレシピ

明日アップルパイを作ろうと思います。型を使わずに作ろうと思っています!前アップルパイを作ったらパイの部分が表面はサクサクに焼けていたんですが下の部分(オーブンシートに接してるところ)がべちょべちょで油っぽかったんです。

どなたか失敗なしでサクサクのアップルパイのレシピ教えてください!

Aベストアンサー

失敗しないアップルパイで2件ほど参考になる記事がありましたのでご紹介しておきます。

下に敷くシートに、よく焼いたパン粉を乗せるのです。
そうするとフィリングの水分をパン粉が吸ってくれて、パリッと仕上がりました。
もうひとつ!上と下の生地をあわせるときは、周りをフォーク等でつぶさないで卵黄で接着するだけにすると、側面にふっくらと層ができます。

http://butachoki.exblog.jp/4669677#4669677_1

参考URL:http://toyotires.jp/care/select_car.html

Q行列の積の計算プログラムを教えてください。

現在、BASICの勉強を独学でしていますが、なかなか理解ができないでいて困っています。
4行4列の2つの行列A、Bの積を計算するプログラムを書きたいのですが、どのように書けばよいのか教えていただけないでしょうか?
DIM文を使うことはわかるのですが、使い方がよくわからないでいます。
よろしくお願いします。

Aベストアンサー

現在の話ですから、BasicというのはVisual Basicの事だと思っていいんでしょうか?
DIM文はもともとはdimension=次元を表し、配列の宣言専門のステートメントだったと聞いた事
があります。
それはさておき、本題に入ります。

【DIM文の使い方】

変数を宣言するステートメントです。
特に配列に関しては、配列の最大の添え字を宣言できると考えた方がいいでしょう。

1)----------------------------------
(Option Base 0)※Option Baseを宣言しないと添え字を0からと解釈する。

Dim x(3) As Integer
Dim x(0 to 3) As Integer

2)----------------------------------

Option Base 1
Dim x(4) As Integer

3)----------------------------------

Dim x(1 to 4) As Integer

------------------------------------

1)~3)まで、要素を4つとるという点では差がありません。1)はx(0)が要素としてあるので要素数は4です。

2)と3)は添え字1~4をとるという意味で等価です。
1)は、添え字を0~3でとるという意味で他の二つとはちょっと違います。

以上は、一次元の配列なので、行列のような二次元以上の配列を宣言する場合には
Dim x(一次元目の添え字宣言、二次元目の添え字宣言、・・・)
となります。

実際,行列を宣言する場合には、4行4列の行列であれば、

Dim matrix(3,3)
Dim matrix(0 to 3,0 to 3)

Option Base 1
Dim matrix(4,4)
Dim matrix(1 to 4,1 to 4)

になります。

行列としてみる場合には、一次元目が行、二次元目が列です。

【行列の計算】

行列Aと行列Bの積は、Aの列数とBの行数が等しい時に計算可能です。
行列Aの成分をAlc、Bの成分をBlc、積ABの成分をClcで表すと
(Xlc l:何番目の行か、c:何番目の列か と定義します。)

Clc = Al1*B1c +Al2*B2c・・・Alx*Bxc  (xは、Aの列数とBの行数)

という式で積ABの要素は求められます。
積ABの要素Cが行(l)、列(c)の二つの項目を持っているのでそれでを特定するため、まずループ
が二重に必要です。
そしてその要素一つについて、加算のためのループが必要なので、合計ループは三重です。

試みに書いたのは、以下のような感じです。

Dim A(0 To 3, 0 To 3) As Integer
Dim B(0 To 3, 0 To 3) As Integer
Dim AB(0 To 3, 0 To 3) As Integer

Sub main()
  Dim i, j, k, sum As Integer
  Dim msg As String

  '行列の初期化処理を行う

  '行列の計算を行う
  For i = 0 To 3
    For j = 0 To 3
      sum = 0
      For k = 0 To 3
        sum = sum + A(i, k) * B(k, j)
      Next k
      AB(i, j) = sum
    Next j
  Next i

End Sub

以上、参考までに。

現在の話ですから、BasicというのはVisual Basicの事だと思っていいんでしょうか?
DIM文はもともとはdimension=次元を表し、配列の宣言専門のステートメントだったと聞いた事
があります。
それはさておき、本題に入ります。

【DIM文の使い方】

変数を宣言するステートメントです。
特に配列に関しては、配列の最大の添え字を宣言できると考えた方がいいでしょう。

1)----------------------------------
(Option Base 0)※Option Baseを宣言しないと添え字を0からと解釈する。

Dim x(3...続きを読む

Q簡単に焼けるアップルパイ

私の彼は甘いものが大好きで、特にプリンとアップルパイが好きなのですが
今度、彼と付き合って1年になるので、彼の好きなお菓子を作ってあげたいと思っています。

プリンは彼も作れるので、アップルパイを作ろうかと思うのですが
アップルパイって難しそうですよね・・・。
私は焼き菓子とかは作るのですが、パイとかは作ったことがありません・・・。

しかも、家のオーブンは本格的なケーキなどを焼くようなオーブンでもないんです。
アップルパイで、簡単に焼けるレシピってありますでしょうか?

また、簡単に作れるアップルパイの作り方が載ったレシピ本とか売ってませんでしょうか?

どなたかアドバイスいただけませんでしょうか・・・
お願いします!!

Aベストアンサー

こんにちは。
パイは生地から作ろうと思うと面倒ですが、冷凍パイシート(折りパイ生地)を使うとそれはそれは簡単に色々なパイが作れます。

うちの夫もアップルパイが大好きなので私も良く作りますので、『アップルパイ食べたーい!』と言われてからスグにでも作れる作り方を書きますね。

まず、冷凍パイシートは冷凍庫から出して置いておきます。その間にリンゴをくし型など好きな形に切って耐熱のボウルなどに入れ砂糖をふりかけレモン汁を少し絞ります。分量は適当で大丈夫です!

電子レンジでラップをしないで2分ずつくらい加熱して好みのやわらかさにします。(一気に加熱すると砂糖が煮立って吹きこぼれますので様子を見ながら時々かき混ぜてこまめに加熱してください)
そこに好みでレーズンやシナモンを加えて混ぜて冷ましておきます。(味見をして甘味が足りなければ砂糖を足して再度加熱してください)

その間にパイシートを2枚四角く伸ばします。(上に乗るほうは若干大きめになるようにして)

オーブンシートの上にパイシートを置きその上にレンジで煮たリンゴを並べ、上になるパイシートをかぶせて少しひっぱりつつ端をそろえ、フォークの背でフチを模様をつけるようにグルッと一周押さえます。

後は、表面にナイフで葉っぱの柄を書いたり放射状に飾り線などを入れて、余裕があれば溶き卵も塗るとみためが立派になります。

焼くときはパイシートの袋に何度くらいとか書いてあると思いますのでそのとおりに。わからなければ200度前後で表面がこんがり良い色になるまで(うちの場合は10分ちょっとで焼けます)焼けばOKです。

かんたんに作れるのがお分かりになったでしょうか?

一度作ってみると本当に簡単なのがわかりますので、その後生地作りにも挑戦したり、リンゴもお鍋で本格的に煮てみたり丸い型で焼いてみたりしてみてはいかがでしょうか?

でもレンジで作ってもなかなかいけますヨ。食べたいときにすぐ作れるし。
秋なのでサツマイモもレンジでチンしてバターとミルクでマッシュにしてリンゴと2段にしてパイにしてもいいですよね~。

本格レシピも写真つきのがありましたので参考までに貼っておきます♪
参考になると良いですが。

参考URL:http://www.katch.ne.jp/~kamys/resipi/resipi_cake/pie/appilepie.files/appilepie.htm

こんにちは。
パイは生地から作ろうと思うと面倒ですが、冷凍パイシート(折りパイ生地)を使うとそれはそれは簡単に色々なパイが作れます。

うちの夫もアップルパイが大好きなので私も良く作りますので、『アップルパイ食べたーい!』と言われてからスグにでも作れる作り方を書きますね。

まず、冷凍パイシートは冷凍庫から出して置いておきます。その間にリンゴをくし型など好きな形に切って耐熱のボウルなどに入れ砂糖をふりかけレモン汁を少し絞ります。分量は適当で大丈夫です!

電子レンジでラッ...続きを読む

QPythonで行列の要素積(アダマール積)を高速に計算する方法を探しています。

Pythonで行列の要素積を高速に計算する方法はありますか?
実際に計算したいものはN=30000くらいのオーダーで、(N,N)行列同士の積です。

np.arrayでやるとかなり時間かかってしまうので、いい方法があれば教えて下さい。
ちなみに、要素に0が多く含まれるため本来は疎行列を用いた計算を行いたいのですが、
sp.sparseでは、
A*B = A.dot(B)
となってしまい、要素積を求める方法が見つかりません。

疎行列同士の要素積を求める方法がありましたら、そちらも知りたいです。

※補足
=====
A = np.array([[1 for i in range(10000)] for j in range(10000)])
B = np.array([[2 for i in range(10000)] for j in range(10000)])
C = A*B
print(A)
print(B)
print(C)
=====
とすると、求めたい答えは
C = np.array([[2 for i in range(10000)] for j in range(10000)])
ですが、以上の計算にも大体30秒くらい時間がかかってしまいます。
(本来はもっと疎な行列を扱います。)
どうにかこれを0.1秒くらいのオーダーにしたいと考えています。

Pythonで行列の要素積を高速に計算する方法はありますか?
実際に計算したいものはN=30000くらいのオーダーで、(N,N)行列同士の積です。

np.arrayでやるとかなり時間かかってしまうので、いい方法があれば教えて下さい。
ちなみに、要素に0が多く含まれるため本来は疎行列を用いた計算を行いたいのですが、
sp.sparseでは、
A*B = A.dot(B)
となってしまい、要素積を求める方法が見つかりません。

疎行列同士の要素積を求める方法がありましたら、そちらも知りたいです。

※補足
=====
A = np.arr...続きを読む

Aベストアンサー

要素積だと
A.multiply(B)
では?

Qアップルパイ!!

今、数年ぶりにアップルパイを食べています!


おいしい!アップルパイってこんなに美味しかったんですね~
久しぶりすぎてそのおいしさに感動です。

さっそく、アップルパイの作り方を調べて見たのですが、煮るんですねりんごを。そのあたりからよくわかっておりませんでした~

いやあ、アップルパイひとつでこんなに幸せなほんわか気分になれるとは。

今日はアップルパイ記念日にしよう。

アップルパイすきですか?

Aベストアンサー

美味しいですよね~♪

本格的に作るならリンゴを煮るところから始めないとですけど、意外と簡単にできる方法もあるんですよ。
それは…
切って砂糖をまぶしたリンゴを、ギョーザの皮で包んで、揚げて、もう一度砂糖をまぶす!
それだけ!
皮は2枚使って平たく包むとそれっぽい!

マックのホットアップルパイみたいな味になります。
良ければお試しあれ~

Q行列の積のプログラム

n次正方行列X=(xij),Y=(yij)の積XYの(i,j)成分はΣ(k=1,n)xikykjで定義する。これをmin{k∈1,2,…n}(xik+ykj)と変更したとき行列の積を計算するプログラムの作成をしたいです。

※minXは、Xの中の最小値を意味する。

十進BASICで解きたいのですが、以下のプログラムで間違いがあったら指摘してただけないでしょうか?よろしくお願いします。

INPUT N
DIM X(n,n)
DIM Y(n,n)
DIM Z(n,n)
INPUT X(n,n)
INPUT Y(n,n)
FOR i = 1 TO n
 FOR j = 1 TO n
  LET Z(i,j) = X(i,1) * Y(1,j)
   FOR k = 2 TO n
    IF Z(i,j) > X(i,k) * Y(k,j) THEN LET Z(i,j) = X(i,k) * Y(k,j)
  NEXT k
 NEXT j
NEXT i
INPUT Z(n,n)
END

Aベストアンサー

これ前やったなあ。

僕の場合はScheme(Lispの一方言)で書いたんですけど、恐らくBASICで書く以上、「殺人的な長さ」になると思います。
まあ、僕はBASICは良く知らんので、入出力関係ですと、ANo.1さんの方を参照して欲しいんですが、一応ロジックで気づいた事を挙げていきます。

9行目:
LET Z(i,j) = X(i,1) * Y(1,j)

そもそもここが違います。
題意では、

min{k∈1,2,…n}(xik+ykj)

でないとならないので、そもそも掛け算を用いません。
また、配列Zのi行j番目にいきなり計算結果を代入するのも間違っています。

題意的には、例えば4行4列の計算結果、Z_{1,1}に当たる数値の候補は

Z_{1,1}=min{x_{1,1}+y_{1,1},x_{1,2}+y_{2,1},x_{3,1}+y_{1,3},x_{1,4}+y_{4,1}}

の4つあって、この4つの中から「最小の値」をZ_{1,1}として返さないといけません。つまり、この作業をn行n列の行列Zに対して「全て」やらないとならないのです。

もうちょっと具体的に見てみましょうか?
例えば4行4列の行列Xが、十進BASICの記法を真似ると、

MAT X = 1,0,2,0,0,1,0,2,2,0,1,0,0,2,0,1

で、同様に4行4列の行列Yが、

MAT Y = 16,3,2,3,5,10,11,8,9,6,7,12,4,15,14,1

だった場合、出力結果の行列Zは

MAT Z = 4,4,3,1,6,3,2,3,4,5,4,1,5,3,2,2

でないとなりません。
何故なら先ほどの定義により、例えばZ_{1,1}は

Z_{1,1}=min{1+16, 0+5 , 2+9 , 0+4}

となり(MAT Yの要素を4つづつに分けて、その先頭要素が計算に使われていることに注意!)「その中の最小値」の4がZ_{1,1}の計算結果として出力されます。
どのXの要素とどのYの要素が計算に使われるのか、は普通の「行列の積」に従ってるんですけど、この問題の場合、根本的にn行n列同士の計算を行うと、各要素に対してなおかつ「n個の要素から」最小値を返す、ってのが題意です。
従って、例示したプログラムにはその計算過程が組み込まれていないように見受けられます。
根本的なロジックを見直した方が良いでしょうね。

これ前やったなあ。

僕の場合はScheme(Lispの一方言)で書いたんですけど、恐らくBASICで書く以上、「殺人的な長さ」になると思います。
まあ、僕はBASICは良く知らんので、入出力関係ですと、ANo.1さんの方を参照して欲しいんですが、一応ロジックで気づいた事を挙げていきます。

9行目:
LET Z(i,j) = X(i,1) * Y(1,j)

そもそもここが違います。
題意では、

min{k∈1,2,…n}(xik+ykj)

でないとならないので、そもそも掛け算を用いません。
また、配列Zのi行j番目にいきなり計算結果を代入するの...続きを読む

Qアップルパイの作り方

はじめまして。
りんごをたくさん頂いたので、冷凍のパイシートを使ってアップルパイを作ってみたいと思うのですが・・・はずかしながら初挑戦です。
初心者でも、オーブントースターで簡単に美味しく作れるアップルパイのレシピを知っている方がありましたら、是非教えて下さい。よろしくお願いします。

Aベストアンサー

こんばんは。

生りんご・冷凍パイシート・オーブントースターの条件で、
一番簡単そうなものを拾ってみました。

○ HIRO'S HOME PAGE 簡単レシピ 簡単アップルパイ
http://www.i-chubu.ne.jp/~soyama/apple.html

ご参考程度に。

参考URL:http://www.i-chubu.ne.jp/~soyama/apple.html

Q行列の積のプログラム

n次正方行列X=(xij),Y=(yij)の積XYの(i,j)成分はΣ(k=1,n)xikykjで定義される。これをmin{k∈1,2,…n}(xik+ykj)と変更する。
※minXは、Xの中の最小値を意味する。

このとき、次の行列D

D=
0 6 2 9999
4 0 3 4
9999 1 0 8
9999 2 9999 0

の新しい行列の積の定義によるD^3とD^4を計算せよ。

行列がうまく表せず見にくいと思いますが、4次正方行列となっています。

D^2=
0 3 2 10
4 0 3 4
5 1 0 5
6 2 5 0

D^3=
0 3 2 7
4 0 3 4
5 1 0 5
6 2 5 0

D^4=
0 3 2 7
4 0 3 4
5 1 0 5
6 2 5 0

であっていますか?教えてほしいです。よろしくお願いします。

Aベストアンサー

一応合ってますよ。

これは宿題なんですか?
こんなトコロで答え合わせしてもしょうがないでしょう。
せっかく自分で作ったプログラムなんですから、自信を持ちましょう。


人気Q&Aランキング

おすすめ情報