密度から棒の重心を求める計算ツール
この計算ツールは、線密度が多項式で与えられた一次元の棒について重心を求めます。係数と棒の左端および右端を入力してください。総質量の積分と一次モーメントの積分を解析的に評価し、一次モーメントを質量で割ります。両方の積分値も表示されるため、微積分、力学、工学の演習や自動採点用の計算過程を確認できます。
無料で実行
棒の線密度を多項式で指定します
線密度を位置 x の多項式として表し、最高次数から定数項までの順に係数を入力します。たとえば [2, 1] は rho(x) = 2x + 1、[3, 0, -2] は rho(x) = 3x squared - 2 を意味します。途中の次数がない場合もゼロを省かないでください。そうすれば次数と各項を明確に区別できます。lower_bound と upper_bound は、密度式と同じ座標軸上で棒の両端を指定します。上限は下限より厳密に大きく、すべての値は有限で、質量積分は正でなければなりません。x をメートル、密度をキログラム毎メートルで入力すると、質量はキログラム、一次モーメントはキログラムメートル、重心はメートルになります。単位の付与や変換は行わないため、一貫した単位系をお使いください。物理的な棒を表す場合は、区間全体で密度が負にならないことも確認する必要があります。
質量積分と一次モーメント積分の計算方法
a から b までの棒の線密度を rho(x) とすると、総質量は同じ区間における rho(x) の定積分です。原点まわりの一次モーメントは x と rho(x) の積を同じ範囲で積分した値です。このツールは各項にべき乗則を直接適用します。密度の項が c times x to the n なら、質量への寄与は c times x to the n plus one divided by n plus one を両端で評価した差になります。一次モーメントでは、あらかじめ x を掛けるため指数が一つ増えます。最後に x-bar = first moment divided by total mass を計算します。標本点、反復解法、数式パーサー、数値積分は使用しないため、刻み幅や収束条件の設定は不要です。total_mass と first_moment も返されるので、原始関数、係数の順序、次元を確認できます。対応可能な数値範囲を超える場合は、無限大を返さずエラーとして扱います。
つり合いの位置を読み取り、モデルを検証します
center_of_mass は、指定した密度モデルの棒がつり合う座標です。一定の正の密度なら、同じ長さに同じ質量が含まれるため区間の中点と一致します。密度が右へ向かって増える場合は通常、中点より右へ移動し、左側が重ければ左へ移動します。この直感的な確認で入力ミスを見つけやすくなります。区間全体で密度が非負かつ質量が正の物理モデルでは、重心は両端の間にあります。範囲外または予想外の値は、係数を昇順で入力したこと、座標の不整合、区間内で負になる多項式などを示す場合があります。本サービスは質量積分が正であることを検査しますが、各点の密度が非負であることまでは証明しません。物理モデルとしての妥当性はお客様がご確認ください。返された次数と境界も確認し、後続計算には丸め前の値を使い、表示時のみ測定精度に合わせて丸めてください。
活用例
微積分の演習を検算する
多項式密度を手計算で積分した後、総質量、一次モーメント、最終的な比を確認できます。
棒のつり合い位置を求める
測定した線密度を多項式でモデル化し、不均一な棒がつり合う位置を求めます。
再現可能な教材結果を作る
数値積分の設定を使わず、多項式の例に対する検証可能な重心結果を生成します。
よくある質問
係数はどの順番で入力しますか?
x の次数が高い項から順に入力し、欠けている次数にはゼロ係数を含めてください。
どの公式を使用しますか?
x と密度の積を積分し、その一次モーメントを密度の積分、つまり総質量で割ります。
密度は一定でなければなりませんか?
いいえ。質量積分が正で物理的に妥当なら、指定された係数上限内の任意の多項式を使用できます。
密度が全点で非負か検査しますか?
いいえ。総質量が正でない場合は拒否しますが、区間全体の密度は別途ご確認ください。
棒の始点を負の座標にできますか?
はい。上限が下限より大きく全値が有限であれば、どちらの端点も負にできます。
API の計算料金はいくらですか?
API の各計算は $0.002 です。同じ決定論的計算をブラウザーでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calculus/center-of-mass-1d \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"density_coefficients":[2,1],"lower_bound":0,"upper_bound":3}'const res = await fetch("https://api.kit.forhosting.com/calculus/center-of-mass-1d", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"density_coefficients": [
2,
1
],
"lower_bound": 0,
"upper_bound": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calculus/center-of-mass-1d",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"density_coefficients": [
2,
1
],
"lower_bound": 0,
"upper_bound": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calculus/center-of-mass-1d", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"density_coefficients":[2,1],"lower_bound":0,"upper_bound":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"density_coefficients":[2,1],"lower_bound":0,"upper_bound":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calculus/center-of-mass-1d", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"density_coefficients": [
2,
1
],
"lower_bound": 0,
"upper_bound": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calculus.center_of_mass_1d",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |