【计算方法】试值法与二分法(非线性方程的求解)

本文介绍了计算方法中的试值法和二分法,用于求解非线性方程的根。二分法通过不断取区间的中点逼近根,终止条件包括迭代次数限制和区间大小。试值法则通过割线加速收敛,利用斜率公式求解,同样有迭代次数和区间宽度的终止条件。并给出了两个实际问题的案例和AC代码。
摘要由CSDN通过智能技术生成

一、二分法
对于一个连续函数f(x),若它有根,显然在根的两边会改变符号。假设在区间[a,b]有根,那么应该有f(a)*f(b)≤0;在二分法中,我们只需要找该区间的中点c=(a+b)/2,利用根的两边符号改变去不断取中值,使得点迫近根。
二分法定理这不作过多叙述
在了解大概后,我们还需要知道何时需要终止程序的运行:
终止条件主要取决于这几个方面
1、迭代次数的限制

int n = floor((log(b - a) - log(0.5 * pow(10, -d))) * 1.0 / log(2));

2、当f©=0时或区间[a,b]的大小(b-a)/2小于半个精度

if (c1 == 0 || (b - a) / 2 < 0.5 * pow(10, -d))

二分法例题
【问题描述】如果在240个月内每月付款300美元,使用二分法在利率区间[a,b] 内,求能够满足在这240个月之后使本金和利息的总值达到50万美元的利率值,精确到小数点后第d位。
【输入形式】在屏幕上输入3个数,依次为利率区间左端点值a、右端点值b和精确到小数点后d位。各数间都以一个空格分隔。测试用例的输入满足:b>a>0, 1<=d<=8, d为正整数。若在区间[a, b]内没有根,则输出error。
【输出形式】输出两行数据,第一行为迭代次数,第二行为求得的利率,保留d位小数。
【样例1输入】
0.15 0.16 8
【样例1输出】
20
0.15753931
【样例说明】输入:左端点值为0.15,右端点值为0.16,求得的利率精确到小数点后8位。输出:表示经 20 次迭代,求得满足条件的利率值为 0.15753931。

AC代码:
C++:

/*
 * @Author: your name
 * @Date: 2021-03-04 09:22:52
 * @LastEditTime: 2021-03-04 12:16:20
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \code_formal\course\cal\01_2.cpp
 */
#include <iostream>
#include <iomanip>
#include <fstream>
#include <algorithm>
#include <string.h>
#include <string>
#include <cmath>
#include <map>
#include <vector>
#include <cstdio>
typedef long long int ll;

using namespace std;
double f(double c
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值