bの作成

さてAの作成で出てきた

\int_K \Lambda \Lambda^T\,dx
ですが、面積座標の積分公式

\int_K \lambda_1^i\lambda_2^j\lambda_3^k \,dx = 2s\frac{i!j!k!}{(i+j+k+2)!}
を使うと

\int_K \Lambda \Lambda^T\,dx=s\begin{pmatrix}1/6&1/12&1/12\\1/12&1/6&1/12\\1/12&1/12&1/6\end{pmatrix}
であることがわかります。またFは

F=\begin{pmatrix}f(x^{(1)},y^{(1)})\\f(x^{(2)},y^{(2)})\\f(x^{(3)},y^{(3)})\end{pmatrix}
であるのでコードは次のようになります。
double *b=calloc(non,sizeof(double));//零リセットしておきます
double F[3];
for(j=0;j<3;i++)
 F[i]=f(nbc[ebn[i][j]][0],nbc[ebn[i][j]][1]);
double sum;//一時的に使う変数です
double bk[3];
for(j=0;j<3;j++){
 sum=0;
 for(k=0;k<3;k++)
  sum+=s*(j==k?1/12.:1/6.)*F[k];
 bk[j]=sum;
}
for(j=0;j<3;j++)
 b[ebn[i][j]]+=bk[j];
 

タグ:

+ タグ編集
  • タグ:
最終更新:2010年10月18日 09:02
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。