二分法求解单变量方程matlab

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二分法求解单变量方程matlab

1、问题:用二分法求解单变量连续函数f(x)在连续区间[a, b]间的零点。

2、Matlab程序2.1、Matlab脚本文件% 调用二分法函数求解[x, iteration] = Erfen(@myfun, -1, 3)2.2、Matlab函数文件function y = myfun(x)%目标求解函数y =

x^2-5; %测试二分法2.3、Matlab函数文件function [x, iteration] = Erfen(f, a, b, tol)% 二分法求解单变量连续函数f(x)在连续区间[a, b]间的零点% 要求f(a)f(b)% iteration = [n x fx a fa b fb]if nargin tol = 1e-4; %设置精度要求endfa = feval_r(f,

a); %f(a)的值fb = feval_r(f, b); %f(b)的值iteration = []; %迭代过程记录n = 0; %迭代步数if abs(fa) x = a;return;elseif abs(fb) x = b;return;elseif sign(fa) == sign(fb)error('fa has the same sign with fb'); %a,b同号endwhile abs(b-a) > toln = n + 1; %迭代步数x = a/2 + b/2; %二等分fx = feval_r(f, x);iteration = [iteration; n x fx a fa b fb];if abs(fx) return;elseif sign(fx) == sign(fa)a = x;elseif sign(fx) == sign(fb)b = x;endendend3、运行结果x

=2.2361iteration =1.0000 1.0000 -4.0000 -1.0000 -4.0000

3.0000

4.00002.0000 2.0000 -1.0000 1.0000 -4.0000 3.0000

4.00003.0000 2.5000 1.2500 2.0000 -4.0000 3.0000

4.00004.0000 2.2500 0.0625 2.0000 -4.0000 2.5000

4.0000

5.0000 2.1250 -0.4844 2.0000 -4.0000 2.2500

4.00006.0000 2.1875 -0.2148 2.1250 -4.0000 2.2500

4.00007.0000 2.2188 -0.0771 2.1875 -4.0000 2.2500

4.00008.0000 2.2344 -0.0076 2.2188 -4.0000 2.2500

4.00009.0000 2.2422 0.0274 2.2344 -4.0000 2.2500

4.000010.0000 2.2383 0.0099 2.2344 -4.0000 2.2422

4.000011.0000 2.2363 0.0012 2.2344 -4.0000 2.2383

4.000012.0000 2.2354 -0.0032 2.2344 -4.0000 2.2363

4.000013.0000 2.2358 -0.0010 2.2354 -4.0000 2.2363

4.000014.0000 2.2361 0.0001 2.2358 -4.0000 2.2363 4.0000

相关文档
最新文档