• ベストアンサー

片対数グラフの傾きについて

現在,片対数グラフ(横軸を対数表示)を用いて,金属疲労に関するS-N線図(ウ゛ェーラー線図)を数式表示しています。しかし,その際に,次の式を用いるのですが, σ=C・N^(-k) 私の場合,S-N線図は全部で4本あります。一枚の片対数グラフに2本ずつ存在します。そして,その4本とも,データ上,自分(人間)の手で意図的に平行になるように直線を引きました。 そこで,その4本の直線に対して傾き(いわゆるkの値)を手計算したのですが,どうしても4本ともに,ばらばらの計算結果(傾斜)になってしまします。 EXCELで適当に2~5点程をとって,近似曲線(累乗)を引き,数式を出したのですが,結局,同じような結果になってしまします。私の手計算の仕方が悪いのか,取り扱う数値が大きいためにより正確に,そのデータを読み切れなかったのか,さっぱり判りません。どなたかご存知の方居られたらご教授下さい。

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

  • ベストアンサー
  • tgb
  • ベストアンサー率78% (32/41)
回答No.4

(1)  直線の当てはめの問題は既に指摘されていますが、私もその通り だと思います。私の手元にあるヴァン・ブラックの材料科学要論と 言う本にはN-S曲線が片対数で書かれていますが、この線は 直線ではなく少し曲がっています。次のページに直線への当てはめ のグラフがありますが両対数のグラフになっています。 (2)  それ以外について、kougakubuさんは傾きがバラバラになると言う ことで困っておられるようですが、次のように考えられないでしょうか。 ・意図的に平行になるように直線を引くと言うことですが、手で直線を  引いてその傾きを拾うのであれば、4つの傾きが直線を書くときの正  確度に応じて相応にばらつくのは当たり前のことです。  同じ値として求めたいなら4つを平均したらいかがでしょうか。その  上でその平均値を使って4つの各々に対してy切片(σ切片)を、  最小2乗法で求めたら(求めなおしたら)よいと思います。 ・もう少し厳密に共通の傾きと4つのy切片を求める方法もあります。  この場合、多目的最適化と言うことになるかと思いますが、4つの  それぞれの残差2乗和に対する重みを適当に設定(例えば全て1)  して4つについての和を取りこれを最小化すると言うことにすれば  結局5つの未知数(共通の傾き、4つのy切片)についての1次  方程式を解く問題になります。(更に厳密に多目的最適化の問題と  して解きたい場合は参考書等を見てください。)

kougakubu
質問者

お礼

具体的な回答ありがとうございます。 >手で直線を >引いてその傾きを拾うのであれば、4つの傾きが直線を書くときの正 >確度に応じて相応にばらつくのは当たり前のことです。 まさにその通りです。 さっそく(2)の方法で纏めてみました。誤差は思ったほど小さく抑えられました。

その他の回答 (3)

  • siegmund
  • ベストアンサー率64% (701/1090)
回答No.3

> 縦軸(σ)の値は,せいぜい300~500程度となります。 > ですので,回答頂いた方法でも結局は同じこととなります。 う~ん,同じとは思えませんね. poohhoop さんが > 対数グラフをグラフの見易さだけのために使うのであればこの考えで良いのですが、 > 直線近似して関数関係を見出そうとするのならこの考えは正しくはありません. と書かれているとおりです. 単に,実験値がグラフにうまく収まるように,という問題ではありません. 両対数で直線という思想ならならば, (1)  logσ = log C - k log N  ⇔  σ = C N^(-k) と仮定していることになりますし,横軸の片対数で直線なら (2)  σ = log C - k log N  ⇔  10^σ = C N^(-k) と仮定していることになります. >> 私が片対数で出した手書きの線図は,いずれも直線・・・ > 偶然ではないですか? 10^σ を問題とするσの近辺でσのべき関数に展開して1次までとれば (2)でも直線になります. したがって,偶然と言うよりはσの値の変動の問題でしょう. (A)  N=10^3 でσ=400,N=10^6 でσ=300, となるようなテストデータ(C,k が決まるから作れる), および C だけ変えて (B)  N=10^3 でσ=500, となるようなテストデータをつくって,N = 10^3~10^6 でグラフを描いて見ました. 両対数ではもちろん直線ですが,横軸の片対数でも一見直線みたいに見えますね. でも,横軸の片対数ですとよく見るとカーブしています (プリントアウトして定規を当ててみるとよくわかる). それから,両対数では当然 A,B は平行ですが, 横軸片対数では A,B は平行になりません(これは一見してわかる). つまり,本来直線にならないプロットをしているので, C の違いが見かけ上の傾きに繰り込まれてしまっているのです. 以上のようなことですので,両対数のプロットをやってみるべきです. プロット関係から言えるのは以上のようなことです. poohhoop さんの > 直線の正確(適切?)な傾きを求めるためには回帰分析(最小自乗法)による計算が必要であり、 > 相関係数や誤差の評価も必要でしょうね。 もやってみるべきです. EXCEL をお使いなら,σ = C N^(-k) の回帰分析ができるはずですが. これで解決しないのであれば, 実験結果が σ = C N^(-k) になっていないとか, 実験サンプル毎に(あるいは実験のたびに) k が違うとか, 実験に問題があるとか, そういうことではないかと思います. こちらはちょっとお役に立てません.

kougakubu
質問者

お礼

回答ありがとうございます。 重みつき最小二乗法を用いて計算を行いました。いくつかはネグりました。 取り扱う数値の大きさから,当然,誤差が出てしまうために,傾斜が変わってしまったのが原因だと思います。4本の傾斜を平均して求めることとしました。 >(1)  logσ = log C - k log N  ⇔  σ = C N^(-k) >(2)  σ = log C - k log N  ⇔  10^σ = C N^(-k) ご指摘の通り,矛盾する点がいくつかあるようです。 両対数グラフでも纏めるように致します。

  • poohhoop
  • ベストアンサー率52% (121/229)
回答No.2

> 金属疲労に関するS-N線図(ウ゛ェーラー線図) この点については私も素人なので自信無しとしておきますが。 私も#1の方のご意見に賛成です。 本来、対数グラフというのは実験値の変数変換を容易にプロットすることができるような物ですので片対数と両対数では目的が違います。 両対数=n次の関数のグラフを直線変換する機能 片対数=指数関数、対数関数グラフを直線変換する機能 逆に考えれば 両対数=実験値の関係をn次関数で近似する。 片対数=実験値を指数関数、対数関数で近似する ということなります。 詳細な説明は#1の方の説明で十分だと思います。 ちなみにkougakubuさんの場合の片対数グラフを使って グラフ上で直線近似するというのは 関数を σ=A+BlogN として近似していることになります。 σ=C・N^(-k) の場合は両対数グラフを使うべきでしょう。 余談ですが、直線の正確(適切?)な傾きを求めるためには回帰分析(最小自乗法)による計算が必要であり、相関係数や誤差の評価も必要でしょうね。 >私が片対数で出した手書きの線図は,いずれも直線・・・ 偶然ではないですか? >横軸(log N)の値は,最小で1000,最大で2000000(2百万)程度 >までの大きな数値を扱うため,当然,対数変換しなくてはなら >ないのですが,縦軸(σ)の値は,せいぜい300~500程度となり >ます。 対数グラフをグラフの見易さだけのために使うのであればこの考えで良いのですが、直線近似して関数関係を見出そうとするのならこの考えは正しくはありません

kougakubu
質問者

お礼

回答ありがとうございます。 重みつき最小二乗法を用いて計算を行いました。いくつかはネグりました。 取り扱う数値の大きさから,当然,誤差が出てしまうために,傾斜が変わってしまったのが原因だと思います。4本の傾斜を平均して求めることとしました。 >σ=C・N^(-k) の場合は両対数グラフを使うべきでしょう。 両対数グラフを使ってみたのですが,上述の「誤差」が生じるため?に結局,同じような結果となりました。

  • siegmund
  • ベストアンサー率64% (701/1090)
回答No.1

> 金属疲労に関するS-N線図(ウ゛ェーラー線図) というのは全く知らないこともあって,質問の意図がもう一つ把握できないのですが, (1)  σ=C・N^(-k) という式ですか. で,N と σ の測定値の組が何組かあって,それから k と C を求めたい, と言う話でしょうか? それなら片対数グラフを使うのが間違いで,使うべきは両対数グラフです. (1)の両辺の常用対数(log であらわします,面倒なので底の 10 は省略)をとって (2)  logσ = log C - k log N ですから,横軸を log N, 縦軸を logσ でプロットすれば直線になり (1次関数ですから), 傾きから k が,縦軸切片から log C が,それぞれ求められます. 片対数グラフを使うのは (3)  y = A・B^x のようなときです. (4)  log y = log A + (log B)x ですから,横軸を x,縦軸を log y でプロットすれば直線になります.

kougakubu
質問者

お礼

回答ありがとうございます。 >質問の意図がもう一つ把握できない 簡単な説明で申し訳ないのですが,金属疲労とは,ある金属材料に小さな荷重が繰返し受ける場合,いずれは破壊に至るというものです。金属も人間と同様に小さなストレス(σ)であっても何回も何回も繰返し(N)受けると,いずれはへたばってしまうということです。 σ:応力(ストレス) N:繰返し回数(cycles) >横軸を log N, 縦軸を logσ でプロットすれば直線になり・・・ しかし,私が片対数で出した手書きの線図は,いずれも直線,すなわち,一次関数で評価しています。 >横軸を log N, 縦軸を logσ でプロットすれば直線になり 申し訳ありません。私の説明不足でした。横軸(log N)の値は,最小で1000,最大で2000000(2百万)程度までの大きな数値を扱うため,当然,対数変換しなくてはならないのですが,縦軸(σ)の値は,せいぜい300~500程度となります。 ですので,回答頂いた方法でも結局は同じこととなります。