解決済み

3次曲線の長さの求め方

  • 困ってます
  • 質問No.137539
  • 閲覧数1036
  • ありがとう数4
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 80% (4/5)

Y=aX^3+bX^2+cX+dの3次曲線で,X1~X2間の長さ(弧長)の求め方を教えてください。また、弧長から,Xの値の求め方もお願いします(逆をやれば良いだけ?)。
生産設計のプログラムで必要になりました。30年ぶりに、数学の教科書を開きましたが、全く理解できません。宜しくお願いします。一筋縄でいかないようですが?
近似式でもかまわないのですが。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル10

ベストアンサー率 50% (52/103)

S(x) = √( (f(x+dx) - f(x))^2 + dx^2 )
とおいて(要するに微少部分について三平方の定理)、

int step = 10000;
double dx = (X2 - X1)/step;
double sum = .0;

for( double x=X1; x<=X2; x+=dx ) {
sum += S(x);
}

のような感じで求める数値積分ができます。
(C Styleで書いてしまいましたが、まあわかりますよね。)

一般にはstepの数を大きくすると精度が上がりますが、計算機特有の誤差の問題がいろいろあるので、気をつけないと結構な誤差がたまります(これは解析的に解いた式を計算機に計算させても同様ですが)。
この辺りは経験をつむしかないので、計算機関係の本を読みながら試してみて下さい。

例えば、パラメータや積分範囲にもよるので簡単には言えませんが、
double f( double X ) {
return a*X*X*X + b*X*X + c*X + d;
}

よりも、

double f( double X ) {
return ((a*X + b)*X + c)*X + d;
}
とかにした方がいいかも。
まあ、いろいろ試して精度のいい方法を使えばOKです。
お礼コメント
hasami

お礼率 80% (4/5)

有難うございました。これが一番確実な方法ですね。
橋梁の生産設計に使います。誤差は、100mに対して0.5mm程度は許されますので、
理論的に正しければ、それでよしとします。
C++で構築します。
投稿日時 - 2001-09-19 09:06:47

その他の回答 (全4件)

  • 回答No.1
レベル9

ベストアンサー率 15% (14/93)

√((dy/dx)^2+(dy/dy)^2
の公式を使えばいいような気がするのですが、

dy/dx=3ax^2+2bx+c で領域はx1~x2
dy/dy=1
よって、√((3ax1^2+2bx1+c)-(3ax2^2+2bx2+c)+1)

だと、おもうのですが、その逆は上の式と=で求めたい数をむすんで、計算するだけとおもいますが、

あまり、自信がないので、参考までに

  • 回答No.2
レベル9

ベストアンサー率 15% (14/93)

 再度、登場

微小の斜めの長さを微小でとって、積分しなきゃいけないですね。
まちがえていました。

 だから、√((3ax^2+2bx+c)^2+1)をx1からx2まで、積分すればよいのかな。
計算は複雑になるのでかきません。
補足、質問があればどうぞ。
お礼コメント
hasami

お礼率 80% (4/5)

有難うございます。これって相当難しいみたいですね。
投稿日時 - 2001-09-18 19:04:29
  • 回答No.3
レベル10

ベストアンサー率 24% (47/191)

Nickeeさん、積分するの忘れてますよ。
x=aからx=bまでの曲線の長さは
  b
S=∫√(f'(x)^2+1)dx
  a
で表されます。
お礼コメント
hasami

お礼率 80% (4/5)

有難うございます。この式を更に分解して、プログラムに組めるような方法は無いのですか?難しいようであれば、微小部に分割して求める?
宜しくお願いします。
投稿日時 - 2001-09-18 19:12:34
  • 回答No.4
レベル13

ベストアンサー率 24% (357/1463)

近似値でよければ、sを適当に小さな数として、
x1 = x
x2 = x + s
y1 = a(x1)^3+b(x1)^2+c(x1)+d
y2 = a(x2)^3+b(x2)^2+c(x2)+d
l=sqrt((x2-x1)^2+(y2-y1)^2)
とすればlが微小区間xから(x+s)までの線分の長さを表わしますから、
xをX1からX2までの間で上記lを累計すれば求める長さに近い値になります。
お礼コメント
hasami

お礼率 80% (4/5)

有難うございました。BOBさんと同じ理論ですね。
これが確実のようです。
投稿日時 - 2001-09-19 09:11:00
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ