matlab中怎样定义一个函数式f(x),使f(a)f(b)用起来更简单

问题描述:

matlab中怎样定义一个函数式f(x),使f(a)f(b)用起来更简单
我用二分法求解非线性方程f(x)=x^3-2*x-1在区间[1,2]的零点,想创建一个函数式f(x),在使用f(a) f(b) f(mid)的时候方便一些,应该怎么创建呢?谢谢!
%定义函数dichotomy(二分法),三个输入变量a,b,f,accuracy 一个输出变量x即为非线性函数的零点
function x0=dichotomy(a,b,accuracy)
if f(a)==0
x0=a;
elseif f(b)==0
x0=b;
end
%判断在区间的端点是否有零点
if f(a)*f(b)>0
disp(' 不能保证函数在该区间有零点!');
%当区间两端点的函数值同号时,不能保证该函数在该区间有零点
end
if f(a)*f(b)accuracy
mid=(a+b)/2;
if f(a)*f(mid)
1个回答 分类:综合 2014-11-10

问题解答:

我来补答
fa=feval(fun,a);
再问: 你好,帮我写具体点好吗?还要再建立子函数吗?
再答: 额,你不就是想要一种输入函数的方式么? 不好意思 写的过于简单了。 在程序也就是.m文件里面直接使用feval(fun,x)来表示你的那个函数,指的就是关于x的一个函数fun,你在运行时在matlab命令窗口输入fun=inline(‘x^3-2*x-1’);就可以了。 下面给出我们老师给的一个程序,《数值分析》中科大出版社,朱晓临老师编的,里面有很多源代码。底下的应该挺容易懂的,希望对你有帮助。(eff.m文件) function[x,k]=eff(fun,a,b,eps) %if nargin0 disp('[a,b]不是有根区间,请调整'); return; end k=0; while abs(b-a)/2>eps x=(a+b)/2;fx=feval(fun,x); if fa*fx
 
 
展开全文阅读
剩余:2000