• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ガウス関数を少しずつずらして足し上げるプログラム)

ガウス関数を少しずつずらして足し上げるプログラム

このQ&Aのポイント
  • ガウス関数を少しずつずらして足し上げるプログラムで、入力した値のガウス関数の広がりにより重ね合わされた結果を数値計算する。しかし、実行結果におかしい数値が現れる問題が発生している。
  • 行列演算を使用して、各値の寄与を計算しているが、計算結果に明らかにおかしい数値が含まれている。
  • 実行結果におかしい数値が現れる問題の原因は、ソースコードのどこかにあると考えられる。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> double ec[N],r[N][N],e[N]; のecが初期化されていないまま、mat_product(ec,r,e);が実行され、 mat_product中でも、初期化しないまま > ec[i]+=r[i][j]*e[j]; で、仮引数ec[i](→main中のec[i])にr[i][j]*e[j]が加算されています。 初期化しない自動変数には、何が入っているかわかりません。 ・宣言時に ec[N]={0} と初期化する ・mat_productを呼ぶ前に for(i=0;i<N;i++) {ec[i]=0;}等として0を代入する ・mat_product中で > for(i=0; i<N; i++){ > ec[i]=0 /*初期値*/ と0を代入する

seturi38
質問者

お礼

正常に動作しました!ずっと悩んでいたので。。。。 本当にありがとうございました.

関連するQ&A