c语言求解一元三次方程(二分法和公式法)
一、二分法
1.二分法概念:二分法,又称分半法,是一种方程式根的近似值求法。对于区间[m,n]上连续不断且f(m)*f(n)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫做二分法(bisection)。
2.二分法思路:
(1)求已知函数f(x)=0的根,先找一个区间[m,n],使得f(m)*f(n)<0,即f(m)与f(n)异号,根据介值定理,这个区间内一定包含着方程式的根。
(2)求该区间的中点i=(m+n)/2,并找出f(i)的值。
(3)若f(i)与f(m)同号,即f(m)*f(i)>0,则取新的区间[i,n],否则取[m,i]。
(4)重复第二步和第三步,直到得到理想的精确度为止。
3.以下为二分法解题的代码(用codeblocks可运行)
#include<stdio.h>
#include<math.h>
int main()
{double m,n;double i,sum;double eps=1e-6;//eps是精度控制,此处为10^-6,表示无限小double a,b,c,d;double f1,f2;printf("请输入一元三次方程标准形式a*x^3+b*x^2+c*x+d的系数a b c d:\n");scanf("%lf%lf%lf%lf",&a,&b,&c,&d);printf("请输入取值区间:\n");scanf("%lf%lf",&m,&n);//注意abcdmn都是%lf而不是%df1=a*pow(m,3)+b*pow(m,2)+c*m+d;//pow(x,y)=x^y,幂函数f2=a*pow(n,3)+b*pow(n,2)+c*n+d;//判断f1*f2<0是主要代码if(f1*f2<0){while(fabs(m-n)>eps){i=(m+n)/2;sum=a*pow(i,3)+b*pow(i,2)+c*i+d;if(fabs(sum)<eps)//如果函数f(i)的绝对值|sum|小于无限小{printf("方程的一个近似解为x*=%lf\n",i);break;}else if(f1*sum<0){n=i;}else if(f2*sum<0){m=i;}}}//如果刚好区间取值为方程解else if(f1*f2==0){if(f1==0){ printf("方程的一个解为x*=%lf\n",m);}if(f2==0){ printf("方程的一个解为x*=%lf\n",n);}}else{ printf("方程在该区间内无解!\n");}return 0;
}
4.运行结果如下:
参考文章:
https://jingyan.baidu.com/article/597a06438def54312a524376.html
https://blog.csdn.net/Xue_fabulous/article/details/105125596
二、公式法
参见小小小罗成的文章https://blog.csdn.net/weixin_44889344/article/details/108700037
c语言求解一元三次方程(二分法和公式法)相关推荐
- 基于C语言使用卡尔丹公式法求解一元三次方程
求根公式的推导 这里直接引用网络上的一般公式 ,如下图. 在C语言中的实现 #include<stdio.h> #include<math.h> #include<com ...
- C# 盛金公式 求解一元三次方程
class dd2{private static readonly double dsr3 = Math.Sqrt(3);// <summary>/// 盛金公式求解一元三次方程,ax^3 ...
- 弦截法c语言程序,用弦截法求解一元三次方程的根(利用c语言实现)
用弦截法求解一元三次方程的根(利用c语言实现)0 特别v2013.09.24浏览296次分享举报 #include #include float f(x) { float a,b,c,d; float ...
- 求解一元三次方程(c语言)
求解一元三次方程 描述 格式 样例 题解及注释 描述 格式 样例 题解及注释 是数学的最小二分法 #include <stdio.h> #include <math.h> #i ...
- C语言笔记 | 一元三次方程
文章目录 0x00 前言 0x01 问题分析 0x02 代码设计 0x03 完整代码 0x04 运行效果 0x05 参考文献 0x06 总结 0x00 前言 在 1545 年,意大利学者卡丹所写的&l ...
- c语言公式法求解一元三次方程
#include<stdio.h> #include<math.h> int main() {float a,b,c,d,x1,x2,x3,p,q,i,w,s1,s2,s3,X ...
- 用盛金公式求解一元三次方程
解一元三次方程一般用盛金公式求解,算法高效且求出来的解精确. 百度百科关于盛金公式有如下解释: 盛金公式 Shengjin's Formulas 一元三次方程aX^3+bX^2+cX+d=0, ...
- 盛金公式 C++(求解一元三次方程的求根公式)
有形如:a x^3 + b x^2 + c x + d = ax3+bx2+cx+d=0 这样的一个一元三次方程. 给出该方程中各项的系数(a,b,c,da,b,c,d 均为实数),并约定该方程存在三 ...
- 求解一元三次方程的一个实数解
求解已知一元三次方程的一个实数解 上机内容:C++ 上机目的: 编程序求解方程2x3-5*x2+3x-6=0的1个实数根,要求精确到0.00001 已知f(x)=2x3-5*x2+3x-6 在> ...
最新文章
- richeditctrl 选中ole图片 拖拽 空白_高质量的图片素材,碾压度娘几条街......
- 安卓手机充电慢_3.0适用苹果安卓手机充电器头
- 为tornado自定义session
- requestLayout() improperly called by 出现后的解决方法
- clientX、offsetX、screenX、pageX的区别
- 中望3D 2021 插入基准面 - 三点法
- android用户界面组件都是放置在,Android开发工程师第十章 节 用户界面高级组件.ppt...
- 采集工具助力企业拓客,让你的业务快速扩张
- 魔兽世界称全球玩家达1150万
- Oracle数据库练习题及答案大全(包含数据库脚本)
- java背单词页面_简易Web背单词软件 #01# 当前功能
- 两个字符串中最长公共单词 C语言
- python中从键盘输入五个单词输出以元音字母开头的单词_Python程序设计入门——第五周作业...
- 在CentOS7下的OpenCV环境搭建与基于C++的人脸辨认(Face Recognition)参考指南
- 大神手把手教源码阅读的方法、误区以及三种境界
- Cont. TF-IDF (BigData Data Mining)
- 测试笔记之测试用例模板
- 2022年信息与通信工程保研夏令营(清华/上交/自所/复旦/浙大/科大/哈深/北理/西交)
- matlab 聚类分析 画出聚类树,plot单独画出pheatmap返回的聚类结果(聚类树)
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte解决办法