二分法是計算機上的一種常用演算法,下面列出計算步驟:
step1:計算
step2: 計算
step3: 若==0,則若若
**如下:
erfen.m
%有根區間[a,b] 函式 y=x^2-2;呼叫了erfenhanshu();
a=1;b=6;e=10;
cnt=0;
while(e>0.1)
cnt=cnt+1;
fa=erfenhanshu(a);
fb=erfenhanshu(b);
c=(a+b)/2;
fc=erfenhanshu(c);
if(fc==0)
c;e=0;
break;
else
if(fa*fc<0)
b=c;
else
a=c;
endend
e=b-a;
end
disp("迭代的次數, 求得的根");
cntc
%繪圖x=1:.1:5;
y=x.*x-5;
plot(x,y,'r');
hold on;
x=1:0.1:5;
y=0.*x;
plot(x,y,'b');
erfenhanshu(x):
function[y]=erfenhanshu(x);
y=x*x-5;
end
迭代了6次,求得結果為2.1719
增加了注釋:
clc;clear all;
a=input('輸入左區間,a=');
b=input('輸入左區間,b=');
err=input('輸入精度: err=');%有根區間[a,b],誤差為err
e=10000; %初始誤差
while(e>err)
fa=erfenhanshu(a);%f(x)在點a處的值f(a)
fb=erfenhanshu(b);%f(x)在點b處的值f(b)
c=(a+b)/2;% c是區間[a,b]的中點
fc=erfenhanshu(c);% f(x)在點c處的值f(c)
if(fc==0) %如果 f(c)==0,那麼點c就是根
c;e=0;
break;
else
if(fa*fc<0) %如果 f(a)*f(c)<0,那麼區間可以縮短為[a,c],即b=c;
b=c;
else %如果 f(b)*f(c)<0,那麼區間可以縮短為[c,b],即a=c;
a=c;
endend
e=b-a; %誤差e=b-a;
end
disp("求得的根");
cfunction[y]=erfenhanshu(x)
y=x*x*x/3-x;
end
求方程根 (二分法)
二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方呈f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知f 0 0且f 100 0,所...
二分法求方程的根
求下面乙個方程的根 f x x 3 5x 2 10x 80f x x3 5x2 10x 80如果a是方程的根,則要求f a 1e 6f a 1e 6 通過對公式的求導可以發現,導函式開口向上,與x軸沒有交點,那麼導函式的值就是始終大於0的,所以原函式單調遞增 而且已知f 0 0 f 0 0,f 10...
二分法求方程的根
二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方程 f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知 f 0 0且 f 100 ...