C++實(shí)現(xiàn)二分法求連續(xù)一元函數(shù)根
本文實(shí)例為大家分享了C++實(shí)現(xiàn)二分法求連續(xù)一元函數(shù)根的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)一個用二分法求連續(xù)一元函數(shù)根的通用函數(shù)solve
此函數(shù)有三個參數(shù):
- 第一個是函數(shù)指針,指向所要求根的連續(xù)函數(shù)
- 第二、三個參數(shù)指出根的區(qū)間,且確保函數(shù)在區(qū)間的兩個端點(diǎn)異號
函數(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++實(shí)現(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++?RAII在HotSpot?VM中的重要應(yīng)用解析
RAII技術(shù)被認(rèn)為是C++中管理資源的最佳方法,進(jìn)一步引申,使用RAII技術(shù)也可以實(shí)現(xiàn)安全、簡潔的狀態(tài)管理,編寫出優(yōu)雅的異常安全的代碼,這篇文章主要介紹了C++?RAII在HotSpot?VM中的重要應(yīng)用,需要的朋友可以參考下2023-09-09C++計(jì)算ICMP頭的校驗(yàn)和實(shí)例
這篇文章主要介紹了C++計(jì)算ICMP頭的校驗(yàn)和的方法,代碼簡單實(shí)用,對于校驗(yàn)ICMP報(bào)文來說有不錯的實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10C語言用循環(huán)單鏈表實(shí)現(xiàn)約瑟夫環(huán)
這篇文章主要為大家詳細(xì)介紹了C語言用循環(huán)單鏈表實(shí)現(xiàn)約瑟夫環(huán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10