某叶C语言学习上重大的一步——一元三次方程求解

这篇博客记录了作者在学习C语言过程中解决一元三次方程的重大步骤。作者通过自学牛顿迭代法,理解并实现了求解一元三次方程的程序。程序设计涉及多个函数,并进行了充分的注释以便于理解和复用。书中给出的方程x^3-5x^2+16x-80=0的一个解x=5,验证了方法的正确性。
摘要由CSDN通过智能技术生成

 目前某叶编的最难的程序了......感觉算是跨越吧,之前最难的是一元二次方程求解,虽然是最“难”的,只是因为最长,但是写起来还是很轻松的

 不过一元三次方程可一点都不轻松,很累,因为没学过一元三次方程解法,所以需要百度,不过在C语言学习的书上找到了解法,要用牛顿迭代法求......

  百度娘处充电,勉勉强强算是能看懂牛顿迭代法了,可能根本没看懂,不过至少知道怎么算了

  解法思路:

  先把求与X轴交点坐标公式放着免得忘记了

  x= x1f(x2)-x2f(x1)/f(x2)-f(x1)

  之后比较x1的y1值和x2的y2值,如果两个为异号,那么两个x之间一定有方程的根

  如果同号,那么继续输入直到异号为止

  这个时候用求交点坐标公式求出交点坐标x,它的y值同样代入求出

  再次比较y与y1值,如果异号那么x与x1之间必有方程根

  如果同号那么x与x2之间必有方程根

 循环以上直到y的绝对值小于一个非常小的数,也就近似为0的时候,输出x值既为方程根......

 理好了解法思路就不怕了,因为这个程序的关键就是我没学过解法,现在解法清楚了就开始编了

  写了很多的函数,对我来说很复杂,所以注释比较多,省的以后自己都看不懂了......

 

  书上给的例子方程式x^3-5x^2+16x-80=0给出的一个解x=5,图2反应出来了......

 

#include <stdio.h>
#include <math.h>
#include <conio.h>
float a,b,c,d; //定义外部变量,使全局可以调用
float f(float x) //x函数
{
      floaty;
      y=a*x*x*x+b*x*x+c*x+d;
      returny;
}

float xpoint(float x1,float x2) //求弦与x轴交点坐标
{
      floaty;
      y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
      returny;
}

float root(float x1,float x2) //求根函数
{
      floatx,y,y1;
      y1=f(x1);//y1为x1纵坐标
      do
      {
            x=xpoint(x1,x2); //求x1与x2之间弦与x轴交点赋值于x
            y=f(x); //代入方程中求得y
            if(y*y1>0) //判断y与y1是否同号
            {
                  x1=x;
                  y1=y;
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值