C++實現(xiàn)二分法求連續(xù)一元函數(shù)根
更新時間:2020年06月16日 17:09:47 作者:Alex山南水北
這篇文章主要為大家詳細介紹了C++實現(xiàn)二分法求連續(xù)一元函數(shù)根,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C++實現(xiàn)二分法求連續(xù)一元函數(shù)根的具體代碼,供大家參考,具體內(nèi)容如下
設計一個用二分法求連續(xù)一元函數(shù)根的通用函數(shù)solve
此函數(shù)有三個參數(shù):
- 第一個是函數(shù)指針,指向所要求根的連續(xù)函數(shù)
- 第二、三個參數(shù)指出根的區(qū)間,且確保函數(shù)在區(qū)間的兩個端點異號
函數(shù)的返回值為求得的解
要求編寫main函數(shù)如下:
double fun(double x) { double y; y=4*pow(x,3)-6*pow(x,2)+3*x-2; return y; } int main() { cout<<"4*x^3-6*x^2+3*x-2=0在區(qū)間(1,2)的根為 x="<<solve(fun,1,2); return 0; }
C++實現(xiàn):
#include <iostream> #include <cmath> using namespace std; double solve(double (*fun)(double x), double a, double b); double fun(double x); int main() { cout << "4*x^3-6*x^2+3*x-2=0在區(qū)間(1,2)的根為 x=" << solve(fun, 1, 2); return 0; } double solve(double (*fun)(double x), double a, double b) { double i = b - a; double c = (a + b) / 2; while (i > 0.0000001) { i = b - a; if (fun(c) == 0)return c; if (fun(c) * fun(a) < 0) { b = c; c = (a + b) / 2; } else { a = c; c = (a + b) / 2; } } return c; } double fun(double x) { double y; y = 4 * pow(x, 3) - 6 * pow(x, 2) + 3 * x - 2; return y; }
總結(jié):
- 函數(shù)與指針的結(jié)合
- 注意返回的類型與要求
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C語言用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán)
這篇文章主要為大家詳細介紹了C語言用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10