スクリプトガイド > 表示ツリー > 独自のウィンドウの作成 > カスタムプラットフォームを作成する例
公開日: 04/01/2021

カスタムプラットフォームを作成する例

式の操作の例では、JSLのSubstitute Into()関数を使って、2次式の係数にある値を与えた後、その指定された2次式の解を求める方法を示しています。その例では、2次式の係数をSubstitute Into()の引数として指定しています。

列ダイアログの作成の節では、モーダルウィンドウを介してユーザに係数を入力させる例を示しています。

この節では、これらの例をさらに改善し、完全にカスタマイズされたインターフェースを作成します。最初にウィンドウを表示して係数を入力させます。そして、根を計算した後、独自に作成したグラフとともに結果を表示します。

// ウィンドウを表示して、ユーザに係数を入力させる

myCoeffs = New Window( "2次式の根を見つける",
	<<Modal,
	H List Box(
		a = Number Edit Box( 1 ),
		Text Box( "*x^2 + " ),
		b = Number Edit Box( 2 ),
		Text Box( "*x + " ),
		c = Number Edit Box( 1 ),
		Text Box( " = 0" )
	),
	Button Box( "OK",
		a = a << Get;
		b = b << Get;
		c = c << Get;
		Show( a, b, c );
	),
	Button Box( "キャンセル")
);
 

/* 結果を算出する:2次式は

x=(-b + - sqrt(b^2 - 4ac))/2a.係数を2次式に

入れる */

x = {Expr(
	(-b + Sqrt( b ^ 2 - 4 * a * c )) / (2 * a)
), Expr(
	(-b - Sqrt( b ^ 2 - 4 * a * c )) / (2 * a)
)};
xx = Eval Expr( x );
 
 
results = Expr( // 解のリストを保存する

/* 実根が見つかったかどうかテストし、適切な表示をする

yesの場合(たとえば、ウィンドウのデフォルトで)は、根とグラフを表示する */

	xmin = xx[1] - 5;
	xmax = xx[2] + 5;
	ymin = -20;
	ymax = 20;
	win = New Window( "2次関数の根",
		V List Box(
			Text Box( "方程式の実根" ),
			Text Box( "    " || Expr( po ) || " = 0" ),
			H List Box( Text Box( "are x=" ), Text Box( xxx ) ),
			Text Box( " " ), // 空白行を取得するため
			Graph Box(
				Frame Size( 200, 200 ),
				X Scale( xmin, xmax ),
				Y Scale( ymin, ymax ),
				Line Style( 2 ),
				H Line( 0 ),
				Line Style( 0 ),
				Y Function( polynomial, x ),
				Line Style( 3 ),
				Pen Color( 3 ),
				V Line( xx[1] ),
				V Line( xx[2] ),
				Marker Size( 2 ),
				Marker( 0, {xx[1], 0}, {xx[2], 0} )
			)
		)
	);
);
error = Expr(
 

/* noの場合(たとえば、a=3、b=4、c=5で)は、エラーウィンドウと

理解を手助けするグラフを表示する */

	win = New Window( "エラー",
		V List Box(
			Text Box( " " ),
			Text Box( "  多項式 " || po || " には実根がない。" ),
			Text Box( " " ),
			Text Box( "原因を知るために、関数のグラフを表示" ),
			Graph Box(
				Frame Size( 200, 200 ),
				X Scale( -20, 20 ),
				Y Scale( -20, 20 ),
				Line Style( 2 ),
				H Line( 0 ),
				Line Style( 0 ),
				Y Function( polynomial, x )
			)
		)
	)
);
 

/* どちらの場合も、スクリプトは準備のための文字列を必要とする

指定された係数で多項式を書き直す*/

polynomial = Expr( a * x ^ 2 + b * x + c );
 

// 多項式のこのインスタンスを文字列で保存

po = Char( Eval Expr( polynomial ) );
 

// 解のリストを文字列で保存

xxx = Char( Eval Expr( x ) );
 
If( Is Missing( xx[1] ) | Is Missing( xx[2] ), // テスト準備完了
	error,
	results
);

前述のスクリプトを実行すると、最初に、次のようなウィンドウが表示されます。

図11.32 独自に作成したウィンドウ 

Image shown here

[OK]をクリックすると、根またはエラーメッセージのどちらかを示す、結果のウィンドウが表示されます(図11.33)。もう一度スクリプトを実行し、フィールドに5、4、5とそれぞれ入力して[OK]をクリックします。JMPは実根がないというメッセージを表示します(図11.33の右側)。

図11.33 カスタムプラットフォームのレポート 

Image shown here

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).