• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:境界要素法)

境界要素法の内部点の計算について

このQ&Aのポイント
  • 境界要素法の内部点の計算において、観測点Pを内部に持ってくると、up=∫(∂u/∂n)ν dΓ-∫u(∂ν/∂n) dΓとなります。
  • この式を要素ごとの積分に直すと、up=Σ{j=1~M}∫qjνdΓ-Σ{j=1~M}∫uj(∂ν/∂n)dΓとなります。
  • その中で、qjνdΓや uj(∂ν/∂n)dΓの部分はそのまま微分可能ですが、Σを微分する方法について悩んでいます。

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

  • ベストアンサー
  • ency
  • ベストアンサー率39% (93/238)
回答No.1

> そのまま微分したものに、Σをそのまま付ければよいのでしょうか? 境界要素法は、よくわかりませんが、微分の線形性って一般に成立しませんでしたっけ?  y = F + G ⇒ y'= F'+ G'  y = F + G + H ⇒ y' = F'+ G'+ H' つまり、一般に  y = Σ{j=1~M} Fj ⇒ y' = Σ{j=1~M} Fj' 有限和ですし、あまり細かい話は気にしなくて良かったように思います。 こういう話とは違います?

namibito5
質問者

お礼

回答ありがとうございます。 やっぱりそのまま和にしていいのですね。 なにか違和感があったので。 ありがとうございました。

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

関連するQ&A

  • 波動方程式の差分法による境界条件

    波動方程式(ρ*∂^2u/∂t^2=T*∂u^2/∂x^2)を差分法で、境界条件をx=0とx=Lで自由条件(T*∂u/∂x=0)とした場合を考えています。 上の波動方程式を差分化すると、 (u[n+1][j]-2*u[n][j]+u[n-1][j])/(dt^2)=(u[n][j+1]-2*u[n][j]+u[n][j-1])/(dx^2) の形になると思います。(T/ρ=1.0とし、nは時間、jは距離の格子点として考えています) 初期条件は適当な形状を与えます。 両端を固定条件(u[n][0]=0,u[n][xp]=0,)とした場合はうまく解を得ることが出来ました。(xpはx=Lでの格子点) 問題は自由条件(T*∂u/∂x=0)すなわち、 T*(u[n][1]-u[n][0])/dx=0、T*(u[n][xp+1]-u[n][xp])/dx=0 となる場合、これをどのように使用したらよいのでしょうか? または根本的に考え方が間違っているのでしょうか? 本当に困ってます。よろしくお願いいたします。 内容が不十分の場合は補足要求お願いします。

  • 差分法

    過去にも同様な質問があったようですが、それでも理解できないのでご教授お願いします。 拡散方程式などで 境界条件が:∂u/∂x=0 となる場合、 前進差分で表すと:(u[n][j+1]-u[n][j])/δx=0 後退差分で表すと:(u[n][j]-u[n][j-1])/δx=0 中心差分で表すと:(u[n][j+1]-u[n][j-1])/2*δx=0 となります。(n,jは時間、位置の格子点) それぞれ整頓すると、j=0(左の境界点)では 前進差分:u[n][1]=u[n][0] 後退差分:u[n][0]=u[n][-1] 中心差分:u[n][1]=u[n][-1] となるのですがぁ、 本などではよく中心差分を使っているのですがこの理由がよく分かりません。 上の3つの式から:u[n][-1]=u[n][0]=u[n][1]としてしまってもよいのでしょうか? 以上2点と何かアドバイスお願いします。

  • 境界のある2つの多様体の張り合わせ

    M1,M2:境界のある滑らかな多様体 φ:∂M1→∂M2:微分同相写像 ただし∂M1はM1の境界 が与えられたとき、M1、M2の境界をφで張り合わせて 新しい多様体W=M1∪M2をつくることができる。 この定理の証明についての質問です。 まず∂M1、∂M2のカラー近傍U1、U2をとり、 微分同相写像g1、g2をそれぞれ以下のように定義します。 g1:U1→∂M1×(0,1] g2:U2→∂M2×[1,2) またg1、g2はともに境界上で恒等写像であると仮定する。 JiをMiからM1∪M2への包含写像とし g:∂M1×(0,2)→M1∪M2を次のように定める。 g(x,t)=J1(g1(x,t)) (0<t≦1) g(x,t)=J2(g2(φ(x),t)) (1≦t<2) その後、M1∪M2はJ1(intM1)、J(intM2)、g(∂M1×(0,2))に覆われており、 それぞれの開集合にJ1、J2、gによって座標近傍系が入るため、 M1∪M2は多様体であると書いてあるのですが、どうして上記のことで 境界の張り合わせを滑らかにできることがわかるのでしょうか? そしてそもそも座標近傍系が定義できる理由がわかりません… どうしてなのか説明していただけないでしょうか? ちなみに参照した文献はMilnor.J Lectures on the h-Cobordism Theoremです。

  • 3次元格子振動

    ポテンシャルエネルギーU=U0+ΣB0*ui(r)+(1/2)ΣB1*ui(r)uj(s)+… =U0+(1/2)ΣB1*ui(r)uj(s)+… B0=∂U/∂ui(r)=0 B1=∂^2U/∂ui(r)∂uj(s) 運動エネルギーT=(1/2)MΣ{ui(r)}^2 ハミルトン方程式 H=T+U=(1/2)MΣ{ui(r)}^2+U0+(1/2)ΣB1*ui(r)uj(s) d{pi(r)}/dt=-∂H(pi,ui)/∂ui(r) =-∂/∂ui(r){(1/2)ΣB1*ui(r)uj(s)} =-ΣB1*uj(s) ニュートン方程式 d{pi(r)}/dt=M*d^2{ui(r)}/dt^2 ∴M*d^2{ui(r)}/dt^2+ΣB1*uj(s) …(*) 説明:3次元の格子振動の原子のポテンシャルエネルギーを平衡位置のまわりでテイラー展開する。 1次項は平衡位置でポテンシャルエネルギーが最小になるのでゼロになる。3次以上の高次項は無視する(調和近似)。ハミルトニアンの第1項は時間の関数、第2項は定数であるから、第3項をハミルトン方程式で変位ui(r)で偏微分する。ハミルトン方程式とニュートン方程式から(*)が導かれる。 質問:ハミルトン方程式でテイラー展開の2次項の係数1/2!が消える理由を教えて下さい。図書館で専門書を調べましたが、わかりませんでした。2次の微分係数B1を数学で操作すると思いますが、具体的にわかりません。みなさんよろしくお願いします。

  • 最小二乗法について

    最小二乗法について 最小二乗誤差E2は、 E2=Σ(i=1,m)yi^2-2Σ(j=0,n)aj(Σ(i=1,m)yixi^j)+Σ(j=0,n)ajΣ(k=0,n)ajak(Σ(i=1,m)xi^(j+k)) とする時、 ∂E2/∂aj=-2Σ(i=1,m)yixi^j+2Σ(k=0,n)akΣ(i=1,m)xi^(j+k) ですが。 一番後ろの項Σ(j=0,n)ajΣ(k=0,n)ajak(Σ(i=1,m)xi^(j+k))の偏微分が2Σ(k=0,n)akΣ(i=1,m)xi^(j+k)になる理由が分りません。 分りやすい説明をお願いします。

  • 積分の変数変換について

    教科書で、”M⊂U⊂R^n (M,Uともに開集合)、F(x1,・・・,xn)はR^nのある微分方程式の積分でC^1級関数で、U上で∂F/∂x1≠0とする。また、Mと積分 F=τの交わりをMτとするとM=∪[α<τ<β]Mτとなる。これらより、陰関数定理からF=τをx1について解くことができて、 ∫M dx1dx2・・・dxn=∫[α,β]dτ{∫Mτ|J|dx2・・・dxn}となる。 (∫Mは開集合M上で積分するという意味、Jはヤコビアン)” と書かれているのですが、何故、右辺の積分範囲にMτが出てくるのかわかりません。Mτというのは元々(x1,・・・,xn)という座標系で表されていた集合なので、右辺の∫Mτ|J|dx2・・・dxnというのは、Mτに対応する(x2,・・・、xn)の集合Dτ上で積分しろという風に解釈すればいいのでしょうか? どなたかよろしくお願いします。

  • 強束縛近似での行列要素の計算について

    強束縛近似での行列要素の計算について こんにちは。 強束縛近似での行列要素の計算についてお聞きします。 添付の画像の式(8)と式(9)について以下の2点がお分かりになれば 教えていただきたいです。 (1)式のt_n, t_mは単位格子内の原子の位置と考えてよいのか。  (たとえば、bcc構造なら、t_n={ ( 0.0, 0.0, 0.0), (-0.5, -0.5, -0.5), (0.5, -0.5, -0.5),(-0.5, 0.5, -0.5), (0.5, 0.5, -0.5), (-0.5, -0.5, 0.5), (0.5, -0.5, 0.5),(-0.5, 0.5, 0.5), (0.5, 0.5, 0.5) }(単位は格子定数a0)の9つを考えればよいのでしょうか。) (2)式(9)のt_nは式(8)の要素を同じものと考えてよいのか。  すなわち、式(8)のハミルトニアンの積分をt_mだけ平行移動しただけならば  式(9)のt_nは式(8)のt_n+t_mの組み合わせを考えたものとなるのでしょうか。 根本的に考えが間違っているかもしれませんが、よろしくお願いいたします。 添付の画像の元:http://www2.kobe-u.ac.jp/~lerl2/band.pdf

  • プログラムについて質問です。

    プログラム初心者なのですが最短経路を探すプログラムを書きました。実行もできるのですが時間がかなりかかるので時間を短縮したいのですがどうすればいいでしょうか。環境はvisualC++2008を使ってます。 #include<stdio.h> #include<limits.h> #include<stdlib.h> #include<time.h> #define N 1000 #define E 3998 int e[N+1][N+1]; int w[N+1][N+1]; int s, sink; int minLen;//始点sからどの点に移るか決める int j; int m; int u[N+1];//距離 int f[N+1]={0}; int prev[N+1];//通ったノード int start = 1; int goal = 4; void tansaku(int start) { for ( j=0 ; j<=N ; j++ ){ u[j] = 1000; } //始点s=0とする s = start; f[s] = 1; u[s] = 0; for( m=1 ; m<=N ; m++ ){ printf("現在位置[%d]\n", s); //点sは最短経路決定 for( j=1 ; j<=N ; j++ ){ printf("e[%d][%d]=%d \nw[%d][%d]=%d\n\n", s, j, e[s][j], s, j, w[s][j]); if( e[s][j] != 1 ){ //printf("[%d]には繋がってない\n", j); //printf("-----------------------------------------\n"); continue; //枝(s,j)が存在しなければ以下の処理をスキップする } printf("[%d]に繋がってる→", j); if( u[s]+w[s][j] < u[j] ){ printf("重み更新!\n"); u[j]=u[s]+w[s][j]; prev[j]=s; //点jへの経路長を更新、最短経路規定の点は除外 printf("u[%d] = %d\n", j, u[j]); printf("prev[%d] = %d\n", j, prev[j]); }else{ printf("重み更新なし...\n"); } printf("-----------------------------------------\n"); } /***************** 点sからどの点に移るか決める工程*******************/ minLen = 1000; for( j=1 ; j<=N ; j++ ){ if( f[j] == 1 ){ printf("%dは通過済み\n", j); continue; } printf("u[%d] = %d\n", j, u[j]); if( u[j] < minLen ){ //点sは経路長が最短 minLen = u[j]; f[j] = 1; s = j; } //ヒープを使う } if(s == goal){ printf("到着!!!!!\n"); minLen = 0; printf("[経路]:"); while(s != start){ printf("%d ←", s); s = prev[s]; } printf("%d\n距離=%d\n", start, u[goal]); exit(1); } printf("次は%dです。\n", s); } printf("%d\n", prev[N]); } int main(void) { FILE *fp; fopen_s(&fp, "text2.txt","r"); while ((fscanf_s(fp, "%d %d %d", &s, &j, &minLen)) != EOF){ printf("read\n"); e[s][j] = 1; //以下は1→2と2→1を同一に見なす w[s][j] = minLen; e[j][s] = 1; w[j][s] = minLen; } fclose(fp); tansaku(1); return 0; }

  • 根軌跡の性質

    閉ループ伝達関数がKG(s)/{1+KG(s)H(s)}となる制御系で、一巡伝達関数KG(s)H(s)を新たにG(s)とおく。 すると、閉ループ伝達関数の特性方程式は1+G(s)=0となり、G(s)=-1となる。 これより、このG(s)に関して ゲイン条件|G(s)|=1,位相条件∠G(s)=π±2kπが常に成立する。 この伝達関数G(s)の分母を極pi(i=1,2,....,n),分子を零点qj(j=1,2,....,m)を使って表すと、G(s)={K(s-q1)(s-q2)・・・(s-qm)}/{(s-p1)(s-p2)・・・(s-pn)}となる。 ここで、式G(s)=-1よりΠ[i=1~n](s-pi)+KΠ[j=1~m](s-qj)=0 または(1/K){Π[i=1~n](s-pi)}+Π[j=1~m](s-qj)=0と表せる。 質問です。 根軌跡の性質として、無限遠点に至る根軌跡の漸近線と実軸の交点が{Σ[i=1~n]pi-Σ[j=1~m]qj}/(n-m)となるのはなぜでしょうか。 また、根軌跡の性質として、実軸上の点で、右側の実軸上に一巡伝達関数の極または零点が奇数個存在するならば、その点は根軌跡上の点である。とありますが、ある点の右側の実軸上に極・零点が偶数個存在するならば、なぜこの点は根軌跡上に存在しないのか確かめる方法を教えてください。

  • 偏微分のプログラムについてです.

    (∂^2 u)/(∂x^2 )+(∂^2 u)/(∂y^2 )=2(x^2+y^2 ) 境界上でu(0,y)=u(x,0)=0,u(1,y)=y^2,u(x,1)=x^2である.点(0.5,0.5)の値を求めよ.その際きざみ幅を幾つか変化させることで,反復回数がどのように変化するか確かめよ. という問題です.自分で以下のプログラムを作ったのですが,コンパイルされません.ぜひどこがおかしいか教えてください. #include<stdio.h> #define EPS 10e-6 #define N 100 #define M 100 main(void){ int i,j; int n=19,m=19,r=0; double h,x0,S; double u1[N][M],u2[N][M]; h=2.0/(n+1); for(i=0;i<n+2;i++){ for(j=0;j<m+2;j++){ u1[i][j]=0.0; } } do{ for(i=0;i<n+2;i++){ u2[i][0]=0.0; u2[i][m+1]=0.0; } for(j=0;j<m+2;j++){ u2[0][j]=0.0; u2[n+1][j]=0.0; } for(i=1;i<n+1;i++){ for(j=1;j<m+1;j++){ u2[i][j]=(u1[i-1][j]+u1[i][j+1]+u1[i+1][j]+u1[i][j-1]+2.0*h*h)/4.0; } } r++; S=fabs(u1[(n+1)/2][(m+1)/2]-u2[(m+1)/2][(m+1)/2]); for(i=0;i<n+2;i++){ for(j=1;j<m+1;j++){ u1[i][j]=u2[i][j]; } } } while(S>EPS); x0=u2[(n+2)/2][(m+2)/2]; printf("きざみ幅=%lf\n",h); printf("反復回数=%d\n",r); printf("点(0.5,0.5)=%lf\n",x0); }