線性方程求根

2021-08-28 17:43:04 字數 1368 閱讀 9996

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