プロが教える店舗&オフィスのセキュリティ対策術

VBScriptを使って二次関数の最大、最小を求めるプログラミングをしたいのですがどうすればよいでしょう?a,b,cとx1,x2(xの範囲)を入力して求める、つまりIF...THEN...ELSE...END IF を使うということです
急いでいるのでよろしくお願いします。

A 回答 (4件)

'分割の幅とかforの終了条件とかで必ずしも数学的に正しい答えは求まらないので注意


'---------------------------------------------------------------
dim a, b, c, x1, x2
dim x, y, max, min, dx

a=InputBox("係数aを入力","ax^2", 1)
b=InputBox("係数bを入力","bx", 0)
c=InputBox("係数cを入力","c", 1)
x1=InputBox("範囲の始まりx1を入力","x1", 0)
x2=InputBox("範囲の終わりx2を入力","x2", 1)
min=x1*(x1*a+b)+c
max=min
dx=abs(x2-x1)/1000 '区間を1000分割する
for x=x1 to x2 step dx
y=x*(x*a+b)+c
if y>max then max=y
if y<min then min=y
next

WScript.Echo "最大値:" & max
WScript.Echo "最小値:" & min
    • good
    • 0
この回答へのお礼

ありがとうございます!! だいたい分かるのですが僕の知識不足で最後の 
    WScript.Echo "最大値:" & max
    WScript.Echo "最小値:" & min

のところの意味が分からないんですけどどういう意味でしょう?

お礼日時:2006/01/14 18:49

初等の情報学習の「条件の分岐」を教えるプログラム課題でしょう。


2次の計数が、その正負によって、最小値、最大値が
http://www.kwansei.ac.jp/hs/z90010/sugaku1/2jima …にあるように
,2次関数 y=ax2+bx+c があるとき,そのグラフの頂点の座標を (p,q) とすると,
 a>0 のとき,x=p で最小値 q をとり,最大値はない
 a<0 のとき,x=p で最大値 q をとり,最小値はない
を場合分けするときにIF...THEN...ELSE...
を使うのでしょう。
あとは中学数学公式に値を代入するだけ。
値指定のInputBoxと表示のEcho以外は
四則演算(+-*/,2上はx*xで代用)で計算できる。
根を求めるのでないからSQR関数も必要ない。
ーb/(2*a)
のとき最大(小)値はc-b*b/(2*a*2*a)
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2006/01/14 18:47

No1です。



誤: 2ax+b=0 もしくは x = b/2a
正: 2ax+b=0 もしくは x = -b/2a

申し訳ありませんでした。
    • good
    • 0

VBScriptを使用したことはありませんので、考え方だけ。



元の関数が

ax^2+bx+c for x1 <= x <= x2

であれば微分は 

2ax+bですので、最大もしくは最小のどちらかが
2ax+b=0 もしくは x = b/2a のところにあります。

あとはそのxがx1とx2の間にあるかどうかを判定して
間にない(x<x1 or x>x2)のであれば両端の値の判定を行って、大きいほうが最大値で小さいほうが最小値になります。

もしもxがx1とx2の間にあるのならば(x1<=x and x<=x2)、x1,x,x2 の値のどれかが最大値でどれかが最小値です。

この辺のロジックを作るのにIF...THEN...ELSE...END IFを使うということだと思いますけれど、プログラミングが分からないのか、二次関数が分からないのかはっきりしていないので、とりあえず二次関数の説明だけ。
    • good
    • 0
この回答へのお礼

分かりやすい説明、ありがとうございます!

お礼日時:2006/01/14 18:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!