- ベストアンサー
配列が定義されていない??
今日1日を費やして、fortranの勉強をしました。 まだまだ勉強始めたばかりで、何かと苦労しています。 理解しようと、本にPCとにらめっこしています。 本日の問題は・・以下です。 問題と思われる箇所載せておきます。 subroutine Uno(ya,Mc,nablaMc, & maxX,maxY,numX,numY,dt,dx,dy, & v,v_P,nablaya) implicit real*8 (a-h,o-z) * real*8 v(0:maxX,0:maxY),v_P(0:maxX,0:maxY) * CDK write(6,1000) dx,dy,dt * ic=0 1 continue ic=ic+1 * do ix=1,numX-1 do iy=1,numY-1 C---- nablayaを定義------------------------------------ ★ nablaya=v(ix,iy+1)-v(ix,iy-1))/*dy C ------------------------------------------------------ A=v(ix,iy)*ya+nablaya*v(ix,iy) B=v(ix,iy)*ya C------------------------------------------------------- if (iy.eq.1) then ai=2.0d0*dt*B*(1.0d0/(dx*dx)+1.0d0/(dy*dy) bi=dt*(A/(4.0d0*dy)+B/(2.0d0*dy*dy)) else ai=2.0d0*dt*B+A/(dy*dy) bi=A/(4.0d0*dy)+B/(2.0d0*dy*dy) ・・ といった感じのルーチンを書きました。 そしたら、 『Error: The shapes of the array expressions do not conform. [NABLAYA]』と指摘され、その場所が上記★の行でした。 何がいけないのでしょうか!? 教えて下さい。
- BOY12345
- お礼率12% (20/162)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> ★ nablaya=v(ix,iy+1)-v(ix,iy-1))/*dy 最後の dy の直前にある /* は、何を意味しているのでしょうか? 割り算をしたいのですか?掛け算をしたいのですか? ところで、ここは C/C++ カテゴリーであることはご存じですか? Fortran についてのご質問をするための適切な場所は他にあります。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2126/6288)
> Cとfortranを混ぜて使っているので、どちらでもよいかなと思い・・ 混ぜて使っているって、今回の件はC言語のかけらもありませんよね。 > frotranの質問するのにいいとこあったら教えて下さい。 「その他(プログラミング)」のカテゴリーです。 以前(って、たった5日前ですけど)、「fortranエラー」というタイトルで 質問されていたではないですか。お忘れになりましたか?
- kameDK
- ベストアンサー率22% (17/75)
fortranに関しては初心者ですが気付いたことを少し。。 ★nablaya=v(ix,iy+1)-v(ix,iy-1))/*dy の部分ですが2つ目のv()の後の括弧が一つ多いと思います。 なおるか分かりませんが参考程度に・・・^^;
補足
あっ、本当ですね!! ありがとうございます。 でも、問題は解決できませんでした。 引き続き、お待ちしております。
関連するQ&A
- fortran 渡す値について
fortranの質問です。 integer ix,iy,maxX,maxY で宣言しており、 do istep=1,100 call B_DIF(☆) do ix=0,maxX do iy=0,maxY B_M(ix,iy)=B_P(ix,iy) end do end do end do のルーチンで悩んでいます。 B_DIFは B_P(ix,iy)=K(係数のことです)*B_M(ix,iy)+B_M(ix+1,iy)-B_M(ix-1,iy) といった感じのサブルーチンです。functionで表していないのは、ややこしい関数があるので、サブルーチンでまとめてメインに返すという手法をとっています。ご了承下さい。 ここで、B_P(☆)の☆には何を入れると適切に動くと思いますか? ☆に データix,iyを入れるだけで意とするB_P(ix,iy)がでてくるのか、 それとも、ix,iy,B_Mのデータを受け渡すべきか・・ 一番の問題は、 B_P(ix,iy)=K(係数のことです)*B_M(ix,iy)+B_M(ix+1,iy)-B_M(ix-1,iy) にix,iyを送ったとき、B_M(ix+1,iy)などが意図する値を吐いてくれるのかということです。 ix=1,iy=2でB_DIFのルーチンにおいて、 B_P(1,2)=K(係数のことです)*B_M(1,2)+B_M(2,2)-B_M(0,2) とパソコンが読み取ってくれるのか疑問です。 ちなみに、B_M(1,2)、B_M(2,2)、B_M(0,2)は既知の値です。 頭がこんがらがって、どうすべきかわかりません。 2次元配列の添字の継承・・ よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- 解析学の質問です
次のように問題を解いてみました。 間違いがあれば、正しい解き方を教えてください。 【問題】 1. x=a*cost, y=b*sint のとき、dy/dx , d^2*y/dx^2 を求めよ 【解答】 dx/dt = -a*sint, dy/dt = b*cost となるので、 dy/dx = b*cost/(-a*sint) = -b/a * cost/sint = -b/a * 1/tant = -b/(a*tant) d^2y/dx^2 は、(d/dx)*(dy/dx)なので、(d/dt)*(dy/dx)*(dt/dx)とおけるから、 (与式) = d/dx{(-b/a)*(1/tant)}*(1/-a*sint)である。 よって、-(b/a)*(1/sec^2*t)*(1/-a*sint)= b/(a^2*sint*sec^2t)=b/{a^2*sint*(1/cos^2t)} = b*cos^2t/a^2*sint = (b/a^2)*(cost/sint)*(cost) = (b/a^2)*tant*cost 以上、よろしくお願いします。
- ベストアンサー
- 数学・算数
- 三角関数の微分について
よろしくお願いします。 問題【asin^4t, y=b*(1-cost)のとき、dy/dx, d^2y/dx^2 を求めよ。】 まず、a と b を、t で微分しました。 そこから、dy/dx = -(b*cos^2t)/(a*sin^2t) を導きました。 これが合っているかを、教えてください。 次に、d^2y/dx^2 を、(d/dt)*(dy/dx)*(dt/dx)と考えて解こうとしました。 ところが、{(a*sin^4t + b*cos^4t)/(a^2*sin^4t)}*1/4a*sin^3*cost という、奇妙な結果になってしまいました。 これは間違いだと思います。 ですので、解答と解説をお願いしたいと思います。 以上、よろしくお願いします。
- ベストアンサー
- 数学・算数
- 微分の計算順番について
dx/dt = 1-cost dy/dt = sint dy/dx = (dy/dt)/(dx/dt) = sint/(1-cost) の時に (d^2)y/dx^2 を求めたいのですが、 (d^2)y/dx^2 = (d/dx)(dy/dx) = (dt/dx)(d/dt)(dy/dx) = {1/(1-cost)}(d/dt){sint/(1-cost)} と計算していった時と、 (d^2)y/dx^2 = (d/dx)(dy/dx) = (d/dt)(dt/dx)(dy/dx) = (d/dt){1/(1-cost)}{sint/(1-cost)} = (d/dt){sint/(1-cost)^2} と計算していった場合で答えが違いました。 tで微分する順番が関係あるのでしょうか。 よろしくお願い致します。
- ベストアンサー
- 数学・算数
- http://okwave.jp/qa/q5965948.html で
http://okwave.jp/qa/q5965948.html でした質問の回答に関する質問です (私があまりに多くの質問をしてしまったので閉じることにしました)。 次の立体V = {(x,y,z) | x^2 + y^2 + z^2 <= a^2, x^2 + y^2 <= b^2} (a>b>0)の体積|V|を求めよ、 という問題で答えは |V| = 2*∫∫_[x^2 + y^2 <= b^2] √(a^2 - x^2 - y^2) dx dy = (4π/3)(a^3 - √{(a^2 - b^2)^3}). となっています。 …これをANo.2さんが x=rcosθ, y=rsinθ ( 0≦r≦b ) の置換で、 V=8∫[0,π/2]dθ∫[0,b]√(a^2-r^2)rdr さらに、a^2-r^2=t とおけば、 V=8∫[0,π/2]dθ∫[a^2,a^2-b^2]t^(1/2)(-1/2)dt ... [1] =4∫[0,π/2]dθ∫[a^2-b^2,a^2]t^(1/2)dt ... [2] これを計算して、V= (4π/3)(a^3 - √{(a^2 - b^2)^3}) …と解いてくださったのですが、 積分の定義域 ∫[a^2,a^2-b^2] をどう求めたのかが分かりません。 a^2 と a^2-b^2 を求めた式を教えてください。 それと…あれ?たった今、気付いたのですが、 [1]では∫[a^2,a^2-b^2]になっているのですが、 [2]では∫[a^2-b^2,a^2]になっていますよね? どちらが正しいのでしょうか?
- ベストアンサー
- 数学・算数
- 複素関数論
以下の証明ができません。 解答方針だけでもいいので、どなたか教えてください。 u1=u(x1(t),y1(t)) v1=v(x1(t),y1(t)) u2=u(x2(t),y2(t)) v2=v(x2(t),y2(t)) とし、 cosθ={(dx1/dt*dx2/d2)+(dy1/dt*dy2/dt)}/√[{(dx1/dt)^2+(dy1/dt)^2}+{(dx2/dt)^2+(dy2/dt)^2}] cosθ'={(du1/dt*du2/d2)+(dv1/dt*dv2/dt)}/√[{(du1/dt)^2+(dv1/dt)^2}+{(du2/dt)^2+(dv2/dt)^2}] とすると、u(x,y)とv(x,y)がコーシーリーマンの関係式を満たす時 |cosθ|=|cosθ'| となることを示せ。
- ベストアンサー
- 数学・算数
- パラメーター表示による微分の問題
問題:曲線C:x=cos(t)+tsin(t)、y=sin(t)-tcos(t)に対して、 (1) dy/dxをtの式で表せ。 (2) d^2y/dx^2をtの式で表せ。 (1)はわかるのですが(2)でわからないところがあります。 多分正答はdx/dt、dy/dtを求めたあとdy/dxを求め d^2y/dx^2=d/dt(dy/dx)(dt/dx)という形で解くのだとおもいますが、 d^2y/dt^2を求めたあと d^2y/dx^2=(d^2y/dt^2)(dt/dx)^2と変形して解くと違う解がでてきます。 どうして違う解がでてくろのでしょうか? (dx)^2≠dx^2だからですか? でも d^2y/dx^2=d/dx(dy/dx)という変形ができるから、(dx)^2=dx^2だと思います。 だれかアドバイスください。 後、友達が ∫d(dy/dx)^2=∫(dy/dx)d(dy/dx)=(1/2)(dy/dx)^2+C という積分をしていたのですが、こういう積分もありなんですか? (Cは積分定数)
- ベストアンサー
- 数学・算数
補足
Cとfortranを混ぜて使っているので、どちらでもよいかなと思い・・ frotranの質問するのにいいとこあったら教えて下さい。