牛顿迭代法解一元三次方程
题目描述
有形如:ax^3+bx^2+cx^1+dx^0=0ax3+bx2+cx1+dx0=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,da,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100−100至100100之间),且根与根之差的绝对值\ge 1≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后22位。
提示:记方程f(x)=0f(x)=0,若存在22个数x_1x1和x_2x2,且x_1<x_2x1<x2,f(x_1) \times f(x_2)<0f(x1)×f(x2)<0,则在(x_1,x_2)(x1,x2)之间一定有一个根。
输入输出格式
输入格式:
一行,3个实数A,B,C,D。
输入格式:
一行,3个实根,并精确到小数点后22位。
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;double a, b, c, d;double fun(double x)
{double res = x*(x * (a * x + b) + c) + d;return res;}double daofun(double x)//导数
{double res = 3*a*x*x + 2 * b * x + c;return res;
}double solve(double x)//牛顿迭代
{double x0;double x1 = x;do{x0 = x1;x1 = x0 - fun(x0)/daofun(x0);}while(fabs(x1 - x0) >= 1e-6);return x1;}int main()
{cin>>a>>b>>c>>d;for(int i = -100; i <= 100; i++){double left = i;double right = i + 1;//lef和right选择长度为1的区间if(fun (left ) == 0){printf("%.2f ", left);}else if(fun(left ) * fun( right) < 0){double jie = solve(right);//迭代的初始点从右端开始printf("%.2f ", jie);}}//system("pause");
}
牛顿迭代法解一元三次方程相关推荐
- python迭代法求解方程_第一部分:趣味算法入门;第六题牛顿迭代法求一元三次方程的根...
100个不同类型的python语言趣味编程题 在求解的过程中培养编程兴趣,拓展编程思维,提高编程能力. 第一部分:趣味算法入门:第六题SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键 ...
- 迭代法求一元三次方程
迭代法求一元三次方程 简介:本文讲解如何使用迭代法来解,一元三次方程. 题目: 设计精度函数: #include<iostream> #include<cmath> using ...
- C++实现牛顿迭代法求一元二次方程
牛顿迭代法定义如下(来自百度百科): 用牛顿迭代法小试牛刀用来求解一元二次方程的根(工程下载地址[注:不好意思,下载题目写成了二元一次方程,见谅.],release下的应用程序可以直接运行),代码如下 ...
- 问题三十七:C++怎么解一元四次方程?(2)——怎么解一元三次方程
37.2 怎么解一元三次方程? 用"盛金公式"求解: ----------------------------------------------main.cpp -------- ...
- 盛金公式解一元三次方程_一元三次方程解法(卡尔丹公式法盛金公式法)
卡尔丹公式法 特殊型一元三次方程 X^3+pX+q=0 (p.q∈R) 判别式Δ=(q/2)2+(p/3)3 卡尔丹公式 X1=(Y1)(1/3)+(Y2)(1/3) X2= (Y1)(1/3)ω+( ...
- python牛顿法解非线性方程组_用牛顿迭代法解非线性方程组
题目: 用牛顿迭代法解非线性方程组 有两个非线性方程,未知数是x1,x2: (15x1+10x2)/[(40-30x1-10x2)^2×(15-15x1)]=5e-4; (15x1+10x2)/[(4 ...
- 解一元三次方程方程问题细节探讨
解一元三次方程 虽然我是一个新手,按"规矩"应该要经常在博客里面把自己的错误都写出来做个总结,但是我比较保守,总是觉得博客是一个社交平台,一些相对不太成熟的东西还是写个word文档 ...
- matlab 一元方程程序,用牛顿方法解一元非线性方程的根(Matlab实现)
题目:用牛顿法求方程x-cos(x)=0的实根(精确到1E-6). (1)要求用函数调用. (2)进一步研究和弦截法作比较. 算法分析: (1) 此题是利用牛顿方法解一元非线性方程的根.( ...
- 盛金公式解一元三次方程_【国际数学竞赛】高次方程求根
对于一元二次方程 ,我们由求根公式可得: . 对于一元三次方程 ,我们有 卡尔丹公式法和盛金公式法.不过公式比较冗长.不易计算,但我们还是有方法计算的,那么如果是一元四次.一元五次甚至更高呢? 遇到高 ...
最新文章
- 用C语言解“超速判断”题
- Linux里设置环境变量的方法(export PATH)
- 美团外卖商家端视频探索之旅
- 路由器启动后如何定位IOS?
- 了解systemctl和chkconfig的服务管理工具
- mysql调优的一些方面
- c .net ajax,Asp.net mvc 2中使用Ajax的三种方式
- LSA类型讲解——LSA-1【1类LSA——Router LSA】详解
- 中国风喜庆传统新年元旦海报PSD分层模板
- DBNull与Null的区别
- Windows上用VSCode链接矩池云的时候遇到的坑
- 语音信号处理基础(五)——语音分帧与加窗
- Mobileye上演IPO生死时速
- ODOO12 自定义销售报价单样式
- 华盛酒店系统客户端连不上服务器,华盛酒店管理系统-客房管理系统-房务手册.pdf...
- 施耐德控制器维修伺服驱动器维修C400A8
- LEADTOOLS 文档 SDK,创建以下任何对象
- NOIP2016 暑期培训 D6
- 如何一条命令查询笔记本电池损耗情况-生成报告
- 重装win10系统 远程控制TeamViewer——深度学习菜鸡入门(2)