个人网站模板素材下载,来画软件动画制作教程视频,网站上传图片尺寸,重庆网站建设重庆最加科技非线性方程二分法 优点#xff1a;算法直观、简单、总能保证收敛#xff1b;局限#xff1a;收敛速度慢、一般不单独用它求根#xff0c;仅为了获取根的粗略近似 文章目录 非线性方程二分法[toc]1 二分法基本思想2 二分法实现 1 二分法基本思想
设 f ( x ) f(x) f(x)在 [ …非线性方程二分法 优点算法直观、简单、总能保证收敛局限收敛速度慢、一般不单独用它求根仅为了获取根的粗略近似 文章目录 非线性方程二分法[toc]1 二分法基本思想2 二分法实现
1 二分法基本思想
设 f ( x ) f(x) f(x)在 [ a , b ] [a,b] [a,b]上连续、严格单调、满足条件 f ( a ) f ( b ) 0 f(a)f(b)0 f(a)f(b)0 则在区间 [ a , b ] [a,b] [a,b]内必有一根 x ∗ x^* x∗。通过反复对分有根区间以极限思想求解出非线性方程的数值解。具体步骤如下
取 [ a , b ] [a,b] [a,b]的中点 x 0 ( a b ) / 2 x_0(ab)/2 x0(ab)/2计算 f ( x 0 ) f(x_0) f(x0)当 f ( a ) f ( x 0 ) 0 f(a)f(x_0)0 f(a)f(x0)0则令 a 1 a , b 1 x 0 a_1a,b_1x_0 a1a,b1x0; f ( x 0 ) f ( b ) 0 f(x_0)f(b)0 f(x0)f(b)0则令 a 1 x 0 , b 1 b a_1x_0,b_1b a1x0,b1b;
通过重复上述步骤得到一系列有根区间 [ a , b ] ⊃ [ a 1 , b 1 ] ⊃ [ a 2 , b 2 ] ⊃ ⋯ ⊃ … [a,b]\supset [a_1,b_1]\supset[a_2,b_2]\supset\dots \supset\dots [a,b]⊃[a1,b1]⊃[a2,b2]⊃⋯⊃… 由于后一个区间长度是前一个区间的一半通过递归公式求解出区间长度的通项公式 b k − a k b − a 2 k b_k-a_k\frac{b-a}{2^k} bk−ak2kb−a 当 k → ∞ k\to \infty k→∞时 ∣ ∣ b k − a k ∣ ∣ → 0 ||b_k-a_k||\to0 ∣∣bk−ak∣∣→0此时序列 { a k } , { b k } , { x k } → x ∗ \{a_k\},\{b_k\},\{x^k\} \to x^* {ak},{bk},{xk}→x∗其中 x ∗ a k b k 2 x^*\frac{a_kb_k}{2} x∗2akbk 由于方程根和中点间的距离真包含于 [ a k , b k ] [a_k,b_k] [ak,bk]故收敛速度 0 ≤ ∣ x ∗ − x k ∣ ≤ ( b k − a k ) / 2 ( b − a ) / 2 k 1 0\le|x^*-x_k|\le(b_k-a_k)/2(b-a)/2^{k1} 0≤∣x∗−xk∣≤(bk−ak)/2(b−a)/2k1 当 k → ∞ k\to \infty k→∞时利用夹逼定理 lim k → ∞ 0 ≤ lim k → ∞ ∣ x ∗ − x k ∣ ≤ lim k → ∞ ( b − a ) / 2 k 1 0 \mathop {\lim }\limits_{k\to \infty}0 \le \mathop {\lim }\limits_{k\to \infty}|x^*-x_k|\le\mathop {\lim }\limits_{k\to \infty}(b-a)/2^{k1}0 k→∞lim0≤k→∞lim∣x∗−xk∣≤k→∞lim(b−a)/2k10 故有 x k → x ∗ x^k\to x^* xk→x∗。给定终止条件 ε \varepsilon ε当 ( b − a ) / 2 k 1 ε (b-a)/2^{k1}\varepsilon (b−a)/2k1ε 时可求出满足精度 ε \varepsilon ε的最少二分次数 k k k。 2 二分法实现
求解 f ( x ) 2 x x − 2 f(x)2^xx-2 f(x)2xx−2
function[xstar,index,it] bisect(fun,a,b,ep)
% 非线性方程二分法
% fun为目标函数
% a,b为初始区间
% ep为精确度当(b-a)/2ep循环结束迭代失败输出两端点函数值
% index指标变量index 1迭代成功index 0表明初始区间不是有根区间
% it迭代次数
if nargin 4ep 1e-5;
end
fa feval(fun,a); %计算a处的函数值
fb feval(fun,b); %计算b处的函数值
if fa*fb0xstar [fa,fb];index 0;it 0;return
end
k 0;
while abs(b-a)/2 epx (ab)/2;fx feval(fun,x);if fx*fa0b x;fb fx;elsea x;fa fx;endk k 1;
end
xstar (ab)/2;index 1;it k
%具体函数
function f fun1(x)
%测试函数
f 2^xx-2; %任意可改
endformat long
[xstar,index,it] bisect(fun1,0,2,0.0000001)xstar 0.543000400066376
index 1
it 24 -END- 参考文献 曾繁慧. 数值分析[M]. 中国矿业大学出版社,2009