非线性方程C/C++求解(二分法、牛顿法、牛顿下山法、弦截法)

Description

分别用(1)二分法;(2)牛顿法;(3)牛顿下山法;(4)弦截法;

计算下列方程的实根:<1> x*x-3*x+2-exp(x)=0;<2> x*x*x-x-1=0

要求:(1)精度为10^-8;(2)输出迭代初值及歌词迭代值和迭代次数,比较方法的优劣

参考代码

#include <cstdio>
#include <cmath>
#define percise 0.000000001

double func1(double v,bool id){//原函数
    if(id) return v*v-3*v+2-exp(v);//方程1 x^2-3*x+2-e^x=0
        else return v*v*v-v-1;//方程2 x^3-x-1=0
}
double func2(double v,bool id){//导数
    if(id) return 2*v-3-exp(v);//方程1的导数
        else return 3*v*v-1;//方程2的导数
}
void dichotomy(double x,double y,bool id){
    double middle=(x+y)/2;
    int i=0;
    printf("-----------------二分法-------------------\n");
    printf("初始值为:左边界点%f,右边界点%f\n",x,y);
    while(fabs(func1(middle,id))>percise){
        func1(middle,id)*func1(x,id)>0?x=middle:y=middle;
        middle=(x+y)/2;
        i++;
        printf("迭代次数为:%d,左边界点%f,右边界点%f\n",i,x,y);
    }
    printf("最终结果为%f\n",middle);
}
void Newt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值