二分法求方程根

2021-09-11 19:38:49 字數 1616 閱讀 7541

二分法是計算機上的一種常用演算法,下面列出計算步驟:

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 ...