• 締切済み

収束計算

ファイル(行列形式)をプログラムに読み込んで、プログラム上で計算させようと思っていますが、ファイルを読み込むプログラムを教えて下さい。 次に ある式に値Aを代入して次の10個の値が出てきたとします。 B,C,D,E,F,G,H,I,J,K この10個の合計が0(ゼロ)に近くなるような(収束するってこと?)値Aを決めるプログラムを教えて下さい。

みんなの回答

  • yaho
  • ベストアンサー率71% (5/7)
回答No.2

はじめまして、yahoです。 質問の内容についてのプログラム(簡単ですけどね)を以下に載せます。 Private Sub Command1_Click() Dim i as integer,j as integer Dim a(10,10) as integer ' 10は適当 CommonDialog1.ShowOpen ' オープンダイアログを開く' CommonDialog1.CancelError = True On Error GoTo can_err Open CommonDialog1.FileName For Input As #1 For i = 0 To GYOU ' (GYOU × RETU 行列) For j = 0 To RETU Input #1, a(i, j) Next Next Close #1 can_err: End Sub ここで、読み込むファイルには、 1 2 3 4 5 6 7 8 9 10 11 12 のように保存しておきます。(4×3行列、間はスペースで) またあらかじめGYOUとRETUに値を入れておきます。 (この場合、GYOU=3,RETU=2) これによりa配列に値が入ります。 次の質問ですが、No1の方がおっしゃられたように10個の値が出てくるのが分かりません。 (ですのでそこは飛ばして)10個の値が出てきたとしたら、それを順順に加算して、それsumが0に近ければ終了し、そうでなければGOTO文で戻してやればいいのではないんでしょうか? 例えば、 if(abs(sum) < E-5) then 終了 else goto 戻る です。 もし、ニュアンスが間違ってたらごめんなさいね。 それでは、頑張ってください。

hata_takuro
質問者

お礼

こんにちは。 回答ありがとうございます。 これを参考にさせていただきたいと思います。 今後もよろしくお願いします。

  • Zincer
  • ベストアンサー率44% (89/202)
回答No.1

読める人が読んだら解るかもしれないと思っていたんですが、 >ファイル(行列形式)をプログラムに読み込んで… 行列形式(もしかして配列)のファイルは誰が作成したものですか? 一般的な約束事は無かったと思いますので、作った本人しか解らないと思いますよ。 >次に >ある式に値Aを代入して次の10個の値が出てきたとします。 どうしたら、1つ(?)の式に1つの変数「A」をいれて値が10個も出てくるんですか? 補足頂けますでしょうか?

関連するQ&A

  • 収束

    f(x)=(x^2-a)/(x-1)のとき、lim[x→1](x)が収束するように定数aの値を定めよ。 lim[x→a]f(x)g(x)を使うようですが、なぜこれが収束するのか分かりません。。 教えて下さい。

  • エクセルの計算式VLOOKUPを再度教えてください!

    再度,質問いたします、わかりましたら、教えてください。 エクセルの計算式でE1のセルに次の計算式があった時に =VLOOKUP(B1,$F$1:$G$10,2,FALSE)この式は、成り立っています。 「この時にもう1つ条件をつけて、A1のセルの値(20種類の値が、ある時)に対して範囲を変えることはできますか。たとえばA1セルが50という値のときは、$F$1:$G$10の範囲ですが、A1セルが130と言う値のときの範囲は$F$11:$G$15、A1が201のときの範囲は$F$16:$G$25を指定のように範囲を変えられますか?FとGに範囲が20種類タテにあります。H1からH10のセルは50という値、H11からH15のセルは130という値,H16からH25のセルは201と言う値があります。AからE列は1から1000のセルがあってE列は計算式をコピーします。」わかりましたら、計算式を書いてお教えください。

  • 積分区間と積分するもの、具体的な計算

    F=∫x dx (0~2まで積分) があったとします。 これを F=∫lnx d(lnx)としたとき積分範囲は(0~2)のままなのでしょうか? また、この2式は同じこと(どちらも値がF)を表しているようなのですが、なぜそうなるのでしょうか? 次に具体的な計算について質問ですが F=[1/{√(2π)*ln2}] *∫(積分区間0~x) exp[-(lnx-ln1)^2/2*(ln2)^2] d(lnx) この計算はどうするのでしょうか? 積分区間0~xについては、x=0.4で計算お願いします。 ちなみに上の式は、元の式で与えられてる値は代入したもので、もとの式の形をわかって頂くために、あえて値を代入しただけで計算してまとめておりません。

  • 行列成分の点列の収束について

    行列の指数関数を考える上で次のことを示したいのですが M(n,R)をn次実正方行列全体の集合、A,B∈M(n,R)に ノルムを ||A|| = √tr(tAA) ρ(A,B) = ||A-B|| と定義する。ただし tA はAの転置行列、 trA はAのトレース このとき、M(n,R)の有界列{Ak}の収束を示したいのですが、うまくいきません。 不等式を使えば示せるらしいのですがうまく収束をしめすことがどうもきれいな式にならないのです。 どなたかおしえていただけないでしょうか。よろしくお願いいたします。

  • 電離エネルギー、電離電圧の計算について

    基底状態にある水素原子の電離エネルギーを求め、それを電離電圧で表せば約13.6Vになることを示します。 電離エネルギーEn=-(1/n^2)・(me^4/8a^2h^2)からE1=-me^2/8a^2h^2 m=9.11・10^(-31)kg:電子の質量 e=1.60・10^8(-19)C:電子素量 a=0.885F/m:真空での誘電率(イプシロンが出せなかったので代わりにaを使いました…) h=6.63・10^(-34):プランク定数 を代入して計算するとE1=-2.17・10^(-40)Jとなって、 1eV=1.60・10^(-19)Jの関係を使うとE1=-1.36・10^(-21)eVとなりました。 ほしい値の1/10^22の値が出てしまったので困っています。 代入した値の単位がおかしい、計算のやり方自体が間違っているなど、お気づきの点がありましたら教えていただきたいです。お願いします。

  • 畳み込み積分の数値計算方法

    y(t)=∫f(τ)h(t-τ)dτ, 積分区間 0≦τ≦t. この畳み込み積分のfとhの関数形が具体的にわかっているときに、y(t)の値を求めるにはどうすればいいのでしょうか。積分が解析的な式で表される場合はその式にtの値を代入すれば済むと思いますが、解析的な式でかけない場合は数値計算しないといけないと思います。数値計算はどのようにするのでしょうか? ラプラス変換とかフーリエ変換とか使うのでしょうか? 数値積分をするのでしょうか? 常套手段があると思うので、教えて下さい。

  • C言語で質問です。

    C言語で質問です。 行列の計算で12行12列の行列の計算をしなければいけないのですが、 あらかじめ行列に文字や値を代入するときに同じ値の成分を簡単に代入する方法 はないのでしょうか? 例えば 「A[0][5]~A[0][12] はすべて0」「A[1][2]~A[1][8]はすべて1」のように まとめて代入する方法を教えてください。

  • ニュートン法で解が収束しない

    こんにちは。 差分式で表した非線形方程式をニュートン法で解いています。が収束しな解あります。ニュートン法は初期値に依存しているため、初期値を可変的にしてみましたがダメでした。何かいい方法はないでしょうか? 参考になるか分かりませんが、使っているプログラムのニュートン法の計算の一部は以下のようです。 call g(x,f,df) h=f/df x=x-h if(dabs(h/x)<1.d-14) then  return endif

  • 数列が収束するかの証明問題

    数列{a_n}{b_n}を写真のように定める。 (a_n,b_nはすべて正数とする) a_n,b_nが同じ値に収束することをしめしなさいという問題なのですが、 流れとしては、 1) a_n=b_nならば代入すれば、a_(n+1)=b_(n+1) 数学的帰納法(?)で数列{a_n}{b_n}は同じ値に収束する 2) a_n>b_nとして、 b_n=√(b_n*b_n)<√(a_n*b_n)=b_(n+1) a_n=2(a_n)^2/2(a_n)>2a_n*b_n/a_(n)+b_n=a_(n+1) (ここは計算すると、不等号が成り立ちますが、省略します。) またa_(n+1)<b_(n+1) (0<(a_n-b_n)^2から計算すれば出ますので省略します) これをまとめてb_n<a_(n+1)<b_(n+1)<a_nとなる 3) 次にa_n<b_nのときは 上記と同じような計算で b_(n+1)<b_n a(n+1)>a_n a_(n+1)<b_(n+1)がえられる。 2)3)の結果を合わせて a_n>b_nの場合は、a_(n+1)<b_(n+1)に、 a_n<b_nの場合はa_n<a_(n+1)<b_(n+1)<b_n…(1)となる。 nが2以上で(1)が無限に繰り返されていき、a_2<a_3<a_4<a_5<...<b_5<b_4<b_3<b_2が成立するため{a_n}{b_n}はともに有界であり、n=2以上で {a_n}は単調増加、{b_n}は単調減少であるとわかる。よってともに収束する。 数列{a_n}の収束値をA、数列{b_n}の収束値をBとして 与式に代入するとA=Bがえられ、数列{a_n}b_n}は同じ値に収束することがわかる。 といった感じ大まかにはあってますか?

  • 微分がわかりません。

    この頃微分を勉強しはじめた者です。 ある関数において、ある任意の座標x=aの点を取り、aを増加させた点をa+hと置く。 この時 f(a+h)-f(a)/hの式は平均変化率は表すことはわかりました。 _____ hの値を限りなく0に近づけていくと、aとa+hの幅がどんどん狭まって行き、ついには f(a+h)-f(a)/hの式は 微分係数を表す式になる。 (実際にはf'(a)とlimの表記がいりますが・・・) これもわかります。 ___ わからないのはここからです。 実際に微分の計算をする時 最終的にhに0を代入しますよね? このことが疑問なんです。 実際にhは0に限りなく近い数字なんですよね? なのになぜ0を代入するんですか?

専門家に質問してみよう