@Craige_Halesそして@ミトゥルシャー、
私のベジェ曲線に関する知識と経験は限られています。 私は、製図(建設および造園)デザインや衣服のデザインにおけるそれらの有用性を見てきました。 もちろん、数学的な基礎は常に私にとって興味深いものです。インターネットでちょっと調べてみたら、 @ミトゥルシャーExcel のベジェ スプライン、B スプライン、アルゴリズムの探求は一般的なものです。 リンクが 1 つExcel のスムージング アルゴリズムの質問zip ファイルへのリンクが含まれていました。 http://xlrotor.com/Smooth_curve_bezier_example_file.zipこの zip には、Excel の平滑化された曲線からピクセルを取得し、曲線上の点を補間する自動化ルーチンが組み込まれたベジェ曲線の 2002 .xls サンプルが含まれています。これは「正確」ではなく、曲線から 4 ピクセルを取得する手法を使用します。 エンドポイントは、最初の補間点と最後の補間点で 2 回使用されます。
GraphBuilder の Line 要素を曲線にするオプションについての Craige の投稿の後に私が JMP で発見したことの 1 つは、エンドポイントの傾きが Excel の傾きと非常に似ているため、このプラットフォームで使用されるスプラインは別のアルゴリズムを使用する必要があるということです。 GB プロットのピクセルを抽出して DSP (デジタル信号処理) を実行するスクリプトを開始しました。 次に、上記の Web リンクを見つけたので、Excel スプレッドシートから補間された点を使用して、GB ライン (曲線) をオーバーレイすることにしました。 以下の最初のスクリーンショットは、JMP テーブルにスピン B ポイントとして追加されたベジェ スプラインと補間点を含む Excel グラフを含む Excel ワークシートを示しています。2 番目の図は、Excel 補間点がオーバーレイされた JMP GB ライン(曲線)を示しています。
Excel Interpolated Points > Spin B in JMP tableExcel Interpolated Points > Spin B in JMP tableExcel 補間点 > JMP テーブルのスピン B
JMP Line(curve) spline overlaid with Excel interpolationsJMP Line(curve) spline overlaid with Excel interpolationsExcel補間でオーバーレイされたJMPライン(曲線)スプライン
補間が上部の裾の JMP ライン (曲線) からわずかにオフセットしていることがわかります。これは、補間アルゴリズム、Excel と JMP 曲線の違い、または両方の組み合わせが原因である可能性があります。 同じ 4 つの点が Excel グラフの曲線よりわずかに高いことに注意してください。
したがって、私の結論は、JMP GB Line(curve) スプラインは Excel のベジェ曲線に非常に似ているということです。私の興味はそれほど高くありませんが、飽きたら DSP スクリプトを終了してライン (曲線) ポイントを「取得」するかもしれません。以前のバージョンの JMP では、保存された .jrn ファイル内の曲線ポイントをレポートしていましたが、現在は、隠し関数への参照だけが .jrn ファイル内にあります。
さて、私がこの問題について相談するとしたら、最初の質問は次のとおりです。
- これらのデータ (4 ポイント) はどこから来て、何が目標ですか?
- スプライン曲線は、直線や多項式と同様、複雑な関数関係の代わりに校正曲線 (補間に使用する曲線) を作成するのに役立ちます。 ただし、曲線から内挿を計算する場合は、正確性を確保するために、定期的なデータ間隔と複製を推奨します。 X 値が不規則な間隔で配置されているため、X と Y の両方に影響を与える 3 つ目 (またはそれ以上) の変数があるのではないかと思います。 たとえば、どちらも毎日または毎週のテスト測定値からの測定値です。
- X と Y の関係を支える基本的な第一原理はありますか。たとえば、用量反応。細胞の成長。汚れ・腐食など
- なぜこんなに点数が少ないのでしょうか? レプリカトンのコストはいくらですか?
私の経験では、根本的な非線形関係がある場合、データを取得してその関係を当てはめてパラメータ (学習曲線、劣化曲線) などを推定する努力は価値があることが多いです。 Craige Hales 氏、制御点 (数と位置)、ノット、終点の小さな違いが、特に「x」のギャップが広い場合、スプラインの曲率 (曲線上の点) に大きな違いをもたらす可能性があります。私の予感では、Excel は曲線スプラインの点や公式を意図的に公開しなかったため、人々がそれを推定用の近似モデルのように使用しなかったのではないかと考えています。X とレプリケーションの「近い」値を使用すると、補間のリスクがはるかに低くなることに注意してください。
スプラインは、JMP と Excel では同じように見えない開始点と終了点の傾きを選択します。 スプラインは、点の各ペア間で異なる 3 次を使用し、多数の点を滑らかに結合し、傾斜と曲率を一致させることができます。 点が 4 つしかない場合は、3 次を 4 つの点に当てはめ、公式を使用して内挿を行うのが合理的かもしれません。
もしかしたら統計学者から答えがもらえるかも知れません。
Graph Builder can do it. So can Fit Y by X.Graph Builder can do it. So can Fit Y by X.グラフビルダーならそれができます。 したがって、Y を X で当てはめることもできます。
ここで混乱を招いたことをお詫び申し上げます。
データ:

JMP では、Fit Y by X を実行しました。


Excelに同じデータを入力した場合

これはわかります

JMP の緑色の線では、左下付近 (X 値 2 ~ 3 の間) の曲線に少し振動/ねじれがあるのに対し、Excel ではそうではないことに注目してください。
最終的な目標は、線から値を補間することなので、Excel と JMP で 2 つの異なる線が与えられた場合、最終的には異なる補間値が得られることになります。
これが私がやろうとしていることです
滑らかな曲線機能を使用して Excel の散布図を複製します。
柔軟なスパインを使用して JMP Fit Y by X を使用すると、Excel が散布図 + 滑らかな線で生成するものとは異なる曲線が得られます。 Excel はベジェ曲線フィットを使用していると思います。
データポイント:
スピン | X | Y
あ | 2.41 | 846.8692
あ | 0.93 | 77.043
あ | 1.37 | 155.2193
あ | 1.96 | 390.4639

この線をフレキシブルスプラインを使って描くのではなく、強制的にベジェ曲線を描きたいのです。 それが理にかなっているといいのですが。
ありがとう
こんにちは、クレイジさん
path() 関数を理解して、ポイント、コントロールポイント、ベジェポイントを移動しようとしています。
私が持っているデータからこの4つのポイントがあります
ポイント =
[ 0.93 77.04 1、
1.37 155.22 0、
1.96 390.46 0、
2.41 846.87 3];
これをパス関数に入れると、点1と点4の間に線ができますが、点2と点3は通りません。 何かが足りないのでしょうか?
ありがとう。
何をする必要があるかに応じて、複数の回答があります。 ここにあるいくつかの。
2D グラフの場合は、パス関数を使用できます。 スクリプト インデックスでは Bézier と表記されているため、Bezier を検索しても見つかりません。 代わりに「zier」を検索してみてください。@XanGregg @sheila_loring
この例では、ドラッグ可能なハンドルを使用してスクリプト インデックスの例を拡張します。
// initial data; points 3 and 5 are not initially constrained about point 4
points = [
10 10 1,// move-to
30 70 0,// control point
40 10 0,// control point
50 40 3,// bezier
60 60 0,// control point
70 20 0,// control point
90 10 3 // bezier
];
// moving a square handle will call this function to
// copy the handle coordinates to the matrix
setpoint = Function( {index, x, y}, // parameters
{angle, distance}, // local variables
// copy to the matrix
points[index, 1] = x;
points[index, 2] = y;
// 3 and 5 are constrained about 4, comment out to see why...
// if the angles don't match, it isn't smooth
If( index == 3 | index == 5,
other = If( index == 3, 5, 3 ); // if I'm 3, he must be 5, etc
// trig in radians, 2*pi is 360
// atan does all 4 quadrants with 2 arguments
angle = ATan( points[index, 2] - points[4, 2], points[index, 1] - points[4, 1] );
// maintain other's distance
distance = Sqrt( (points[other, 2] - points[4, 2]) ^ 2 + (points[other, 1] - points[4, 1]) ^ 2 );
// fix other's angle to match my angle, but opposite me
points[other, 1] = points[4, 1] + distance * Cos( angle + Pi() );
points[other, 2] = points[4, 2] + distance * Sin( angle + Pi() );
);
// redraw
gb << inval;
);
New Window( "Example",
gb = Graph Box(
Fill Color( "blue" );
// there is no good shortcut for creating handles; the JSL holds the instances
Handle( points[1, 1], points[1, 2], setpoint( 1, x, y ) );
Handle( points[2, 1], points[2, 2], setpoint( 2, x, y ) );
Handle( points[3, 1], points[3, 2], setpoint( 3, x, y ) );
Handle( points[4, 1], points[4, 2], setpoint( 4, x, y ) );
Handle( points[5, 1], points[5, 2], setpoint( 5, x, y ) );
Handle( points[6, 1], points[6, 2], setpoint( 6, x, y ) );
Handle( points[7, 1], points[7, 2], setpoint( 7, x, y ) );
// construction lines
Pen Color( "red" );
Line( {points[1, 1], points[1, 2]}, {points[2, 1], points[2, 2]} );
Line( {points[3, 1], points[3, 2]}, {points[4, 1], points[4, 2]} );
Line( {points[4, 1], points[4, 2]}, {points[5, 1], points[5, 2]} );
Line( {points[6, 1], points[6, 2]}, {points[7, 1], points[7, 2]} );
// the bezier
Pen Color( "black" );
Path( points );
)
);ポイント 3 と 5 もドラッグするように、ポイント 4 の移動を制限する必要があることに気付きました。 (まだ完了していません。簡単なはずです。)
Bezier control pointsBezier control pointsベジェ制御点
もしかしたらスプラインが必要かもしれません。 スクリプトインデックスにおけるスプライン、p-スプライン、b-スプラインの区別がわかりません。 スプラインを使いましたHeatColor vs スプライン vs 補間この曲線を作るには
spline coef, spline evalspline coef, spline evalスプライン係数、スプライン評価
JMP の 3D OpenGL サポートでは、ベジェ スプラインもサポートされています。 https://www.jmp.com/support/help/14-2/bezier-curves.shtmlこれは表面を描くのに役立つかもしれません。 悪い例が隠されていますFFTビデオ
素晴らしい投稿@デュアン・ヘイズ3次スプラインを理解する
途中で出会ったもの: https://www.tinaja.com/glib/bezconn.pdf