- 締切済み
プログラム
以下のプログラムを作る際、どうすれば良いでしょうか? 途中までは作ってみたのですが、そこから後がわかりません。 2行2列の2つの行列A,Bの積を求めるSubroutine, seki( A, B, C ) を作成。(註:Cには、AとBの積を計算した結果が入っているものとする) real*8 A(2,2), B(2,2), C(2,2) write(6,*) “A(1,1)=“ read(5,*) A(1,1) write(6,*) “A(1,2)=“ read(5,*) A(1,2) write(6,*) “A(2,1)=“ read(5,*) A(2,1) write(6,*) “A(2,2)=“ read(5,*) A(2,2) write(6,*) “B(1,1)=“ read(5,*) B(1,1) write(6,*) “B(1,2)=“ read(5,*) B(1,2) write(6,*) “B(2,1)=“ read(5,*) B(2,1) write(6,*) “B(2,2)=“ read(5,*) B(2,2) call seki( A, B, C) write(6,*) “C=“ do 10 i=1, 2 write(6,100) C(1,1), C(1,2) 10 continue 100 format( “|”,e15.7, e15.7, “|”) stop end subroutine seki( A, B, C ) ↓ ↓以下がわかりません。どなたか分かる方ぜひ、教えてください。 よろしくお願いします。 使ってるエディタはxemacsです。
- Hayasumi
- お礼率23% (28/120)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
xemacs をエディタとして使っているって言われても, 全然情報にならないんだけどなぁ. さておき, 本当にそれだけの問題だったら C = MATMUL(A, B) で終わりだねぇ. もちろん, 本当にこれで出して大目玉もらっても責任とれんけど.
- PED02744
- ベストアンサー率40% (157/390)
>↓以下がわかりません。どなたか分かる方ぜひ、教えてください。 ・・・って、行列の積を求める部分まるごとじゃないですか。 駄目ですよ。 こういう場合、メイン部分は大抵設問として与えられているはずだから、 結局何も作っていない・考えていない って事だと思うんですが。 行列計算の方法は以下の通り。 http://ja.wikipedia.org/wiki/%E8%A1%8C%E5%88%97 |a11 a12|×|b11 b12|=|a11*b11+a12*b21 a11*b12+a12*b22| |a21 a22| |b21 b22| |a21*b11+a22*b21 a21*b12+a22*b22| なので、がんばって。
関連するQ&A
- FORTRAN…これってどんなプログラムになりますか??
DO 10 I=1,47 CALL SUB1 10 CONTINUE STOP END SUBROUTINE SUB1 DIMENSION B1(3),B2(3),C(3),L(3),P(3) CHARACTER*12 A READ(5,50) A,B1,B2 50 FORMAT(A12,3F8.1,3F7.1) X=1.0 DO 11 K=1,300 Y1=(-1.0) Y2=0.0 DO 12 J=1,3 L(J)=(-NINT(B1(J)*10.0/B2(J))) Y1=Y1+X**L(J) Y2=Y2+L(J)*X**(L(J)-1) 12 CONTINUE W=X-Y1/Y2 IF(ABS(W-X).LT.1E-10) GO TO 13 X=W 11 CONTINUE 13 WO=W DO 14 J=1,3 C(J)=WO**L(J) 14 CONTINUE R1=0.0 DO 15 J=1,3 R2=R1+B2(J) R1=R2 15 CONTINUE D=0.0 DO 16 J=1,3 P(J)=B2(J)/R1 D=D+P(J)*ALOG(P(J)/C(J)) 16 CONTINUE E=0.0 DO 17 J=1,3 E=E+(B1(J)/B2(J)*P(J)) 17 CONTINUE WRITE(*,200) A,B2,P,E,D 200 FORMAT(1H,2X,A12,3X,3(F7.1,2X),4X,3(F9.6,X),4X,F9.6,2X,F9.6) RETURN END
- 締切済み
- その他(プログラミング・開発)
- プログラムの勉強をしているのですが・・・・・・
以下のプログラムを組もうとしているのですが、ある所から分からなくなりました。ぜひ、教えてください。 配列x(1)=3, x(2)=10, x(3)=4, x(4)=4, x(5)= 1 の最大値と最小値平均値を計算する関数副プログラムmaxmin( x, N, xmax, xmin, xave)を作る。 integer x(5) N=5 x(1)=3 … ←省略 call maxmin( x, N, xmax, xmin, xave) write(6,*) “max=", xmax write(6,*) “min=“, xmin write(6,*) “xave=“, xave end subroutine maxxmin(x,N,xmax,xmin,xave) ここから先が分かりません。どうしたら良いのでしょうか? 分かる方、ぜひ教えてください。 よろしくお願いします。 ちなみに使ってるエディタはxemacsです。
- ベストアンサー
- その他(プログラミング・開発)
- このC言語プログラムでどこをいじればいいのか教えて下さい。
このC言語プログラムでどこをいじればいいのか教えて下さい。 //2 つの整数を入力し、和、差、積、商を計算し表示する。 #include<stdio.h> int main(void) { int a,b,wa,sa,seki,syou; scanf("%d %d",&a,&b); wa=a+b; sa=a-b; seki=a*b; syou=a/b; printf("%d+%d=%d\n",a,b,wa); printf("%d-%d=%d\n",a,b,sa); printf("%d*%d=%d\n",a,b,seki); printf("%d/%d=%d\n",a,b,syou); return (0); } これを繰り返し実行する形にしたいです。できれば今勉強中のwhileでお願いします。 また間違っている部分、指摘などありましたら宜しくお願いします。 大きな値をいれると足し算がダメになったり、割り算がおかしくなります。 また実数の時はどうなのかなど教えて下さい。
- ベストアンサー
- その他(プログラミング・開発)
- 楕円のプログラム(一般→標準形)について
こんばんわ、質問させて頂きます。 この掲示板の「楕円のプログラム」を参照して楕円のプログラムを組みました。(EXCELを用いて近いうちにCで組む予定です。) ある計測点12点より 楕円の一般方程式に当てはめ、 Ax^2+By^2+Cx+Dy+E=1 として各値A,B,C,D,Eを転置、逆行列、積を用いて解きました。 そして、この値は A=1/a^2=-3.16665e-7 B=1/b^2=1.4901e-8 C=-2c/a^2=0 D=-2d/b^2=-2.32831e-10 E=c^2/a^2+d^2/b^2=1 となりました。ここで、小文字a,b,c,d,eは楕円の方程式の標準形 (x-c)^2/a^2+(y-d)^2/b^2=1 となりますが、 Aの値は負となります。つまりa^2は虚数解を持ちます。 これはどういう意味を持っているのでしょうか? ご教授よろしくお願いします。 用いた計測座標(x,y) 0.004343 0.013968823 0.00314534 0.01454172 0.005537 0.016603472 0.00640595 0.019503824 0.00554108 0.022148798 0.00296192 0.024042826 0.000376075 0.024724047 -0.002755 0.024067637 -0.0051356 0.022425276 -0.0061896 0.019473675 -0.0051498 0.016384854 -0.0028986 0.014560819
- 締切済み
- C・C++・C#
- 次のプログラムがわかりません。
次のプログラムがわかりません。 Tiny Basicでのプログラミングです。 (m,n)型行列Aと(n,r)行列Bに対して、その積Cを返すサブプログラム Sub MatMul(A(),B(),C(),m,n,r) とそれぞれを動作させるプログラム。(MatRead,MatPrintに対応する2次元版のMatRead(A(),n,m),MatPrint(A(),n,m)も書いてください。) よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- fortran subroutineについて
fortran subroutineについて c c c kk.f c c integer a,b a=0 do 10 b=1,9,2 a=a+1 print * ,a 10 continue write(*,*) ,'No.1' call sub(a,b) stop end c subroutine sub(a,b) write(*,*) ,'No.2' return end 簡単に上記のようにつくってg77でコンパイルしたのですが、call文とsubroutine文の部分で警告が出ました。 実行ファイルは問題なく動作をするのですが、このままでもいいのでしょうか?ちなみに、警告文を読んでも僕には理解できませんでした。 以下、警告文です。 kk.f: In subroutine `sub': kk.f:13: warning: call sub(a,b) 1 kk.f:17: (continued): subroutine sub(a,b) 2 Argument #1 (named `a') of `sub' is one type at (2) but is some other type at (1) [info -f g77 M GLOBALS] kk.f:13: warning: call sub(a,b) 1 kk.f:17: (continued): subroutine sub(a,b) 2 Argument #2 (named `b') of `sub' is one type at (2) but is some other type at (1) [info -f g77 M GLOBALS]
- ベストアンサー
- その他(プログラミング・開発)
- c言語 行列の積に関して
<問> 4行3列の行列aと3行4列の行列bの積を、4行4列の行列cに格納する関数を作成せよ。 void mat_mul(const int a[4][3], const int b[3][4], int c[4][4]) 入門レベルのスキルしかありません。 上手く行列の積のプログラムが組めません。 行列の積の計算結果が何も出てきません。 どの様にしたら良いかご指導の程、宜しくお願いします。 <プログラム> void mat_mul(const int a[4][3], const int b[3][4], int c[4][4]) { int i, j, k; for (i = 0; i < 4; k++) { for (j = 0; j < 4; i++) for (k = 0; k < 3; j++) c[i][j] = c[i][j] + (a[i][k] * b[k][j]); } } void mat_print(const int m[4][4]) { for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) printf("%4d", m[i][j]); putchar('\n'); } } int main(void) { int i, j ,k; int tensu1[4][3]; int tensu2[3][4]; int seki[4][4]; for(i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { scanf("%d", &tensu1[i][j]); } putchar('\n'); } for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++){ scanf("%d", &tensu2[i][j]); } putchar('\n'); } putchar('\n'); mat_mul(tensu1, tensu2, seki); puts("行列の積"); mat_print(seki); return 0; }
- ベストアンサー
- C・C++・C#
- プログラミング Fortran
以下のプログラムの空白部分が分かる方、是非力を貸して下さい!!(> <) 次の数列ai=1,…,N(1≦N≦100) ai=1, ai+1=2ai-3 に対して S=Σai(※Σの上はN、下はi=1) を計算・表示するプログラムは以下のようになる。ここでは整数Nは端末から入力する。 common num,a(100),sum read(5,*) num call [ ] call pqrstu write(6,*) ‘a=’,(a(i),i=1,num) write(6,*) ‘sum=’,sum end * subroutine abcdef common num,a(100) a(1)=[ ] do 20 i=1,num a(i+1)=a(i)*2.0-3.0 20 continue end * subroutine pqrstu common [ ] sum=[ ] do 20 i=1,num sum=[ ] 20 continue end よろしくお願いします!!
- 締切済み
- その他(プログラミング・開発)