急救,急救,mathematica 一元函数求极值

1个回答

  • 在外面定义若干函数,例如

    fg[x_] := 3x + 1

    模块修改如下:

    Module[{a,b,x},fff = Input[Inputhanshu];

    a = Input[please Input zuoduandian];

    b = Input[please Input youduandian];

    zhudian = Solve[fff[x] == 0,x];

    zhudianbiao = Union[{x,fff[x]} /.zhudian,{{a,fff[a]},{b,fff[b]}}];

    fmax = Max[Transpose[zhudianbiao][[2]]];

    fmin = Min[Transpose[zhudianbiao][[2]]];

    x1 = Position[zhudianbiao,fmin];

    x2 = Position[zhudianbiao,fmax];

    Min1 = zhudianbiao[[x1[[1,1]]]];

    Max1 = zhudianbiao[[x2[[1,1]]]];

    {Min1,Max1}]

    出现Input[Inputhanshu]的时候,只是输入函数名,例如上面定义的 fg ,而不是输入函数表达式

    另外Min不能用,它是内部函数,我把它改成 Max1、Min1

    还有,你没有求极值,是求了函数的零点,你的zhudianbiao包括端点值和零点值,这个我没有改

    再就是,你是不是要输出Min1,我把它写上了,就是{Min1,Max1}

    最后,最大最小值Mathematica5.1中分别用用

    Maximize[{(1-x^2)^2,x>=-2,x=-2,x4}}

    Out[78]=

    {0,{x->-1}}

    实现,用这个产生你的zhudianbiao吧!

    补充

    如果一定要在Input[Inputhanshu]输入函数式的话,那么应将

    f[x_] := Input[ Inputhanshu]

    修改为

    f = Input[ Inputhanshu]

    fff[x_] := f

    另外你在是用Module[]的时候是立即执行的,如果想定义成软件包的话应该这样

    f[x_]:=Module[.]

    只有这样,在调入软件包的时候,才不至于立即出现输入窗口.只有在输入并执行f[x]的时候出现输入窗口(Input[Inputhanshu])才对.