C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: 滑らかな曲線


(過去ログ 25 を表示中)

[トピック内 26 記事 (1 - 20 表示)]  << 0 | 1 >>

■11581 / inTopicNo.1)  滑らかな曲線
  
□投稿者/ くー (22回)-(2007/12/18(Tue) 11:38:41)

分類:[VB.NET/VB2005] 

計算結果より曲線を描こうと思ってます。
下のプログラムでは、全ての点を通って曲線を描いてしまいます。
点を通らなくてもよいので滑らかな曲線(近似曲線)を描きたいと思うのですが、
分かりません。
よいアドバイスをお願いします。

Dim g As Graphics = e.Graphics
g.PageUnit = GraphicsUnit.Millimeter

Dim point0 As New Point(40, 249)
Dim point1 As New Point(50, 257)
Dim point2 As New Point(60, 254)
Dim point3 As New Point(70, 246)
Dim point4 As New Point(80, 236)
Dim point5 As New Point(90, 222)
Dim point6 As New Point(100, 205)
Dim point7 As New Point(110, 186)
Dim point8 As New Point(120, 163)
Dim point9 As New Point(130, 137)
Dim point10 As New Point(140, 108)

Dim curvePoints As Point() ={point0, point1, point2, point3, point4, point5, _
point6, point7, point8, point9, point10}

g.DrawCurve(Pens.Black, curvePoints, 0.4)
引用返信 編集キー/
■11582 / inTopicNo.2)  Re[1]: 滑らかな曲線
□投稿者/ 774RR (88回)-(2007/12/18(Tue) 11:48:19)
DrawCurve は「指定された点を通る」カーディナルスプラインを描くわけで
まったくもって仕様どおりの動作をしているわけだが

「点を通らなくて良い」「滑らかな」というのがどういう仕様なのかわからん。
それを定義するのが最初の仕事だな
もしかして最小二乗法で三次曲線近似するとかそー言う話?
引用返信 編集キー/
■11583 / inTopicNo.3)  Re[1]: 滑らかな曲線
□投稿者/ επιστημη (724回)-(2007/12/18(Tue) 11:49:37)
επιστημη さんの Web サイト
指定した点を通らないのは難しいよ。
"通らなさ加減"を与えないと描けないでしょう。
たとえば始点と終点を結ぶ直線を引いても近似曲線と言い張ることができますし。

直線で近似するなら最小自乗法でやれますけども。


引用返信 編集キー/
■11584 / inTopicNo.4)  Re[2]: 滑らかな曲線
□投稿者/ επιστημη (725回)-(2007/12/18(Tue) 11:50:22)
επιστημη さんの Web サイト
ぐは、モロかぶり orz

引用返信 編集キー/
■11590 / inTopicNo.5)  Re[2]: 滑らかな曲線
□投稿者/ くー (23回)-(2007/12/18(Tue) 12:49:26)
2007/12/18(Tue) 12:51:11 編集(投稿者)


質問の仕方が不十分で申し訳ありませんでした。
アドバイスありがとうございました。
最小自乗法でやってみようと今調べてみてます。
参考になる所があれば教えてください。
引用返信 編集キー/
■11593 / inTopicNo.6)  Re[3]: 滑らかな曲線
□投稿者/ 774RR (90回)-(2007/12/18(Tue) 13:08:13)
まずはぐぐれ。話はそれからだ
っていうか最小二乗法が本当に求める何かかどうかわからんのにアドバイスもないだろう

最小二乗法がどーいうものかはエクセルで試すといい
折れ線グラフをつまんで近似曲線の追加だ。
引用返信 編集キー/
■11594 / inTopicNo.7)  Re[4]: 滑らかな曲線
□投稿者/ くー (24回)-(2007/12/18(Tue) 13:32:16)
2007/12/18(Tue) 13:36:56 編集(投稿者)

No11593 (774RR さん) に返信
> まずはぐぐれ。話はそれからだ
> っていうか最小二乗法が本当に求める何かかどうかわからんのにアドバイスもないだろう
>
> 最小二乗法がどーいうものかはエクセルで試すといい
> 折れ線グラフをつまんで近似曲線の追加だ。

どうもすみませんでした。
どう質問したらいいのかも分かりませんでした。
どこからどう始めたらいいのかも分かりませんでした。

エクセルでやってみます。
引用返信 編集キー/
■11598 / inTopicNo.8)  Re[5]: 滑らかな曲線
□投稿者/ れい (313回)-(2007/12/18(Tue) 14:45:59)
No11581 (くー さん) に返信
> 点を通らなくてもよいので滑らかな曲線(近似曲線)を描きたいと思うのですが、

「滑らか」の定義は簡単で、2回微分可能ってことですよね。
でもそれは近似曲線とは全く関係なくって。

最尤法でも二乗法でもスプラインでもなんでも滑らかなのは作れますが。
その点がどういう曲線に載るべきなのか、載せたいのか、
そこを考えなければ全て意味が無いですよ。

引用返信 編集キー/
■11604 / inTopicNo.9)  Re[1]: 滑らかな曲線
□投稿者/ Jitta on the way (62回)-(2007/12/18(Tue) 19:38:23)
No11581 (くー さん) に返信
> 計算結果より曲線を描こうと思ってます。
> 下のプログラムでは、全ての点を通って曲線を描いてしまいます。
> 点を通らなくてもよいので滑らかな曲線(近似曲線)を描きたいと思うのですが、
> 分かりません。
> よいアドバイスをお願いします。
>
> Dim g As Graphics = e.Graphics
> g.PageUnit = GraphicsUnit.Millimeter


ミリで指定したら、結構粗くなると思います。
ここも、要調査かと思います。
引用返信 編集キー/
■11616 / inTopicNo.10)  Re[6]: 滑らかな曲線
□投稿者/ くー (25回)-(2007/12/19(Wed) 10:56:37)
曲線のイメージをエクセルでやってみました。

グラフの散布図で、近似曲線を追加し、近似式は多項式近似(次数5)で
するとイメージ通りのグラフが出来ました。

0 0.562
10 0.084
20 0.112
30 0.253
40 0.45
50 0.703
60 1.012
70 1.377
80 1.798
90 2.276
100 2.81

そこで、表示される式を自分で求めたいのですが分かりません。
知ってる方がおられましたら教えてください。


引用返信 編集キー/
■11617 / inTopicNo.11)  Re[7]: 滑らかな曲線
□投稿者/ επιστημη (726回)-(2007/12/19(Wed) 11:12:50)
επιστημη さんの Web サイト
> グラフの散布図で、近似曲線を追加し、近似式は多項式近似(次数5)で
> するとイメージ通りのグラフが出来ました。

最小自乗法で近似するなら↓
http://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%97%E6%B3%95

引用返信 編集キー/
■11618 / inTopicNo.12)  Re[2]: 滑らかな曲線
□投稿者/ 774RR (92回)-(2007/12/19(Wed) 11:24:38)
うーん。わかっていないような気のせいがする

近似曲線の式を選ぶってのは厳密な理由があっての話
「理論式が log だから」
「理論上偶数次の式とならないから」
「1次式では誤差が大きいが5次式では計算時間がかかるので、応用上有用な3次式で内挿したいから」
などなど、根拠が説明できなきゃ式で近似する意味が無い
この辺はプログラミング以前の話で物理的統計学的話になってくる

テキトーなデータがあって、それをテキトーに結んでみたら5次式っぽく見える
って理由で5次式を採用する、なんてことはありえない話
データが変われば5次式でなく3次式や7次式を採用するわけ?絶対にありえない。

> その点がどういう曲線に載るべきなのか、載せたいのか、
> そこを考えなければ全て意味が無いですよ。
この意味考えた?

続けるにやぶさかではないが今の状況だとまったく無意味っぽいのでパスさせていただきたく拝承
引用返信 編集キー/
■11622 / inTopicNo.13)  Re[3]: 滑らかな曲線
□投稿者/ れい (315回)-(2007/12/19(Wed) 12:03:27)
No11618 (774RR さん) に返信

全面的に同意。

何をしたいのか、きちんと伝わってくるなら、
各種近似法の簡単な説明をしたり、
参考文献を紹介することもできますが。
引用返信 編集キー/
■11624 / inTopicNo.14)  Re[4]: 滑らかな曲線
□投稿者/ も (10回)-(2007/12/19(Wed) 12:18:07)
皆さんのご意見を総合すると
とりあえず数値計算と内挿法でお勉強でしょうかね
引用返信 編集キー/
■11626 / inTopicNo.15)  Re[5]: 滑らかな曲線
□投稿者/ れい (316回)-(2007/12/19(Wed) 12:39:01)
No11624 (も さん) に返信
> 皆さんのご意見を総合すると
> とりあえず数値計算と内挿法でお勉強でしょうかね

私は勉強しろとは言ってません。
内挿法も数値計算も直接は関係ありませんし、
おそらくそれを勉強しても意味がありません。

何をしたいのかがわからないのです。

「滑らかな曲線(近似曲線)を描きたい」という質問を文字通り解釈するなら
「2回微分可能な理論曲線を考えて最尤法でフィットしたらよい」となりますが、
それは求めている回答でないのは明らかでしょう。

もっと具体的にどういった線を描きたいのかがわかれば、
私の知ってる情報やそれへのリンクを示すことも可能であると言っています。
引用返信 編集キー/
■11630 / inTopicNo.16)  Re[6]: 滑らかな曲線
□投稿者/ 774RR (93回)-(2007/12/19(Wed) 13:21:59)
具体的に何がしたいのかが見えないので抽象論にとどまっているわけなのさ
すべての点を通る曲線を描きたい=DrawCurveを使えという答えは既に出ている。
設問は「すべての点を通ってはならない」ということで、こんな抽象仕様ではプログラムは書けない。

・どの点を通り、どの点を通らないのか、その判断仕様
・通らないでよいなら、どの程度近傍を通る必要があるのか、その計算仕様
・ではどこを通るべきなのか、その計算仕様
などなど、具体的コードに落とすための情報が皆無なわけだ
「俺が見てきれいな曲線」などというデムパな仕様書でプログラムなんぞできん。
> 指定した点を通らないのは難しいよ。
> "通らなさ加減"を与えないと描けないでしょう。
というのはそーいうことで。

んで、なまじ近似などと具体的かつ無関係な手法をいうからおかしなことになっているわけで。
近似というのは操作者が好き勝手に行うことができるわけで、それぢゃ意味が無いよー
近似は、それを行う根拠があってはじめて意味があるわけで、恣意的にやっても無駄。
と言ってるだけ。

近似がしたいのではない、に100ペリカ
自分が描画したい線の算出方法を考え付いていないに1000ペリカ

真にしたいことは何なのよ。それをまずは頭の中で整理して具体的文章に落とせ。
引用返信 編集キー/
■11631 / inTopicNo.17)  Re[6]: 滑らかな曲線
□投稿者/ くー (26回)-(2007/12/19(Wed) 13:43:07)
2007/12/19(Wed) 13:45:52 編集(投稿者)

No11626 (れい さん) に返信
> ■No11624 (も さん) に返信
>>皆さんのご意見を総合すると
>>とりあえず数値計算と内挿法でお勉強でしょうかね
>
> 私は勉強しろとは言ってません。
> 内挿法も数値計算も直接は関係ありませんし、
> おそらくそれを勉強しても意味がありません。
>
> 何をしたいのかがわからないのです。
>
> 「滑らかな曲線(近似曲線)を描きたい」という質問を文字通り解釈するなら
> 「2回微分可能な理論曲線を考えて最尤法でフィットしたらよい」となりますが、
> それは求めている回答でないのは明らかでしょう。
>
> もっと具体的にどういった線を描きたいのかがわかれば、
> 私の知ってる情報やそれへのリンクを示すことも可能であると言っています。

どういう線を描きたいのかと言うのを、どう伝えてよいのかわかりません。
皆さんが納得される回答がわからないんです。
だから、皆さんにわかるようイメージとしてエクセルで表してみたんですが。
皆さんのように知識がなくご迷惑かけて本当にすみません。

x軸が0,10,20・・・100に対してのy軸があります。
x軸が0,100の点は通り、他は点列の近辺を通るなめらかな
曲線を描きたいです。(計算結果は必ずエクセルで示したような曲線の形になります)
DrawCurveでは、少しカクカクの曲線になってしまうので、
他のよい方法はないかと思いまして。



引用返信 編集キー/
■11633 / inTopicNo.18)  Re[7]: 滑らかな曲線
□投稿者/ れい (317回)-(2007/12/19(Wed) 14:21:14)
No11631 (くー さん) に返信
> どういう線を描きたいのかと言うのを、どう伝えてよいのかわかりません。

そこを考えるのもプログラマの仕事・能力の一つです。
がんばって考えましょう。

> x軸が0,10,20・・・100に対してのy軸があります。
> x軸が0,100の点は通り、他は点列の近辺を通るなめらかな

始点と終点はわかりました。

> 曲線を描きたいです。(計算結果は必ずエクセルで示したような曲線の形になります)

・あなたの言う「なめらか」とはどういう状態ですか?

2回「なめらか」と言っていますが、同じことを同じように表現しても伝わりません。
少なくとも私にとっては「滑らかな曲線」とは2回微分可能であること意外の意味を持ちません。
違う言い方を考えましょう。

・なぜ「エクセルで示したような曲線」がよいと思うのですか?

こっちが本質です。

私は、くーさんが近似曲線というものを誤解していると思っています。

ですから、
> その点がどういう曲線に載るべきなのか、載せたいのか、
> そこを考えなければ全て意味が無いですよ。
と言っています。

より上位の(メタな)問題、たとえば
「測定器からのデータをグラフ化したい」とか、
「ベクタデータを表示したい」とか、
そういったものを聞けば、
どう考えればよいのか、
アドバイスできるかもしれません。
引用返信 編集キー/
■11635 / inTopicNo.19)  Re[8]: 滑らかな曲線
□投稿者/ くー (27回)-(2007/12/19(Wed) 14:32:15)
> ■No11631 (くー さん) に返信

> ・あなたの言う「なめらか」とはどういう状態ですか?
カクカクしてない、丸みのある曲線です。

> ・なぜ「エクセルで示したような曲線」がよいと思うのですか?

 エクセルで示した曲線を見せるとこんな感じになるようにと言われたので、
 それに近い曲線をと考えています。
 ただそれだけです。
 入力値からでた計算結果をグラフ化したいです。


引用返信 編集キー/
■11637 / inTopicNo.20)  Re[9]: 滑らかな曲線
 
□投稿者/ επιστημη (727回)-(2007/12/19(Wed) 14:45:49)
επιστημη さんの Web サイト
>>・あなたの言う「なめらか」とはどういう状態ですか?
> カクカクしてない、丸みのある曲線です。

じゃなくてぇ...(涙

>  エクセルで示した曲線を見せるとこんな感じになるようにと言われたので、
>  それに近い曲線をと考えています。
>  ただそれだけです。

"こんな感じ"を説明してくれんことには、
それだけじゃわしらにゃなーもわからんて。

n次多項式近似だとか、そのときnはいくつだとか。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -