注册 登录
编程论坛 Matlab

将多项式反符号的问题

terry04 发布于 2007-04-13 14:15, 654 次点击

我想求一个多项式取极大值时候自变量的取值。我知道matlab里有一个函数fminbnd('f(x)',x0,x1),是用来在区间(x0,x1)之间找极值点的。但是这只能找极小值,我想要的是极大值。
做了一个简单的m文件,名字是getroot.m,内容如下:
function [ b ] = getroot( a )
%UNTITLED1 Summary of this function goes here
% Detailed explanation goes here

b = fminbnd(a,0,1)
在matlab下输入getroot('x^2-2*x+1)可以得到正确的结果:0.9999,极小值点,但是当我想改成b = fminbnd(-a,0,1)时就不行了,我是刚开始学这个,所以不太懂他的错误提示:
??? Error using ==> fcnchk
FUN must be a function, a valid string expression,
or an inline function object.

Error in ==> fminbnd at 148
funfcn = fcnchk(funfcn,length(varargin));

Error in ==> getroot at 7
b = fminbnd(-a,0,1)

请教大家该怎么做!谢谢了 m(_ _)m

2 回复
#2
hitzhang2007-04-13 14:36
function y=roo(a)
a=['-' '(' a ')'];
T=inline(a);
y=fminbnd(T,0,1);


>> roo('-x^2-1')

ans =

  6.6107e-005

>> 
#3
terry042007-04-13 15:06
回复:(terry04)将多项式反符号的问题

真是太感谢你了!!!已经翻了半天网页了,都没找到答案。谢谢!!!

1