三种初步简易的方法求解数值问题 of C++
1. “二分法解方程”
在二分法中,从区间[a,b]开始,用函数值f(a)与f(b)拥有相反的符号。如果f在这个区间连续,则f的图像至少在x=a,x=b之间穿越x轴一次,因此方程f(x)=0在[a,b]之间至少有一个解,通过逐步对[a,b]区间进行二分处理,选取在那一部分改变了符号,逐步缩小方程解的更小区域。
/************************************************************************/
/*二分法 解方程 */
/************************************************************************/
double fun001(double x);
int main()
{
double acurace;
cout << "请输入精度:eg(0.00001)";
cin >> acurace;
double left, right;
do
{
cout << "请输入有效的预期值的边界:";
cin >> left >> right;
} while (fun001(left) * fun001(right) >= 0.0);
double width = right - left,
midPt,funMidVal; //求解
while (width/ > acurace)
{
midPt = (left + right) / 2.0;
funMidVal = fun001(midPt);
if (fun001(left) * funMidVal < 0.0)
{
right = midPt;
}
else
{
left = midPt;
}
width /= 2.0;
} cout << "二分法获取的方程的值是:" << midPt << endl; }
还可以使用Newton-Raphson(牛顿-拉弗森)方法,对方程问题进行求解;
2.“逼近区域的面积”求数值积分问题
一个常用的方法是,使用n-1个等距离的点x1、x2··· xn-1将区间[a,b]划分为n个等间隔的子区域,每个子区域的匡杜dealtaX = (b-a)/n。则对于曲线上的相应的点,使用线段链接相邻的点行程n个梯形。
这些梯形的面积之和约定于曲线f(x)在区间[a,b]下的积分,使用梯形面积公式可以计算第i个梯形的面积为:((f(xi-1) + f(xi))* dealtaX)/2;
将这些值相加整理的:dealtaX * (( y0 + yn)/2 + y1 + y2 + y3 ... + yn-1);
/************************************************************************/
/* 近似积分梯形法求解积分问题 */
/************************************************************************/ double funJiFen(double x);
int main()
{
int n;
cout << "enter 需要对所积分的曲线划分成多少份 (n)";
cin >> n;
double a,b,deltaX, x,y,sum;
cout << "请输入所要积分的边界:(a)(b)";
cin >> a >> b;
deltaX = (b - a)/n;
sum = ;
x = a;
for (int i = ; i <= n - ; i++)
{
x += deltaX;
y = funJiFen(x);
sum += y;
}
sum = deltaX * ((funJiFen(a) + funJiFen(b))/ + sum);
cout << "在分成" << n << "等分的积分面积"<< sum << endl; }
还可以使用:Simpson方法,这种方法思想是使用“抛物线代替梯形”求取面积;
3. 求解微分方程求解问题
微分方程的定义:包含导数或者微分的方程称为微分方程;
使用Euler(欧拉)方法求解微分方程
给定一阶微分方程:y' = f(x,y);
初始条件:y(x0) = y;
在某个区间[a,b]且a = x0; (1) 选择x的增量dealtaX,(2)对n= 0,1,2,3...完成以下步骤:
(i) 设xn+1 = xn + dealtaX;
(ii) 通过点Pn(xn, yn),斜率为 f(xn,yn)的直线上找到点P(xn+1, yn+1),即求出下一点的横坐标yn+1,可以作为点xn+1在原函数的近似值;
(iii)重复以上操作,知道在特定点即可获取微分方程问题;
还可以利用更精确的方法求解微分方程问题,这里仅仅提供一种最简单的求解思路!
三种初步简易的方法求解数值问题 of C++的更多相关文章
- iOS 三种收起键盘的方法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 【读书笔记】iOS-开发技巧-三种收起键盘的方法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- File类三种得到路径的方法
转: File类三种得到路径的方法 2010年11月29日 20:37:00 ssyan 阅读数:27123 标签: filemicrosoftstringexceptionwindowsunix ...
- 【转】python 三种遍历list的方法
[转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...
- 【Java 线程的深入研究1】Java 提供了三种创建线程的方法
Java 提供了三种创建线程的方法: 通过实现 Runnable 接口: 通过继承 Thread 类本身: 通过 Callable 和 Future 创建线程. 1.通过实现 Runnable 接口来 ...
- Oracle数据库三种标准的备份方法
Oracle数据库的三种标准的备份方法: 1.导出/导入(EXP/IMP). 2.热备份. 3.冷备份. 注释:导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一.导出/导入(Export/Imp ...
- iOS用三种途径实现一方法有多个返回值
以前觉得这种标题有点偏向于理论,实际开发中怎么会有这种诡异的需求,但是真正遇到了这种硬需求时觉得还是有那么点价值的,理论付诸了实践在此也就做了个整理. 以我私下开发中的一处代码为例,本意是希望有这么一 ...
- Java Web开发Tomcat中三种部署项目的方法
第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...
- nodejs Express 4.x req.body req.query req.params 三种获取参数的方法
第一种情况:http://localhost:3000/1,我们可以用req.params.(应该是跟路由有关,待) 第二种情况:http://localhost:3000/?id=1,用req.qu ...
随机推荐
- php 多进程
php 在使用场景中一般是处理web应用,所以多进程使用不适合在web中使用,且php-fpm中pcntl_fork不能使用,所以使用场景是在cgi模式下 一个进程调用pcntl_fork函数后,系统 ...
- Linux惊群效应详解
Linux惊群效应详解(最详细的了吧) linux惊群效应 详细的介绍什么是惊群,惊群在线程和进程中的具体表现,惊群的系统消耗和惊群的处理方法. 1.惊群效应是什么? 惊群效应也有人 ...
- HDU_2112(最短路)
经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬 ...
- How to install VCM 2 Ford IDS 109 software
How to install Ford IDS 109: 1- Install the ids 86 before changing the date to 1 07 2015 (hold the d ...
- 虚拟机安装centos7, 再安装gitlab 简单步骤
先安装Linux centos7(朋友贡献的. Linux官网有下) 我自己用vm安装的. 未出现特殊状况 gitlab的搭建 安装基础包 yum -y install curl policycore ...
- QT学习之路(1):彩票绝对不中模拟器
//============================================//绝对不中,彩票开奖模拟器#include "mainwindow.h"#includ ...
- mfc获取exe的版本信息
CString GetFileVersion(const CString& sTargetFileName){ DWORD nInfoSize = 0, dwHandle = 0; nInfo ...
- Java界面编程—事件的种类
Java处理事件相应的类和监听接口大多位于 awt 包中. 在 java.swing.event 包中有专门用于 swing 组件的事件类和监听接口. awt 事件类继承自 AWTEvent,其超类是 ...
- PhpStorm 不停地 updating indices
问题描述: 环境:PhpStorm 框架: Laravel 5.0, php artisan make:test bar.foo 之后,PhpStorm 一直不停地 Updating indices ...
- centos配置虚拟用户再也不用那么麻烦了
http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users yum install -y vsftpd db4-utils vs ...