c++版
1.二分法
#include#include#include#include#includeusing namespace std;
int num[100+5];//多項式係數
int n;
double ep;
double a,b;
double getval(double k)
while(abs(b-a)>ep)
else
hh++;
}res=(a+b)/2.0;
coun=hh;
return true;
}int main()
cout<<"輸入二分範圍: "<>a>>b;
cout<<"輸入精度:"<>ep;
if(binary_solve(res,coun))
{cout<<"所求得的根為:"<matlab版
1.二分法
function [x_star,k]=bs(f,a,b,ep)
% 二分法求解線性方程,f(x)=0
% a,b為初始區間端點
% x_star為所求的根,k為迭代次數
% 預設誤差精度為1e-3
% 迭代次數為0表示次區間沒有根存在
if nargin<3 % nargin代表函式輸入引數個數
ep=1.0e-3;
end%計算左端點值
fa=feval(f,a);
%計算右端點值
fb=feval(f,b);
if fa*fb>0
k=0;
x_star=[fa,fb];
return;
endk=1;
while abs(b-a)/2>ep
x=(a+b)/2;
fx=feval(f,x);
if fa*fx<0
b=x;
fb=fx;
else
a=x;
fa=fx;
endk=k+1;
endx_star=(a+b)/2;
% 呼叫示例
% 假設我們求x^3-x-1=0這個式子在[1,1.5]這個區間裡的根,要求誤差不超過0.005
% 在matlab中可以用inline把字串轉變成函式
>>f=inline('x^3-x-1');
>>[x_star,k]=bs(f,1,1.5,0.005)
x_star =
1.3242
k = 7
非線性方程求根
假設本金為2000元,分2個月還,每個月還1100,月利率為x,則 2000 1 x c 1 x c 0,令f x 2000 1 x c 1 x c,當f x 0時,說明月利率太高了 當f x 0時說明月利率正確 當f x 0時,月利率過低。結果要求輸出三位小數。include include in...
(matlab系列)非線性方程求根
非線性方程在5次以上的時候沒有求根公式 根據高等代數的阿貝爾群的概念得知 所以直接求解比較麻煩,需要借助解析幾何的工具,結合圖形採用特殊的方法求解 逼近法。主要有二分法 迭代法 包括牛頓迭代和割線法 逼近法的本質就是先給乙個估計值 近似值 作為方程解,然後對這個估計值一步一步地修正,使得它越來越像真...
數值分析4 非線性方程求根
這部分演算法實現起來比較弱智 直接放碼吧 1 簡單迭代 求根 x 4 3x 2 0.include include include include include include using namespace std typedef long long ll const int maxn 501 ...