C++實(shí)現(xiàn)二分法求連續(xù)一元函數(shù)根
本文實(shí)例為大家分享了C++實(shí)現(xiàn)二分法求連續(xù)一元函數(shù)根的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)一個(gè)用二分法求連續(xù)一元函數(shù)根的通用函數(shù)solve
此函數(shù)有三個(gè)參數(shù):
- 第一個(gè)是函數(shù)指針,指向所要求根的連續(xù)函數(shù)
- 第二、三個(gè)參數(shù)指出根的區(qū)間,且確保函數(shù)在區(qū)間的兩個(gè)端點(diǎn)異號(hào)
函數(shù)的返回值為求得的解
要求編寫(xiě)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é)合
- 注意返回的類(lèi)型與要求
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言小游戲之簡(jiǎn)易版三子棋(棋盤(pán)可自由擴(kuò)展)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)三子棋游戲,還可以自由擴(kuò)展棋盤(pán)大小,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
C++實(shí)現(xiàn)Dijkstra(迪杰斯特拉)算法
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)Dijkstra(迪杰斯特拉)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
C語(yǔ)言signed關(guān)鍵字的詳細(xì)使用
這篇文章主要介紹了C語(yǔ)言signed關(guān)鍵字的詳細(xì)使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
的相關(guān)資料
C++獲取字符串長(zhǎng)度的幾個(gè)函數(shù)方式
這篇文章主要介紹了C++獲取字符串長(zhǎng)度的幾個(gè)函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12

