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

您所在的位置:网站首页 不定方程求解c语言代码是什么意思 非线性方程C/C++求解(二分法、牛顿法、牛顿下山法、弦截法)

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

2024-07-13 11:01:48| 来源: 网络整理| 查看: 265

Description

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

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

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

参考代码 #include #include #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 NewtonMethod(double x,bool id){ int i=0; printf("-----------------牛顿法-------------------\n"); printf("初始值为%f\n",x); while(fabs(func1(x,id)/func2(x,id))>percise){ x-=func1(x,id)/func2(x,id); i++; printf("迭代次数为:%d,此时x为%f\n",i,x); } printf("最终结果为%f\n",x); } void NewtonDownMethod(double x,bool id){ int i=0; double x1,u=1; printf("---------------牛顿下山法------------------\n"); printf("初始值为%f\n",x); while(fabs(func1(x,id)/func2(x,id))>percise){ u=1; x1=x-u*func1(x,id)/func2(x,id); if(fabs(func1(x1,id))>=fabs(func1(x,id))) u*=0.5; i++; printf("迭代次数为:%d,此时x为%f,x1为%f,u为%f\n",i,x,x1,u); x=x1; } printf("最终结果为%f\n",x); } void SecantMethod(double x,double y,bool id){ int i=0; printf("-----------------弦割法-------------------\n"); while(fabs(func1(x,id)*(y-x)/(func1(y,id)-func1(x,id)))>percise){ x-=func1(x,id)*(y-x)/(func1(y,id)-func1(x,id)); i++; printf("迭代次数为:%d,此时x为%f\n",i,x); } printf("最终结果为%f\n",x); } int main() { dichotomy(0,1,1);dichotomy(1,2,0);//用二分法求两个方程的解 NewtonMethod(0,1);NewtonMethod(2,0);//用牛顿法求两个方程的解 NewtonDownMethod(-32,1);NewtonDownMethod(-11,0);//用牛顿下降法求两个方程的解 SecantMethod(-10,1,1);SecantMethod(-10,1,0);//用弦割法求两个方程的解 return 0; } 优化和改进

重在理解,然后是代码并不难,但需要动手计算一下。同学有写成类,然后传函数指针形参,挺6的。然后可以看一下这篇文章https://blog.csdn.net/wangxiaojun911/article/details/18203333



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭