• ベストアンサー

コンピュータのプログラムに内容。

こんにちは。 数学で数値解析を研究していて、Coefというのプログラムの中に、「for i=n to j step -1 do 」とあったのですが、stepとはどのように捉えればよいのでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
noname#77845
noname#77845
回答No.1

何の言語なのか良く判っていませんが…。 こういう場合の「step」の一般的な解釈は、nからjまで、どういう変化を付けていくかと言うことです。 stepを省略すると通常の言語では1ずつ増えていきます。 質問の場合は、1ずつ減ってきます。 例 for i=5 to 1 step -1 do iの値は5,4,3,2,1になります。 for i=50 to 30 step -2 do なら、iの値は50,48,46,44,…,34,32,30になります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プログラムに内容と計算の質問です。

    こんにちは。 補間多項式についての、コンピュータのプログラムの解読に困っています。内容は、 「For the numerical experiments suggested in the computer problems, the following two procedures should be satisfactory. The first is called Coef. It requires as input the number n and tabular values in the array {Xi} and {Yi}. Remember that the number of points in the table is n+1. The procedure then computes the coefficients required in the Newton interpolating polynomial, storing them in the array{Ai}. -------------------------------------------------------- procedure; Coef(n,{Xi},{Yi},{Ai}) real array; {Xi}0:n, {Yi}0:n, {Ai}0:n integer; i,j,n for i=0 to n do {Ai}←{Yi} end for for j=1 to n do for i=n to j step -1 do Ai←({Ai}-{Ai-1})/({Xi}-{Xi-j}) end for end for end procedure Coef --------------------------------------------------------- このプログラムのn=3の時を考えるとき、  (1)j=1のとき、i=3,2,1 <j=1,i=1> {A1}=({A1}-{A0})/({X1}-{X0}) =({Y1}-{Y0})/({X1}-{X0}) <i=1,i=2> {A2}=({A2}-{A1})/({X2}-{X1}) =({Y2}-{Y1})/({X2}-{X1}) <i=1,i=3> {A3}=({A3}-{A2})/({X3}-{X2}) =({Y3}-{Y2})/({X3}-{X2}) (2)j=2のとき、i=3,2 <j=2,i=1> A1=({A2}-{A1})/({X2}-{X0})          ={[({Y2}-{Y1})/({X2}-{X1})]-[({Y1}-{Y0})/({X1}-{X0})]}/({X2}-{X0}) =この式変形をしたいのですが、どのように         すれば良いのかわかりません。ラグランジェ         型になりそうでなりません(泣)         (1)で求めた{A1},{A2},{A3}を使って求めな         いといけないみたいです。 見にくい表し方で申し訳ありません。 アドバイスお願いします!!

  • プログラム(tmp)の意味について

    プログラム(tmp)の意味について begin for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin tmp:=a[i] ; a[i]:=a[j] ; a[j]:=tmp end というプログラムがあるのですが、tmpがどういう役割を持っているのかよくわかりません。 このプログラムでtmpの辺りのプログラムがどのような意味を持っているか教えてもらえませんか?

  • Fortran90のプログラムについて

    大学で卒論のためにFortran90でランダムウォークのプログラムを作ってるんですが…2週間悩んでるんですが、できないところがあります。 「1次元のランダムウォークにおいて、ステップ数Nとxの値を与えたときのすべての可能な歩行を数え上げるプログラムを書け」というものです。 直接ステップ数を書き込んだプログラムを基にして任意のステップ数を入力するプログラムを作ってみたんですが、うまくいきません。 integer :: a(100,20), x, i1, i2, i3 x = 0 do i1 = -1, 1, 2;do i2 = -1, 1, 2;do i3 = -1, 1, 2 x = x + 1 a(x, 1) = i1;a(x, 2) = i2;a(x, 3) = i3 end do;end do;end do end が基にしたプログラムです。これはステップ数が'3'なので実行結果は「-1-1-1,-1-11,-11-1,-11-1,-111,1-1-1,11-1,111」というxの変位の仕方が出ます。 integer, allocatable :: a(:,:) integer :: i, n, x, l print *, 'ステップ数を入力:'; read *, n allocate(a(n, 2**n)) do l = 1, n do i = -1, 1, 2 x = x + 1 a(x, l) = i end do end do end という風に作ってみたんですが、'3'を入力しても同じ結果が出ません。わかりにくい文章で申し訳ないですがどなたかご教授お願いします。

  • N88互換BASICで「メッセージの定義されてないエラーです」と出ます

    N88互換BASICで「メッセージの定義されてないエラーです」と出ます… 最近プログラミングを始めた初心者です。 プログラムでエラーが出て困っています、どこが問題なのか改善方法を教えてください。 10 DIM A(100,100,100) 20 INPUT "B=";B 40 FOR i=1 to 100 step 1 50 FOR j=1 to 100 step 1 60 FOR k=1 to 100 step 1 70 A(i,j,k)=B 80 print A(i,j,k) 90 NEXT k 100 NEXT j 110 NEXT i こんな感じのものです。 配列変数を作って、Bの数値を全ての配列変数に代入したいです。 宜しくお願致します。

  • 行列の積のプログラム

    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

  • VB2010での連立方程式の計算

    VB2010でガウスの消去法のプログラムを作りたいんですが、うまく解が求まらないのでメールしました。今回の例は未知数8です。ちなみにVBは初心者です。 Myarrayは、列の1-8個目までが、各未知数の係数、9個目が整数を表しています。 行は式を表していて、未知数が8個あるので8行あります。 Dim MyArray(,) As Double = {{-1, 1, -1, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0, -1}, {0, 0, 0, 0, 0, 0, 0, 1, -1}, {0, 0, 0, 0, 1, 1, 1, 1, 0}, {0, 0, 1, 0, 0, 0, -1, 0, 0}, {0, 2, 0, 0, 0, -2, 0, 0, 0}, {-6, 2, 0, 0, 0, 0, 0, 0, 0}, {6, 2, 0, 0, 0, 0, 0, 0, 0} } Const N = 8 Dim i, j, k, l, pivot As Integer Dim x(N) As Double Dim p, q, m As Double Dim b(1, N + 1) As Double For i = 0 To N - 1 Step 1 m = 0 pivot = i For l = i To N - 1 Step 1 'i列の中で一番値が大きい列を選ぶ If System.Math.Abs(MyArray(l, i)) > m Then m = System.Math.Abs(MyArray(l, i)) pivot = l End If Next 'pivotがiと違えば、行の入れ替え If pivot <> i Then For j = 0 To 8 Step 1 b(0, j) = MyArray(i, j) MyArray(i, j) = MyArray(pivot, j) Myarray(pivot, j) = b(0, j) Next End If Next For k = 0 To N - 1 Step 1 p = Myarray(k, k) '対格要素を保存 MsgBox(p) MyArray(k, k) = 1 '対格要素は1になることが分かっているので代入 For j = k + 1 To N Step 1 MyArray(k, j) = MyArray(k, j) / p Next For i = k + 1 To N - 1 Step 1 q = MyArray(i, k) For j = k + 1 To N Step 1 MyArray(i, j) = MyArray(i, j) - q * MyArray(k, j) Next '0となることが分かってるので代入 MyArray(i, k) = 0 Next Next '解の計算 For i = N - 1 To 0 Step -1 x(i) = MyArray(i, N) For j = N - 1 To i + 1 Step -1 x(i) = x(i) - MyArray(i, j) * x(j) Next Next MsgBox(x(0)) MsgBox(x(1)) MsgBox(x(2)) MsgBox(x(3)) MsgBox(x(4)) MsgBox(x(5)) MsgBox(x(6)) MsgBox(x(7)) 出力結果としてNAN(非数値)と出てきてしまいます。原因は、pに0が入ってしまっていることがあるからだと思いますが、これを回避する方法はないでしょうか?ご教授よろしくお願いします。

  • basicプログラムです。

    100 DIM A(5) 110 FOR J=1 TO 5 120 READ A(J)   130 NEXT J   140 FOR I=1 TO 4  150 LET K=I    160 FOR J=I+1 TO 5  170 IF A(J)<A(K) THEN LET k=J  180 NEXT J    190 LET T=A(I)    200 LET A(I)=A(K)   210 LET A(K)=T    220 FOR J=1 TO 5   230 PRINT A(J);   240 NEXT J     250 PRINT      260 NEXT I     270 DATA 5,3,7,2,1,  280 END このようなプログラムがあります。 いろいろ調べたのですがそれぞれの文の意味と 何を求めるプログラムか教えて下さい。 5つの数の組み合わせで小さい数から順番に4個 かなと思ったのですが???

  • プログラムの内容

    public class Graph1 public static void main(String[] args){ for(int i=0;i<10;i++){ for(int j=0;j<i*i;j++){ System.out.print("*"); } Syatem.out.println(""); } } } これは放物線をグラフを描写するプログラムなのですがforが二回使われているところがわかりません。丁寧にこの箇所を解説してもらえる方お願いします。i=0から具体的にお願いします。

  • このプログラムの内容を知りたいのですが…

    /*ファイルの書き込み*/ void kyoku_write(char *file_name){ int i=0, j; FILE *write; FILE *point; write = fopen(file_name, "w"); for(j = 1; j < ONPU; j++) { fprintf(write, "%d,",kyoku[i][j]); } point = fopen("メロディ点数.txt","a"); switch(m_key){ case 1: fprintf(point,"【%d】C ***%d\n",scale,kyoku[i][0]);break; case 2: fprintf(point,"【%d】CM7 ***%d\n",scale,kyoku[i][0]);break; } for(j = 2; j < ONPU; j++) { if(kyoku[i][j] == 14 || kyoku[i][j] == 15 || kyoku[i][j] == 16) fprintf(point,"◆"); else if(kyoku[i][j] == 0) fprintf(point,"○"); else fprintf(point, "%d,",kyoku[i][j]); } fprintf(point,"\n///////////////////////////////////////////////////////////////////////////////\n"); fputs("\n", write); fclose(write); fclose(point); } このプログラムが理解できません。わかる方がいたら教えてください。お願いします。

  • コンピュータのプログラムを書くに当たって

     数学のコンピュータの問題で、『プログラムは疑似言語、Pascal、C、BASIC、FORTRANのいずれかで書くこと。ただし、どの言語を使うにしても、プログラム中に使用する名前の型、属性、意味内容を明示しておくこと』とあります。  ここで、「プログラム中に使用する名前の型、属性、意味内容を明示」するとは何を意味しているのでしょうか?  私は、 ○名前の型 : BASIC ○属   性 : FOR n=A TO B              ~           NEXT n ○意味内容 : FOR文に指定された変数の値を順に変化させながらFOR行とNEXT行に挟まれた各行を繰り返し実行する のように、名前の型、属性、意味内容のことを捉えたのですが、このような考え方で宜しいのでしょうか?お手数おかけ致しますが、アドバイスの程宜しくお願い致します。