• ベストアンサー

頭は文系なんですが・・・

高校で数学をとっていなかったんですが(商業科なので)、大学の卒業論文でなぜだかテーマが「数値解析プログラム」になってしましました。情報系の学科に所属してはいますが、数学は大の苦手で、中学以来といってもいいくらいです。どなたか、 1.差分法の概説 2.拡散方程式 3.Lotka-Volterra方程式(生物) について何でもいいので教えてください。お願いします。良い本など、何でもいいです!!

  • botan
  • お礼率59% (25/42)

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

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.8

さてさて、第3弾です。 Lotka-Volterra(L-V)方程式の軌道を描くだけなら、もし f(x) = x - ln(x) の逆関数、あるいは、 F(x) = exp(x) / x の逆関数(F(x) = exp(f(x))だから、Fの逆関数が分かればfの逆関数も分かる。) を求めることができれば、わざわざ差分方程式を使わなくても、保存則Sだけで計算できます。(どうしてか分かりますよね?)また、差分方程式を安定に計算するのにも、Sを使うから、この逆関数の計算が必要です。  既に、よく使われるニュートン法による計算法を示しましたが、xの値が1に近いときには計算が不安定になるという性質を持っていて、二通りの計算法を切り替える必要がありました。ここでは「もう少し遅いけれど、収束が安定している方法」を紹介します。これだと、切り替えが(多分)不要です。  実は、面白いことに、最近同じ問題「F(x) = exp(x) / x の逆関数」が質問としてUPされているんです。(http://oshiete1.goo.ne.jp/kotaeru.php3?q=17648)  以下はその質問の回答として移動中の時間を使って書いたんだけど、UPするまえに質問者がCLOSEしてしまって宙に浮いていたもの。(いやー、こんなに早く日のめを見るとは思わなかった。) 以下の(2)(3)の漸化式を使って計算すれば、F(x)の逆関数x(F)の値が出せます。L-V方程式ではx>0かつF(x)>e についてだけFの逆関数が求められれば十分です。 =========================== (1) まず、F(x)のグラフを描いてみて下さい。表計算ソフト(excelとか)を使うと簡単です。 F(x)=exp(x)/xはx<0 では負, x>0 では正です。x->+0では∞、x->-0では-∞、x->∞では∞、x->-∞では0であることが分かります。F(x)の導関数(xによる微分)は F'(x) = ((x-1)/(x^2))exp(x) だから、F(x)は x=1 だけで極値(極小)を持つことが分かります。この極小値はF(1) = e (e=exp(1)です)。F(x)はx>0では下に凸の関数です。これでF(x)のグラフが描けたことでしょう。  明らかに、F(x)の逆関数 x(F)はF<0およびF>=eの範囲でだけ定義され、e>F>=0の範囲には値がありません。 x(F)はF<0では1価関数、F>=e では2価になります。一方の解はx>=1, もう一方は1>=x>0の範囲にある(x=1の時のみ二つの解が一致)という訳です。 (2) 逆関数は簡単な数式で表せません。まずx>1の方の解だけ考えることにしましょう。 (以下ではFの代わりにyと書いています。)y>eの時の、y = exp(x)/xの逆関数x=G(y) (ただしx>1となる枝)は、以下に示す漸化式x[0], x[1],...の極限です。(ln()は自然対数、exp()は指数関数です。) x[0]= ln(y) x[1]= ln(y) + ln(x[0]) : x[n+1]= ln(y) + ln(x[n]) : 強いて一つの式にまとめると x =G(y)= ln(y)+ln(ln(y)+ln(ln(y)+ln(ln(y)+ ...... と表せる。これが一つの答です。(他にも表し方はある。) (3) では0<x<1におけるx(y)の漸化式は? x[0]=1/y x[n+1]=exp[n]/y です。まとめるとどうなるか、はご自分で。 (4) すぐに信用しちゃいけません。(2),(3)をFに代入してF(G(y))=y になる事を確かめてみてください。またG(F(x))=xもやってみてください(面白いですよ)。数値的には、表計算ソフトでも(1)(2)のやり方でx[0], x[1],...が簡単に計算できますから確かめてみてください。(なお、もっと速い計算法としては「ニュートン法」があります。) (5) では(2)の導出のあらすじを書いときましょう。((3)はそのバリエーションでできます。) x>=1という条件で考えます。y = exp(x)/x をln(y)=x-ln(x)と変形しておきます。 x>1ではxもln(x)も単調増加なのに、ln(y)=x-ln(x)が単調増加である。だから、ln(x)の項よりxの項の方が優位である(増え方が速い)ことが分かります。そこでとりえあえずln(x)の項を無視した第0次近似として x[0]= ln(y) を考えます。誤差(正解との差)は x-x[0] = (ln(y)+ln(x))-x[0] = (ln(y)+ln(x))-ln(y)=ln(x) だけありますから、x[0]にあとln(x)を加えれば正解になるわけです。しかしあいにくxが分からないので、代わりにx[0]を使って誤魔化します。これで第1次近似ができました。 x[1] = ln(y) + ln(x[0]) もちろん「x[0]よりx[1]の方が誤差の絶対値が小さくなる」という事を証明しなくちゃいけませんが、めんどくさいのでパス。さて、ここから数学的帰納法を使います。 n(>0)のときに x[n]= ln(y) + ln(x[n-1]) であるとすると、誤差は x-x[n] = (ln(y)+ln(x))-x[n] =ln(x)-ln(x[n-1]) 従って、ln(x)-ln(x[n-1])をx[n]に加えたいのですが、ln(x)の代わりにln(x[n])で誤魔化して第n+1次近似を作ります。 x[n+1]= x[n]+ln(x[n])-ln(x[n-1]) = ln(y)+ ln(x[n]) (ここでもホントはx[n+1]の方がx[n]よりも正解のxに近いという事を証明しなくちゃいけません。)  このように、誤差をどんどん修正していくように漸化式を構成する訳です。修正のやり方を変えればいろんな漸化式が得られ、ニュートン法もそのひとつです。

botan
質問者

お礼

第1弾~第3弾までまとめてお礼を申し上げます。長いのに丁寧にありがとうございました。うれしくてちょっと泣けてきます。ちょっとまだ難しい!と思うけど、なんとなくやれば出来そうな気分ではあります。いろいろ本も見たけど、どれも良く分からなくて。その辺の難しい参考書よりもずいぶん親切でした!あとは自分でなんとかやってみます。卒論の内容も、まだ最初に書いた程度にしか教えてもらっていなくて、具体的には来週発表されるようです。いや、卒論の締め切りは1月の中旬なんであと1ヶ月もないんですがね。でも、その短い期間で、あまり多くのことは求められないのでは?という同じ研究室のこからのアドバイスもあり、あまり深く突っ込まない様にその子と協定を結びました(←みんなで渡れば恐くない方式?)。 この場を借りて、皆様、こんな質問にご回答いただき誠にありがとうございます。どこまでやれるか分かりませんが、自分で精一杯頑張ってみるつもりです。ここで、出来ないなんて言っててもしょうがないですもんね。ずいぶん参考になりました。なんか、こんな質問のために時間を割いていただいたことが申し訳ない!ありがとうございます。ぜったい、卒業しますんで!!!

その他の回答 (7)

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.7

さてと、もういっちょ行きますか。第2弾。 (やっぱり、高校の微分法の教科書か参考書は用意して、微分法だけでも読んで置いてくださいね。) ●記号がいちいちめんどくさいので、以後 x= n1*、y= n2*、z = t* と書くことにします。またdx/dzというのは dx -- dz という微分の記号のことですよ。これで書くと、無次元化したLotka-Volterra方程式(L-V方程式)は dx/dz = x(1-y) dy/dz = -ay(1-x) ですね。 ●この式を見て(中学生でも)分かるように、 # dx/dz =0となるのはx=0かy=1のときである。 # dy/dz =0となるのはx=1かy=0のときである。 しかし、絶滅しない限りx=0やy=0は起こらないので、 # 「dx/dz =0となるのはy=1のときで、dy/dz =0となるのはx=1のとき。」と言える。 さらに、dy/dx = (dy/dz)/(dx/dz) (高校の教科書より)であるから、 # dy/dx = -ay(1-x)/(x(1-y)) 同様にして、 # dx/dy = -x(1-y)/(ay(1-x)) である。従って、 # dy/dx = 0となるのはx=1かy=0のときである。 # dx/dy = 0となるのはx=0かy=1のときである。 ということが分かる。dy/dx = 0とは相平面の軌道がx軸と平行になる位置、dx/dy = 0とはy軸と平行になる位置である。 ●保存則は # S=(x-ln(x))+(y-ln(y))/a = 一定 証明: Sをzで微分すると、 dS/dz = dx/dz - d(ln(x))/dz + (1/a)dy/dz - (1/a)d(ln(y))/dz ここで d(ln(x))/dz = (1/x) dx/dz であるから、 dS/dz = dx/dz - (1/x) dx/dz + (1/a)dy/dz - (1/(ay))dy/dz = (1- 1/x) dx/dz + (1/a)(1-1/y) dy/dz ここにL-V方程式を代入すると、 dS/dz = (1- 1/x)x(1-y) + (1/a)(1-1/y)(-ay(1-x)) = (x-1)(1-y) - (y-1)(1-x) = 0 これで dS/dz = 0が証明できた。  この保存則を満たすような曲線が、相平面上の軌道、すなわちL-V方程式の解である。(微分方程式の解というのは、数値ではなく、曲線あるいは関数です。)しかし、この保存則は当然の事ながらzを含んでいない。したがって、これだけでは時系列でx,yの変化を描くことはできない。 ●x-ln(x) は(x>0)において、x=1のとき最小値1を取る。(グラフを描いてみると分かります。)従って # S≧(1+1/a)である。 # x=1のときdy/dx = 0となる。このとき、y-ln(y)=a(S-1) である。 この方程式は2つの解 ymax,yminを持つ。グラフを描いてみると分かります。) # y=1のときdx/dy = 0となる。このとき、x-ln(x)=S-1/a である。この方程式は2つの解xmax,xminを持つ。つまり、 # 相平面上の軌道は、y=ymin, y=ymax, x=xmin, x=xmaxの4本の直線で作られる長方形に内接している。長方形との接点は(x,y) = (1,ymin), (1,ymax), (xmin,1),(xmax,1)の4点である。 ●保存則を使った計算 dx/dz = x(1-y) dy/dz = -ay(1-x) を単純に差分化して計算すると、(x*, y*を次の時刻における値として) Δx = x(1-y)Δz、x* = x+Δx Δy = -ay(1-x)Δz、y* = y+Δy であるが、通常、誤差が累積して渦巻きになってしまう。(多分、やってみると分かります。)そこで、初期値を決めたときに、あらかじめS=(x-ln(x))+(y-ln(y))/aを計算しておく。以後、このSをずっと使って、 (1) Δx = x(1-y)Δz、x* = x+Δx はそのまま使い、y* は、保存則を使って計算する。 (2) Δy = -ay(1-x)Δz、y* = y+Δy はそのまま使い、x* は、保存則を使って計算する。 という二つの方法を使うと良い。 まず、(2) の場合の計算法を示す。 step1) Δy = -ay(1-x)Δz を使って、次のyの値を計算し、これをy*とする。 step2) S=(x*-ln(x*))+(y*-ln(y*))/a を満たすようなx*を求めたい。すなわち、C = (y*-ln(y*))/a - S とおき、関数f(x)を f(x) = (x-ln(x)) +C と定義すると、f(x*) = 0 になるx*を求めたい。そこで、この方程式をNewton法で解く。まずf(x)をxで微分した物をf'(x)と書くと、 f'(x) = d(f(x))/dx = 1 - (1/x) である。 Newton法step-1) Δx = x(1-y)Δzを使って、次のxの値を計算し、これをx0とする。 Newton法step-2) x1 = x0 - f(x0)/f'(x0), x2=x1-f(x1)/f'(x1),....を計算すると、数回~10回程度で収束する。これをx*とする。 (1)の場合も、同様のやり方でy*を計算できる。(導出できますか?) # xが1に近いときには、(1)の方法を使い、yが1に近い時には(2)の方法を使うと良い。 なぜなら、xが1に近いとf'(x)がほとんど0になってしまうので、分母がほとんど0のわり算を行うことになり、f(x)/f'(x)がとんでもなく大きくなる。 この方法を使うと、渦巻きにならないで周期軌道が描ける。 ●Newton法を利用して、ymax,ymin,xmax,xminを求めることができる。 ●ここまで来れば、初期値をいろいろ変えたり(と言っても、どちらか一方を1にして、他方だけ動かせばよい。)aを変えたりして、色々な軌道を描けるようになりました。また軌道を描く前に、軌道に外接する長方形が分かるようになった訳です。 ●Newton法の意味についてはまた別途質問してね。

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.6

と、言うわけで、第一弾。(分からないところは多分TCMさんが教えてくれますよね。) ●Lotka-Volterraのモデル アドリア海の魚の発生数の変動を説明するために考案されたモデル。現象を非常に単純化しているが、個体数変化曲線の複雑な挙動をある程度説明する。 餌になる魚1と、それを捕食する魚2の2種類を考える。個体数をn1, n2とする。 d(n1)/dt = (単位時間当たりの魚1の増殖)- (単位時間当たりの魚1の死滅数) である。 (単位時間当たりの魚1の増殖)= (α1) n1 とモデル化する。これだけだと、魚1は指数関数的に増えることになる。(n1 = A exp(α1 n1)が解だから。)(α1)は増殖率。 (単位時間当たりの魚1の死滅数)= αn1 n2 とする。つまり、魚1と魚2の数の積が、それらが出会って捕食が行われる頻度を近似すると考える。魚1が寿命で死ぬのは考慮しない。 実際には、豊富な餌があって、ある程度以下のn1であれば飢え死にする心配はなく、また喰われずに寿命を全うできるほど生き延びることもない、ということだと思えばよい。 次に、魚2 d(n2)/dt = (単位時間当たりの魚2の増殖)- (単位時間当たりの魚2の死滅数) 魚2は魚1がいないと暮らしていけない。喰った内の一部の物質なりエネルギーなりが増殖に使われるのだから、どれだけ魚1を喰ったか、によって増殖数が決まる。従って、魚2の増殖は(単位時間当たりの魚1の死滅数)に比例していると考えられる。 (単位時間当たりの魚2の増殖)=βn1 n2 魚2は一定の比率で死ぬ。個体数(population)当たりの死亡率を2(κ2)とすると (単位時間当たりの魚2の死滅数)= 2(κ2)n2 以上から、 d(n1)/dt = (α1)(n1) - α(n1)(n2) d(n2)/dt =β(n1)(n2) - 2(κ2)(n2) これがLotka-Volterra方程式。(α1),α,β,(κ2)という4個の定数、t,(n1),(n2)という3個の変数を含んでいる連立常微分方程式である。 ●この方程式を無次元化(計測する単位に依らない形に)する。 新しい変数(n1*)、(n2*)、(t*)と、新しい定数aを使って (n1) = 2(κ2)(n1*) /β (n2) = (α1)(n2*)/α t = (t*)/(α1) とおくと、無次元化したLotka-Volterra方程式は d(n1*)/d(t*) = (n1*) - (n1*)(n2*) d(n2*)/d(t*) =-a {(n2*) - (n1*)(n2*)} である。 ●この方程式において、保存則 ((n1*)-ln(n1*))+((n2*)-ln(n2*))/a = 一定 が成り立つ。 ●この方程式の定常状態 (d(n1*)/d(t*) もd(n2*)/d(t*)もゼロ)は (n1*) = 1 (n2*) = 1 である。個体数がこの状態にあれば、以後、個体数の変化はない。  しかしこの定常状態が安定かどうかは別問題。つまり、偶然に個体数に僅かな変動が生じたとするとき、自然に定常状態に戻るのかどうか、が最も興味ある問題である。 ●n1*とn2*をそれぞれ横軸、縦軸にとったグラフを描く。これを「n1*-n2*相平面上の軌道」という。 d(n1*)/d(t*) = (n1*) - (n1*)(n2*) d(n2*)/d(t*) =-a {(n2*) - (n1*)(n2*)} を差分方程式にする、つまり時刻k(Δt*)におけるn1*を(n1*)[k]、n2*も同様に表し、 d(n1*)を(Δn1*)[k], d(n2*)を(Δn2*)[k], d(t*)を(Δt*)で置き換えてやると、 (Δn1*)[k] = (Δt*){(n1*)[k] - (n1*)[k] (n2*)[k]} (Δn2*)[k] = -a(Δt*) {(n2*)[k] - (n1*)[k] (n2*)[k]} (n1*)[k+1] = (n1*)[k]+(Δn1*)[k] (n2*)[k+1] = (n2*)[k]+(Δn2*)[k] となる。これをk=0,1,2,....と計算すればよい。 パラメータaはシステム(系)の条件を決めるものである。これは計算の初めに決めて置かねばならない。 (n1*)[0]と(n2*)[0]は初期条件あるいは初期値と言い、適当に与えなくてはならない。 Δt*は十分小さくとるが、いろいろ試して適当な大きさを決めなくてはならない。 また、数値の精度を変えてみる(多倍長計算。doubleを使うかsingleをつかうか。FORTRANならREAL*4かREAL*8か)ことによって、計算の結果があまり変わらないようにしないと、何をやっているのか分からんことになる。 この計算自体はEXCEL位で十分である。せいぜいVBで良い。 計算を続けて、どんどん相平面上の軌道を描いていくと、パラメータと初期条件が適当なら、閉軌道になるであろう。これが周期解である。 ●もうひとつ経時変化のグラフを描く。こんどは横軸がt*で縦軸が(n1*)、(n2*)である。個体数が時間と共に変わる様子が描かれる。 ●周期解が得られたら、わざと(n1*)か(n2*)を少し変化させてみる。(パラメータは同じにして、初期値を少し変えればよい。)それでもほとんど同じ周期軌道を描くなら、この周期解は「安定」である。さもなくば不安定である。 ●この方程式の軌道は安定であるが、漸近安定(asymptotic orbital stability)ではない。つまり、二つの(相平面上で)近接した軌道上の、互いに近接した2点を初期値としてそれぞれ計算をしてみると、経時変化のグラフではどんどん波の山の位置がずれていってしまう。 ●系のパラメータが変化すると、軌道が大きく変化することがある。たとえば、魚1の餌が不足して、増殖率(α1)が低下した、とするとどうなるか。 まあ、こういった所がシミュレーションである。 さて、次の数学的ステップは、ポアンカレ-ベンディクソンの定理だとか、リヤプノフ指数だとかを使って、系の安定性を数学的に解析することなんだけど.....どうしようか。というのも、これを追っていっても、遙か昔に確立された理論をなぞっていくだけのことになってしまう。大変な努力がいる割に、分かっている人には答は自明である。 むしろ、卒論としては、一応研究なんだから、 生物学が得意なら、系をもうちょっとリアルにしてみるというようないたずらの方が面白いだろう。 ●大昔は漠然と、微分方程式を数値計算のために近似するのが差分方程式(いわばまがいもの)だ、と思われていた。ところが実は、差分方程式は、微分方程式では説明できないようなモデルを表現するということが認識されたのも、生物学が最初だったように思う。  繁殖が年1回しか起こらないような動物の捕食関係においては、差分方程式 (Δn1) = (α1)(n1)[k] - α(n1)[k] (n2)[k] (Δn2) =β(n1)[k](n2)[k] - 2(κ2)(n2)[k] でないと、本当の姿が見えてこない。Δt=1年である。微分方程式で表した場合には、n1,n2の個体数の変化が他方の個体数に直ちに反映するが、1年単位の繁殖を考えると、大繁殖や絶滅が簡単に起こることが分かる。 ●(単位時間当たりの増殖)、 (単位時間当たり死滅)を単純に個体数の積で表していていいのか?ここをもっと精密化したらどんな現象が見えてくるだろうか?確率の知識がないと旨いモデルが作れないかもしれないが、面白いバリエーションである。 ●拡散方程式がどう繋がるのか、というのは多分、個体数が空間的にむらになったとき、そのむらが解消していくプロセスを表現するモデル、ということだと思われる。 この発想で行くと、実空間の中に個体がいっぱいいて、その場所場所で捕食が起こり、個体数にむらが発生する、というような、シミュレーションの話(つまらないゲームのようなものだ。)になる。こっちをやれと言われているのだろうか? ●やっぱり、もう少し、卒論のテーマの詳細をUPして貰わないと....

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.5

補足を見ました。 さぼってた、なんて言ってごめんね。  近頃、大学は学生の学力低下を問題視していますが、教える方のレベルもpoorなのか...でも勉強は自分でするもんです。 こうなったら、「教えてgoo」をとことん利用しましょう。 「何でもいいので教えて!」と言われたら、その道の大家でもないかぎりビビリますよ。もそっと、卒論の中身を具体的にUPして下されば、わらわらと回答が集まるやも知れません。 ....講義になんか全然出なかったstomachmanでした。

botan
質問者

お礼

なんやかんやといろいろ書きましたが、ほんと、ごめんなさいね。私は卒論のことで少し(いや、かなり)イライラしてたみたいです。でも、なにもしなきゃ何も進まないですから・・・。私も、甘えて「教えてgoo」に頼ってきたのですから。甘えてちゃいかんなーと。自分でするしかないなーと思います。 頑張りますね。

  • TCM
  • ベストアンサー率44% (81/181)
回答No.4

 いやあ皆さん、手厳しい(>.<) とりあえず、botanさんの努力を応援してあげましょうよ。ちょっと説明しますが、目をつぶっておいてくださいね。まずは拡散方程式から。 2.拡散方程式  拡散方程式は熱伝導方程式ともいい、定常状態の場合、   ∂φ/∂t=p∇2φ という形をした偏微分方程式です。針金の熱伝導とかの解析で説明されることもありますね。∇2の2は、ここでは表示できませんが、本当は上付きで空間の2階偏微分演算子です。φが求めたい変数で、pは拡散の程度を表す係数です。空間をx軸の1次元とすると、   ∂φ/∂t=p(∂2φ/∂x2) となります。やはり、ここでも2は本当は上付きです。他にも説明したいことはありますが、とりあえずここまで。 1.差分法  差分法というのは、微分方程式の微分を差分に置換することによって元の微分方程式を解く手法です。上式ならば、まず図1のように間隔d(デルタ)xの格子(1次元なので格子とは言えませんが)を考え、節点iの時刻ndtでの値φiをφ(i,n)とすると、  {φ(i,n+1)-φ(i,n)}/dt=p{φ(i+1,n)-2φ(i,n)+φ(i-1,n)}/dx^2                     d:デルタ と離散化します。そして、全ての節点についてこの方程式を作り、系全体の連立1次方程式を組み立て、節点1と節点mの値や時刻ゼロでの各節点の値など境界条件を与えて解きます。そして時刻をdtだけ進めながら、所望の解を得るまで同じ手順を繰り返します。  1--2--3--4・・・i--i+1・・・m-1--m  |dx|       図1.1次元の差分格子  しかし実際には、差分スキームの安定性、適合性、収束性などの検討をしたり、離散化を工夫したり、解の妥当性の検証など気をつけなければいけないことが多々あります。偏微分や行列がわからないとかなり苦しい戦いになるでしょう。ひょっとすると先輩の残したプログラムがあって、それを改良したり検証を行ったりという研究テーマなのかもしれませんね。で、それはLotka-Volterraモデルを使った生態系シミュレーションの研究だったりするのでしょう。botanさんにはがんばってもらうしかないですが、確かに数学がネックになりそうですね。  差分法の参考書は多々ありますが、「数値計算プログラミング」森正武(岩波書店)が比較的簡単かもしれません。ただ言語がFORTRANなので、まずは大きな書店で自分に合った本を探すことをお勧めします。 追記:Lotka-Volterraモデルについてはよく知りませんが、方程式は拡散方程式に付加項がついた形をしていますね。

botan
質問者

お礼

ありがとうございます。たしかに数学の知識はないので苦しいですがずいぶん参考になりました。「数値計算プログラミング」は早速手に入れました。これは、かなり使えそうです。ありがとうございます。頑張ります。

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

deeppurple14さんてば、人聞きの悪い(^o^) 参考書だけ教えてパニックさせるんじゃ可哀想だってんで、凄くサービスしたつもりなんですけど。  実際、Lotka-Volterra方程式のキモは何か、なんて、stomachmanだってまだ勉強中てな所ですから。

botan
質問者

お礼

お礼というよりこれもまた補足なんですが・・・。すいません。 もちろん、「大学で情報処理やりましたー!」なんて口が裂けても言えません。言いませんのでご安心を。就職活動も、この程度で情報学科とか、サギやろ。と思ったので表に出しては活動してきませんでした。重々わかっております。内定はもらえなかったので、卒論から開放されたら花嫁修業でもするか、ちゃんと情報が学べる専門学校に行くかします。 今、自分が置かれている状況は、人生勉強と思って、乗り越えます。 的確な意見、ありがとうございました。

botan
質問者

補足

補足の補足ですが、一応、学校はサボらずに行ってましたよ。ただ大学の講義でも数学分野が無かっただけ。情報とは言っても全単位数の6分の1くらいしか情報の講義がなくてあとは理科と教養くらいでした。一応、数学科が別にあるので講義はあるんですが、「所属してないんだから人数調整的に困るんだよね。単位にもならないよ。」と教務の方もいっておられるので取りませんでした。 補足の補足ですが、愚痴っぽくなってしまいましたね。すいません。

回答No.2

stomachmanさんがかなり冷たく突き放しておられますが、私も同じような考えです。 今のテーマをなんとかしようと考えるより、テーマを変えてもらった方が良いと思います。 数値解析のお薦めの本はいろいろ知っています。でも、それらを読んで理解するには、基礎となる数学(特に解析学)をかなり高いレベルでマスターしていないと厳しいです。しかも、差分の方は比較的初歩的ですが、拡散方程式はいろいろありますが簡単に理解できるものではないです。 しかも大学の解析学を勉強するには高校の微積は完璧に理解していないと無理です。 結論として、これは不可能です。もし抜け出せないのなら、stomachmanさんの言うようにごまかしで切り抜けるというのはできるかもしれない。 ぜったいテーマ変えた方が良いと思いますが。

botan
質問者

お礼

ありがとうございます。でも、テーマは教官が決定するので、変えられません。しかも、わたしの所属は情報ですが専攻は生物なので今まで数学は必要最低限しかやってないんです。大学のせいにするつもりはないですが、数学科が別にあるので理科のほうでは普通は数値解析はやらないと思ってたんですが・・。ただ、教官は数学大好きなようで・・・。もちろん交渉はしたんですが、ダメでした。とにかく、今のテーマで行くしかないので何とかします!!

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

困りましたねえ。もうちょっと質問者の置かれた状況に関する補足をお願いします。  本来なら文系の頭ならではのテーマを自分で選ぶべきでした。  いつまでに仕上げるのか、が一番気になります。来春卒業予定というのなら、今までさぼってたんだからしょうがない。大急ぎで、もっとずっと易しい問題に切り替えるべきです。もし本当に「数値解析プログラム」というだけなら、何も積分方程式なんか相手にしなくても、数学自体は中学レベルでも理解できてしかも実用性もある、というテーマだってあるんじゃないでしょうか。  やっぱり微分方程式・積分方程式の数値解析でなきゃだめだ、という事だとすると... 「数学が苦手」と諦めているようでは、いきなり専門書を読んでも5ページ目までに挫折するのは目に見えています。まずは、微分法・積分法の一番基礎の概念だけでも把握しないとダメでしょう。「文章題」:つまり現象のモデルを微分方程式や積分方程式で表す。逆に数式を文章に戻す、という技術は最低限必要です。偏微分の概念が必要ですね。高校数学でやる紙の上での微積分の計算の練習はこの際省くしかないでしょうが、結局、高校数学の教科書が一番早道かも知れません。  どうしても今すぐに、というのなら、最後の手段として:どこかで出来合いのプログラムを探してきて、適当な境界条件を入れていろいろ計算してみました。幾つかのプログラムの性能を比較してみました。数値計算の誤差を検討するために、同じ計算を多倍長計算の精度を変えて行って、どこまで一致するかを確認しました。誤差のグラフを描いてみました。で勘弁して貰うしかなさそう。これだけでも徹夜の連続になるでしょう。(でもこの程度で「情報系で数値解析プログラムを専攻しました」などとは絶対に言って欲しくないです。計算の中身が理解できていない以上、内容的には小学生の夏休みの自由研究と幾らも変わらないレベルですから。)

botan
質問者

補足

すいません、ありがとうございます。自分のおかれた状況なのですが・・・じつはお恥ずかしい話なんです。これをお話するには高校や大学の話もしなくてはなりません。長文ですが。 私は最初にお話しているように商業科出身です。そこでは情報処理を学んで、それについてのみ、成績は悪くはなかったと思います。それで学校の推薦で今、国立大の情報系の学科に所属しています。ただ、今の大学に対して知識が欠しすぎました。中身を空けてみれば情報とは名ばかりで、理科教諭になるための勉強ばかりでした。そこでまだ得意だった生物専攻に所属されました。その所属というのも学生同志で話し合い、物・化・生・地で均等になるようにということだったので高校で化学をやっていた人でも話し合いで押されて泣く泣くやったこともない所へ所属されてしまい、辞めていった人も多くいます。だから、生物が好きだった私にとって卒論の研究室の配属も生物で良かったのでしょう。だけど、情報系の学校に行って、生物って・・・と疑問を持ちました。そこで、所属は生物で研究室のみ情報という選択をしました(専攻は理科の4科目のみで卒論だけ4科目プラス情報、教育の6科目)。その選択を迫られたのはまだ右も左も分かっていない一年生のころでした。 本格的にゼミが始まったのは今年の4月からです。最初は生物分野でした。もちろん他の専攻の人もいるので化学などもやりましたが。卒論のテーマは、先生がすでに決められていました。生物分野のコンピュータシュミレーションでした。ゼミが進んでいくに連れて、理科という分野から離れていったように思います。そして、具体的な内容(数学)を発表されたのがつい最近(先週)のことです。もちろん教官の所には、自分が高校で数学をやっていなかったことは話しました。推薦入試の時の面接官でもあったその教官は分かってはいたようですが・・・。それからはゼミで教官から無視されてしまい、質問すると、あら、いたの?ってな具合です。だけど、だからといって負けたくはないんです。ちゃんと、言われた通りに提出したいと思っています。提出は来年の1月です。せっぱ詰まってますが、どうにかもがいてみます。みなさんご協力ありがとうございました。 ちなみに、大学では私の所属する学科の(卒論配属などの)問題点が大きくなってきたので、2年前から情報学科は廃止になっています。10年くらいしか持ちませんでした。教官もあと2,3年で用なしということでせっぱ詰まっているようです。

関連するQ&A

  • 閾値付き拡散方程式

    n次元(1次元限定でも可)拡散方程式 ∂u/∂t = ∇^2 u において、u<σとなったら、u=0という条件をつけます。 0. この方程式は数学的に意味があるでしょうか?   つまり、デルタ関数とか弱解といった分野的に、という意味です。 1. この方程式は解析的に解けるでしょうか? 2. 各種の数値解法を適用した場合、   数値解は格子のスケールに依存しないでしょうか?

  • 差分法とオイラー法の違いについて

    最近微分方程式の数値解析について学びだした者です。 微分方程式の数値解法として差分法とオイラー法があると思うのですが、この2つの違いや互いの位置づけはどうなっているのでしょうか? また、差分法には風上法などがありますが、これらとオイラー法の位置づけについても教えていただきたいです。 できればこれら近辺の全体的な体系について教えていただけるとうれしいです。よろしくお願いします。

  • 数値解析の手法(差分法)について

    現在、とある2元の1階偏微分方程式(解はu,vでそれぞれ右と左に進行する波)を数値解析によって解こうと考えています。 数値解析の手段として、差分法がよく用いられると思いますが、 現在、私は、場所に関してはuは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って解いています。 ネットでは場所に関しては中心差分、時間に関してはルンゲ=クッタやリープフロッグなどが 使われていることが多く、私もこの2つを用いて解いてみました。 偏微分方程式には線形項が含まれていたため、 線形問題に対する制約であるΔt/Δx << 1は最低満たすように刻み幅をいろいろ取り、 計算時間も辞さず計算機を動かしてみましたが、 ノイズが消えず、解析解に限りなく近づくには至りませんでした。。 Δt/Δx=0.0001なども試したのですが・・・ そこで、諦めて違う差分法を試し、 場所に関して、uは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って見たところ、 Δt/Δx=0.01程度で解析解に近い、なかなか精度の良い数値解を得ることが出来ました。 2次の差分では上手くいかず、1次の差分だとわりかし上手くいく・・・ 精度的には中心差分やルンゲ=クッタなどの方がいいと思うのですが・・ 正直不思議でなりませんでした。。。 最初に試した差分法のコードミスかと思い、何回もコードを確認し直しましたが、 やはり解析解に近づくには至りませんでした。 こんなことってあるのでしょうか?? 差分法でも場合によって使い分ける必要があるということでしょうか・・? その場合分けするときの指標など、知っておられる方、教えて頂けると助かります。 問題によって

  • 数値解析 微分方程式

    数値解析における常微分方程式を解くために用いる手法についてです。 オイラー公式、ホルン公式、ルンゲクッタ、ルンゲクッタ4次、有限差分法の関係 違いがよくわからなのでどなたか教えてください また常微分方程式を有限差分で解くとなったとき、結局オイラー公式などを使うと言う認識で間違いないでしょうか?それとも有限差分だけで解けるのでしょうか

  • 流体解析(ナビエ・ストークスでベナール対流の非定常解析)について

    連続の式,Navier-Storksとエネルギー方程式をHSMAC法にてベナール対流の非定常解析をしていますが、困っています。二次元、縦横比8:1の長方形領域にて、左の加熱面付近が”振動”しているようなのです。これが原因で非対称となり、時間が発展すると渦が奇数個になってしまいます。離散化はEular陽解法、移流項は一次風上差分、拡散項は中心差分を行っています。2次元の移流拡散方程式(移流項は中心差分)の安定条件は満たすようにDTを決めています。どうればよいでしょうか。

  • 解析的に解くと言えば、一般解や厳密解を求めることでしょうか。

    解析的に解くと言えば、一般解や厳密解を求めることでしょうか。 FEMのような数値解析は、解析的に解くとは言わないんでしょうか。 英語で論文を書いているのですが、 FEMによる方法を numerical analytical methodと書こうと思ってますが、 方程式の一般解を導いた方法は英語で何と書けばよいのでしょうか。 単に,analytical method でよいのでしょうか? analytical method と書いたら、numerical analytical methodのことも 含みますか? お恥ずかしいですが、こんな低レベルで論文を書こうとしていますww よろしくお願いいたします。

  • 解析的の意味?

    数学の用語に関する質問です. 方程式を解く際に, 「解析的に解けないので数値的に解く」 場合がよくありますが, なぜ 「解析的」 と呼ぶのでしょうか? 「代数的」 の方がしっくりくるのですが. 複素関数の分野でしたら解析的は微分可能といいますし,場合によって読み手が解釈を変更する必要があるのでしょうか?

  • 統計解析の勉強で使うデータ

    大学3年で、数学を勉強しています。 今はルベーグ積分や微分方程式を勉強していますが、統計にも興味があります。 本屋さんで統計のコーナーを見ると、数学に近いけど、若干違うのかな、という配列人なっている感じがします。 統計学って、数学科よりも工学系の学科や経済学部で勉強した方がいいのでしょうか? そもそも、統計って、それを分類したり解析したりするもので、教科書にのっているものは、数値の個数が少なかったり、当たり前の子ことを調べるためのデータのような気がします。どういうデータを使って勉強したらいいのでしょうか。

  • 拡散方程式の数値計算(有限差分法)による解き方

    下記の拡散方程式を数値計算(有限差分法)で解き方について教えてください。 拡散方程式 D∂^2C(x,y,t)/∂x^2+u∂C(x,y,t)/∂x=∂C(x,y,t)/∂t 境界条件 D∂C(x,y,t)/∂x=(K/β-u)×C(x,y,t)-KC'(y,t) at x=0 初期条件 C(x,y,0)=Co at t=0 質量保存則 ∂C'(y,t)/∂y=4/vd(K/β×C(0,y,t)-KC'(y,t) ) ---------------------------------------------------------- また、可能であれば、有限差分法以外にも数値解法(有限要素法、有限体積法など)があると思いますが、拡散方程式を解く場合、どの解法が一般的に適しているのか教えてください! よろしくお願い申し上げます。

  • 数学科の人は計算が苦手って本当ですか?

    数学科の人は1+1の証明とかそういうことを大学で勉強しているから計算が苦手ということを聞きました。フーリエ解析や偏微分方程式などの計算ができないのではないか?実は物理学科の学生のほうが計算はできるんだと物理学科の学生が言ってました。実際はどうなんでしょうか?