1. 二分法 演算法
步驟如下:
Begin
step 1:輸入n。
step 2:定義f(x)= x^2-n。
step 3:輸入區間左端點a、右端點b及計算誤差d。
step 4:判斷f(a)=0,若 是,則a就是方程的根。
若 否,next step。
step 5:判斷f(b)=0,若 是,則b就是方程的根。
若 否,next step。
step 6:判斷f(a)* f(b)<0,若 是,next step。
若 否,輸出錯誤提示,結束程序。
step 7:令m=(a+b)/2。
step 8:判斷f(m)=0,若 是,則m是x^2-n=0的根。
若 否,next step。
step 9:判斷f(a)*f(m)<0,若 是,則根在(a,m)之間。
令 b=m,則根在新區間(a,b)上。
若 否,則根在(m,b)之間。
令 a=m,則根在新區間(a,b)上。
step 10:判斷(a-b)<d,若 否,返回step 7,繼續區間取半的循環過程。
若 是,則在區間(a,b)上任意取值均為滿足條件的近似根,一般可以取(a+b)/2。
step 11:輸出結果。
End
將n換成5就行了
2. 二分法的計算方法和步驟
我把書上原文給你打出來,挺好理解的!我們已經知道,函數F(x)=lnx+2x-6在區間(2,3)內有零點,進一步的問題是,如何找出這個零點?
一個直觀的想法是:如果能夠將零點所在的范圍盡量縮小,那麼在一定精確度下,我們可以得到零點的近似值。為了方便,用「取中點」地方法逐步縮小零點所在的范圍。
取區間(2,3)的中點2.5,用計算器算的f(2.5)約等於 -0.084。因為F(2.5)f(2.75)<0,所以零點在區間(2.5,2075)內
所以零點所在的范圍就縮小了。我們可以在有限次重復相同步驟後,將所得的零點所在區間內的任意一點作為函數零點的近似值,特別的,可將區間斷電作為零點的近似值。
對於在區間[a,b]上連續不斷且f(a)f(b)<0的函數y=f(x),通過不斷地把函數f(x)的零點所在的區間一分為二,將區間的兩個端點逐漸逼近零點,進而得到零點近似值地方法叫二分法。
3. 什麼是二分法
二分法(Bisection method) 即一分為二的方法. 設[a,b]為R的閉區間. 逐次二分法就是造出如下的區間序列([an,bn]):a0=a,b0=b,且對任一自然數n,[an+1,bn+1]或者等於[an,cn],或者等於[cn,bn],其中cn表示[an,bn]的中點。
典型演算法
演算法:當數據量很大適宜採用該方法。採用二分法查找時,數據需是排好序的。
基本思想:假設數據是按升序排序的,對於給定值key,從序列的中間位置k開始比較,
如果當前位置arr[k]值等於key,則查找成功;
若key小於當前位置值arr[k],則在數列的前半段中查找,arr[low,mid-1];
若key大於當前位置值arr[k],則在數列的後半段中繼續查找arr[mid+1,high],
直到找到為止,時間復雜度:O(log(n))。
4. 二分法的演算法步驟
見解析 演算法如下: 1、取 中點 ,將區間一分為二 2、若 ,則 就是方程的根;否則所求根 在 的左側或右側 若 ,則 ,以 代替 ; 若 ,則 ,以 代替 ; 3、若 ,計算終止 此時 ,否則轉到第1步 演算法語句: Input repeat if then print else if then else until print end 流程圖
5. 二分法 計算步驟
對於在區間[,]上連續不斷且滿足·<0的函數,通過不斷地把函數的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫做二分法(bisection).
2.給定精確度,用二分法求函數零點近似值的步驟如下:
(1)確定區間,,驗證·<0,給定精確度;
(2)求區間,的中點;
(3)計算:
1若=,則就是函數的零點;
2若·<0,則令=(此時零點);
3若·<0,則令=(此時零點);
(4)判斷是否達到精確度;即若<,則得到零點近似值(或);否則重復步驟2-4.
6. 用二分法計算a的n次方的演算法
x^n=a,令f(X)=x^n-a
取區間[m,n],使f(X)一正一負
例如f(m)>0,f(n)<0,然後取m,n的中點,如果f(中點)>0,用中點取代m,如果f(中點)<0,用中點取代n
區間變為[(m+n)/2,n]或[m,(m+n)/2],繼續取中點,重復以上,直到f(中點)=0
如果f(中點)不為0,則隨著區間的縮小,也會使a的n次方逐步精確
7. 請問二分法的通俗解釋是什麼最好再舉幾個簡單的列子,還有二分法和初一下半學期學的知識有聯系嗎
二分法多數用於開方。
通俗點就是,先找到一個大概的區間,把這個區間分成兩半,即3個點,原始兩個區間點,和中值一個點。
如果中值的平方大於要求的數,則中值為新的區間的右端點,原始的左端點還是左端點!
關系就是 這個演算法是初中就學過的!
看下程序 你就明白了!運行一下,每次都有一個輸出。你可以看看。
運行環境C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
double? limmin = null;
double? limmax = null;
int num=0;
Console.WriteLine("輸入要求開方的數字");
string snum = Console.ReadLine();
try { num =Convert.ToInt32( snum); }
catch { Console.Write("請輸入數字"); }
for (int i = 0; i <= num; i++)
{
if (i * i > num)
{
limmin = i - 1;
limmax = i;
break;
}
}
for (int i = 0; i <= 100; i++)
{
if ((((limmin + limmax) / 2) * ((limmin + limmax) / 2)) > num)
{
limmax = (limmin + limmax) / 2;
}
else { limmin = (limmin + limmax) / 2; }
Console.WriteLine("答案位於{0}-{1}",limmin,limmax);
}
Console.ReadLine();
}
}
}
8. 二分法的演算法步驟是什麼
在有序的有N個元素的數組中查找用戶輸進去的數據x。
演算法如下:
1、確定查找范圍front=0,end=N-1,計算中項mid=(front+end)/2。
2、若a[mid]=x或front>=end,則結束查找;否則,向下繼續。
3.、若a[mid]<x,說明待查找的元素值只可能在比中項元素大的范圍內,則把mid+1的值賦給front,並重新計算mid,轉去執行步驟2;若a[mid]>x,說明待查找的元素值只可能在比中項元素小的范圍內,則把mid-1的值賦給end,並重新計算mid,轉去執行步驟2。
(8)二分法an的演算法帶注釋擴展閱讀
基本思想:假設數據是按升序排序的,對於給定值key,從序列的中間位置k開始比較,
如果當前位置arr[k]值等於key,則查找成功;
若key小於當前位置值arr[k],則在數列的前半段中查找,arr[low,mid-1];
若key大於當前位置值arr[k],則在數列的後半段中繼續查找arr[mid+1,high],
直到找到為止,時間復雜度:O(log(n))。
9. 二分法的優缺點
一、二分法的優點:
1、計算簡單,方法可靠;
2、對f (x) 要求不高(只要連續即可) ;
3、收斂性總能得到保證;
4、二分法計算過程簡單, 對)(xf要求不高(只要連續即可),程序容易實現。
二、二分法的缺點:可在大范圍內求根,該方法收斂較慢,且不能求重根和復根, 其收斂速度僅與一個以 1/2為比值的等比級數相同,通常用於求根的初始近似值,而後在使用其它的求根方法。
(9)二分法an的演算法帶注釋擴展閱讀:
二分法的求法:
1、確定區間[a,b],驗證f(a)·f(b)<0,給定精確度ξ。
2、求區間(a,b)的中點c。
3、計算f(c):
(1)若f(c)=0,則c就是函數的零點;
(2)若f(a)·f(c)<0,則令b=c;
(3)若f(c)·f(b)<0,則令a=c;
(4)判斷是否達到精確度ξ:即若|a-b|<ξ,則得到零點近似值a(或b),否則重復2-4。
10. 用二分法查找,如果碰到偶數個數怎麼辦第一次折半,中間的數是取一個,還是兩個碰到奇數又怎麼辦
對於區間[a,b]上連續不斷且f(a)·f(b)<0的函數y=f(x),通過不斷地把函數f(x)的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。
二分法(Bisection method) 即一分為二的方法. 設[a,b]為R的閉區間. 逐次二分法就是造出如下的區間序列([an,bn]):a0=a,b0=b,且對任一自然數n,[an+1,bn+1]或者等於[an,cn],或者等於[cn,bn],其中cn表示[an,bn]的中點.
演算法:當數據量很大適宜採用該方法。採用二分法查找時,數據需是排好序的。
基本思想:假設數據是按升序排序的,對於給定值key,從序列的中間位置k開始比較,
如果當前位置arr[k]值等於key,則查找成功;
若key小於當前位置值arr[k],則在數列的前半段中查找,arr[low,mid-1];
若key大於當前位置值arr[k],則在數列的後半段中繼續查找arr[mid+1,high],
直到找到為止,時間復雜度:O(log(n))
給定精確度ξ,用二分法求函數f(x)零點近似值的步驟如下:
1 確定區間[a,b],驗證f(a)·f(b)<0,給定精確度ξ.
2 求區間(a,b)的中點c.
3 計算f(c).
(1) 若f(c)=0,則c就是函數的零點;
(2) 若f(a)·f(c)<0,則令b=c;
(3) 若f(c)·f(b)<0,則令a=c.
(4) 判斷是否達到精確度ξ:即若|a-b|<ξ,則得到零點近似值a(或b),否則重復2-4.
希望我能幫助你解疑釋惑。