早教吧 育儿知识 作业答案 考试题库 百科 知识分享

matlab关于二分法求值的问题functionx=erfen(a,b,n,tol)iff(a)*f(b)>0display('f(a)*f(b)shouldbe')returnendfork=1:nx=(a+b)/2;whileabs(b-a)>=toliff(a)*f(x)<0;b=x;elsea=x;endendendfunctiony=f(x)y=x*sin(x)-1;一

题目详情
matlab关于二分法求值的问题function x=erfen(a,b,n,tol) if f(a)*f(b)>0 display('f(a)*f(b) should be') return end for k=1:n x=(a+b)/2; while abs(b-a)>=tol if f(a)*f(x)<0; b=x; else a=x; end end end function y=f(x) y=x*sin(x)-1; 一运行就出错。。。不然的话就死机。。。 显示错误是 ??? Input argument "a" is undefined. Error in ==> erfen at 2 if f(a)*f(b)>0 求高手指点错在哪里。。。
▼优质解答
答案和解析
循环中你没有给x赋值,另外外循环for语句没有必要,属多余,把while改成if的话就表示最多执行n步或者误差tol时为止。我不给你改动这个了,代码变成了: function x=erfen(a,b,n,tol) if f(a)*f(b)>0 display('f(a)*f(b) should be') return end for k=1:n x=(a+b)/2; while abs(b-a)>=tol if f(a)*f(x)<0; b=x; else a=x; end x=(a+b)/2; end end function y=f(x) y=x*sin(x)-1;