振動する梁のたわみ関数 その1

以前片持ち梁と両端単純支持梁の固有振動数を求める際に一次モードの梁のたわみ関数を与えました
それどうやって決めたの?というのが今回のお話です


長さlの梁について考えます
deflection_curve1.wxm

%i1にてパッケージ"to_poly_solver"をロードします(画面出力は省略)
to_poly_solverはまだ実験的なパッケージでhelpにも記載がありません
ずらずらとWarningが出てますが,これらの関数が再定義されたことを警告しています(´・ω・`)
梁のたわみ関数y(x)を任意の調和振動関数(%o2)で仮定します


【片持ち梁】

片持ち梁の境界条件を適当に指定します

  • x = 0 の位置のたわみ角が 0 (%o3)
  • x = l の位置の曲率が 0 (%o4)

上2式を連立方程式としてto_poly_solve関数を使ってωおよびBについて解いた結果を%o5式に示します
to_poly_solveは通常のsolve関数では解くのが難しい複雑な解集合を持つ方程式を解いてくれるすごいパッケージです
ただし仕様がまだ固まっていないため使用の際は注意してください
解は%unionオブジェクト内のリストで返ってくるためpart関数で真ん中の解を取り出します
ここで%z7は任意の整数を表すので適当に0とした解を%o6式に示します
この解で%o2式を書き直したものを%o7式に示します(Aは任意の振幅)


【両端単純支持梁】

両端単純支持梁の境界条件を適当に指定します

  • x = 0 の位置のたわみが 0 (%o8)
  • x = l の位置のたわみが 0 (%o9)

上2式を連立方程式としてto_poly_solve関数を使ってωおよびAについて解いた結果を%o10式に示します
左の解を取り出し,%z23を0としたものを%o11式に示します
この解で%o2式を書き直したものを%o12式に示します(Bは任意の振幅)


ということで,一次モードの梁のたわみ関数が求まりました