C++实现二分法求连续一元函数根
本文实例为大家分享了C++实现二分法求连续一元函数根的具体代码,供大家参考,具体内容如下
设计一个用二分法求连续一元函数根的通用函数solve
此函数有三个参数:
- 第一个是函数指针,指向所要求根的连续函数
- 第二、三个参数指出根的区间,且确保函数在区间的两个端点异号
函数的返回值为求得的解
要求编写main函数如下:
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在区间(1,2)的根为 x="<<solve(fun,1,2); return 0; }
C++实现:
#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在区间(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; }
总结:
- 函数与指针的结合
- 注意返回的类型与要求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
C++通过自定义函数求一元二次方程的根
本文实例讲述了C++通过自定义函数求一元二次方程的根.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 24 日 * 版 本 号:v1.0 * 输入描述: * 问题描述: 求一元二次方程的根.定义函数 * 程序输出: * 问题分析:略 * 算法设计:略 */ #include<iostream> #include<cmath> using namespace std; double x,x1,x2,t; //定义全局变量 void
-
C++二分法在数组中查找关键字的方法
本文实例讲述了C++二分法在数组中查找关键字的方法.分享给大家供大家参考.具体如下: /* 此程序演示了二分法查找算法(针对按从小到大排列的数组)的实现. */ #include <iostream> using namespace std; /* 功能: 实现数组的二分法查找(只算法只适合按从小到大排列的数组) 返回值:关键字在数组中的下标, 返回-1表示未找到 a[]: 要搜索的数组 len: 数组元素个数 key: 要查找的关键字 */ int binSearch(int a[], in
-
C++实现二分法求连续一元函数根
本文实例为大家分享了C++实现二分法求连续一元函数根的具体代码,供大家参考,具体内容如下 设计一个用二分法求连续一元函数根的通用函数solve 此函数有三个参数: 第一个是函数指针,指向所要求根的连续函数 第二.三个参数指出根的区间,且确保函数在区间的两个端点异号 函数的返回值为求得的解 要求编写main函数如下: double fun(double x) { double y; y=4*pow(x,3)-6*pow(x,2)+3*x-2; return y; } int main() { co
-
C++实现二分法求方程近似解
二分法是一种求解方程近似根的方法.对于一个函数 f(x)f(x),使用二分法求 f(x)f(x) 近似解的时候,我们先设定一个迭代区间(在这个题目上,我们之后给出了的两个初值决定的区间 [-20,20]),区间两端自变量 x 的值对应的 f(x) 值是异号的,之后我们会计算出两端 x 的中点位置 x' 所对应的 f(x') ,然后更新我们的迭代区间,确保对应的迭代区间的两端 x 的值对应的 f(x) 值还会是异号的. 重复这个过程直到我们某一次中点值 x' 对应的 f(x') < f(x′)<
-
如何求连续几个数之和的最大值
给定一组数,有正有负,求连续的几个数之和的最大值?并求出是从第几个数开始,第几个数结束?如果有多个序列可组成相同的最大值,则选取最开始的一个序列.(注:这两天看<编程之美>,发现2.14节,求数组的子数组之和的最大值,跟这个题十分相似,但是没有要求求出开始喝结束的位置,只要求求出最大值,解题思路跟下面的代码相似,但只用了两个变量,没有用数组,做到时间复杂度O(n),空间复杂度O(1))用程序设计实现.我实现了一种方法,跟大家分享一下,如果朋友你有更好的方法来解决这个问题,希望你能回复,与大家分
-
C语言求连续最大子数组和的方法
本文实例讲述了C语言求连续最大子数组和的方法,是非常实用的技巧.分享给大家供大家参考. 具体实现方法如下: #include <iostream> using namespace std; int array[] = {1, -2, 3, 10, -4, 7, 2, -5}; //int array[] = {-10, -1, -2, -3, -4, -5}; const int size = sizeof array / sizeof *array; int maxSubArray(int
-
PHP实现求连续子数组最大和问题2种解决方法
本文实例讲述了PHP实现求连续子数组最大和问题2种解决方法.分享给大家供大家参考,具体如下: 问题描述 求子数组的最大和 题目描述: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 关于连续子数组最大和这个问题,有两种解法,一种是动态规划 解法如下: function getMaxSubSum($arr){ $curSum = $arr[0]; $maxSum = $arr[0];
-
python实现迭代法求方程组的根过程解析
这篇文章主要介绍了python实现迭代法求方程组的根过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 有方程组如下: 迭代法求解x,python代码如下: import numpy as np import matplotlib.pyplot as plt A = np.array([[8, -3, 2], [4, 11, -1], [6, 3, 12]]) b = np.array([[20, 33, 36]]) # 方法一:消元法求解
-
Python用二分法求平方根的案例
我就废话不多说了,大家还是直接看代码吧~ def sq2(x,e): e = e #误差范围 low= 0 high = max(x,1.0) #处理大于0小于1的数 guess = (low + high) / 2.0 ctr = 1 while abs(guess**2 - x) > e and ctr<= 1000: if guess**2 < x: low = guess else: high = guess guess = (low + high) / 2.0 ctr += 1
-
golang求连续子数组的最大和实例
问题描述: 给定一个数组 array[1, 4, -5, 9, 8, 3, -6],在这个数字中有多个子数组,子数组和最大的应该是:[9, 8, 3],输出20,再比如数组为[1, -2, 3, 10, -4, 7, 2, -5],和最大的子数组为[3, 10, -4, 7, 2],输出18. 代码如下: package main import ( "fmt" ) func getMaxSum(arr []int) int { var sum, maxSum int for i :=
-
二分法求多项式在-10 10间值的实现代码
代码如下所示: 复制代码 代码如下: #include <stdio.h>#include <math.h> int main(){ float x0,x1,x2,f1,f2,f0; //x1,x2求两端值 do { printf("input 2 num:\n"); scanf("%f %f",&x1,&x2); f1=x1*((2*x1-4)*x1+3)-6; f2=x2*((2*x2-4)*x2+3)-6;
-
C语言二分法求解方程根的两种方法
本文实例为大家分享了C语言二分法求解方程根的具体代码,供大家参考,具体内容如下 对于二分法求根,其实和弦截法思想很像,甚至更简单. 原理:先看如下的图 A,B两个点为跟的一个边界,通过一直缩小跟的边界,从而获取跟的值. (1)知道函数(即方程的式子),这个好说,题上都有 (2)循环的输入A,B的横坐标的值,即x1,x2的初值,直到f(x1)与f(x2)的乘积为负数才停止.(必须保证方程的跟在(x1,x2)区间)这样的x1,x2的初值才有意义. (3)令xx=(x1+x2)/2;(即中值),若f(
随机推荐
- dojo学习第二天 ajax异步请求之绑定列表
- 在ASP.NET里得到网站的域名
- 微信开发 网页授权获取用户基本信息
- ajax详解_动力节点Java学院整理
- 在Python中使用列表生成式的教程
- AngularJS 让人爱不释手的八种功能
- asp.net下百度的编码和解码
- C# .Net动态调用webService实现思路及代码
- asp.net 在global中拦截404错误的实现方法
- PHP防止注入攻击实例分析
- js实现两个值相加alert出来精确到指定位
- android中DatePicker和TimePicker的使用方法详解
- mysql中binlog_format模式与配置详细分析
- mysql优化之路----hash索引优化
- 几天洗一次头最健康(中医建议每星期洗三至四次头)
- javascript在firefox下设为首页的代码
- 详解如何在 CentOS 7 中安装或升级最新的内核
- MYSQL插入处理重复键值的几种方法
- Centos7 ftp环境搭建教程详解
- Android中颜色选择器和改变字体颜色的实例教程