博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C代码:二分法求三次方程近似根
阅读量:4045 次
发布时间:2019-05-24

本文共 2434 字,大约阅读时间需要 8 分钟。

先来无事,写了一个简单的二分法求三次方程根的 C 程序,主要代码如下:

#include 
#include
//函数声明float resultOfEquation(float a,float b,float c,float d,float e,float key);float dichotomyRoot(float a,float b,float c,float d,float e,float lowerLimit,float upperLimit);int main(int argc, const char * argv[]) { // insert code here... //求方程 2*pow(x, 3) - 4*pow(x, 2) + 3*x - 6 = 0 在 x = 1.5 附近的根 //定义变量 float lowerLimit = 0.0f, upperLimit = 0.0f; float resultFunLowerLimit = 0.0f,resultFunUpperLimit = 0.0f; //提示输入区间 printf("请输入求根区间(用空格隔开):\n"); //判断区间是否合适 do{ resultFunLowerLimit = 0.0f,resultFunUpperLimit = 0.0f; scanf("%f%f",&lowerLimit,&upperLimit); resultFunLowerLimit = resultOfEquation(2,-4,3,-6,0,lowerLimit); resultFunUpperLimit = resultOfEquation(2,-4,3,-6,0,upperLimit); if (resultFunLowerLimit * resultFunUpperLimit > 0) { //提示重新输入区间 printf("区间输入有误,请重新输入(用空格隔开):\n"); continue; } }while(resultFunLowerLimit * resultFunUpperLimit > 0); //调用求根函数求方程根 float root = dichotomyRoot(2, -4, 3, -6, 0, lowerLimit, upperLimit); //打印结果 printf("root = %.2f\n",root); return 0;}//二分法求根 float dichotomyRoot(float a,float b,float c,float d,float e,float lowerLimit,float upperLimit){ //定义变量 float mid = (lowerLimit + upperLimit) / 2; float resultFunLowerLimit = 0.0f; float resultFunUpperLimit = 0.0f; float resultFunMid = 0.0f; //判断下限是否小于上限,否则换位 if (lowerLimit >= upperLimit) { //若下限大于上线,进行交换 lowerLimit = lowerLimit + upperLimit; upperLimit = lowerLimit - upperLimit; lowerLimit = lowerLimit - upperLimit; } //计算函数值 //计算函数值放在此处,有重复计算? resultFunLowerLimit = resultOfEquation(2,-4,3,-6,0,lowerLimit); resultFunUpperLimit = resultOfEquation(2,-4,3,-6,0,upperLimit); //循环求根 do{ mid = (lowerLimit + upperLimit) / 2; resultFunMid = resultOfEquation(2,-4,3,-6,0,mid); if (resultFunLowerLimit * resultFunMid < 0) { upperLimit = mid; resultFunUpperLimit = resultFunMid; }else{ lowerLimit = mid; resultFunLowerLimit = resultFunMid; } }while (fabs(resultFunMid)>1e-5); return mid; }//计算函数值的函数float resultOfEquation(float a,float b,float c,float d,float e,float key){ return a*pow(key, 3) + b*pow(key, 2) + c*key + d + e;}

转载地址:http://wbwci.baihongyu.com/

你可能感兴趣的文章
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>