精华内容
下载资源
问答
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#includestruct num_list /*链表表示实数列*/{ double num;struct num_list *next;};void insert(struct num_list *p,double x) /*向链表中加入新的成员*/{ ...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    #include

    #include

    struct num_list   /*用链表表示实数列*/

    { double num;

    struct num_list *next;

    };

    void insert(struct num_list *p,double x)   /*向链表中加入新的成员*/

    { struct num_list *q;

    q=(struct num_list*)malloc(sizeof(struct num_list));

    q->next=p->next;

    q->num=x;

    p->next=q;

    };

    void show(struct num_list *h) /*显示链表中的成员*/

    {   struct num_list *p;

    p=h->next;

    while(p!=NULL)

    { printf("%g\t",p->num);

    p=p->next;

    }

    };

    #define TX 0.000000001   /*设置精度控制及搜索步长的相对值*/

    #define TY 0.000000001

    #define H   0.00001

    struct num_list *binserchroot(double (*f)(double),double y,double a,double b)

    { double x0,x1,x;

    double tx,ty,h;

    struct num_list *p;

    tx=(fabs(a-b)+1)*TX;   /*设置精度控制及搜索步长的绝对值*/

    ty=TY*TY;

    h=(fabs(a-b)+1)*H;

    p=(struct num_list*)malloc(sizeof(struct num_list));

    if(a>b)

    { x=a;

    a=b;

    b=x;

    }

    if(fabs(f(a)-y)

    x=a;

    while(x

    { if(fabs(f(x+h)-y)

    if((f(x)-y)*(f(x+h)-y)<0)

    { x0=x;

    x1=x+h;

    while(x1-x0>tx)

    { x=(x0+x1)/2;

    if(fabs(f(x)-y)

    { insert(p,x);

    break;

    }

    if((f(x)-y)*(f(x0)-y)>0) x0=x;

    else x1=x;

    }

    if(fabs(f(x)-y)>=ty) insert(p,x);

    }

    x=x+h;

    }

    return p;

    };

    main()

    { struct num_list *p;

    p=binserchroot(cos,-0.999999,0,20);

    printf("cos(x)=-0.999999\tx=?\n");

    show(p);

    p=binserchroot(cos,-1,0,20);

    printf("\ncos(x)=-1\tx=?\n");

    show(p);

    printf("\nsin(x)=0\tx=?\n");

    p=binserchroot(sin,0,0,20);

    show(p);

    return 0 ;

    }

    展开全文
  • c语言 用二分法求方程在(-10 10)之间的 2x 3-4x 2+3x-6 0
                   

    用二分法求方程在(-10,10)之间的根:2x^3-4x^2+3x-6=0.

    解:x1<=x0=(x1+x2)/2<=x2

    程序:

    #include<stdio.h>

    #include<math.h>

    int main()

    {

     float x0,x1,x2,fx0,fx1,fx2;

     do

     {

      printf("输入x1,x2的值:");

      scanf("%f,%f", &x1, &x2);

      fx1 = 2*x1*x1*x1 - 4 * x1*x1 + 3 * x1 - 6;

      fx2 = 2 *x2*x2*x2 - 4 *x2*x2 + 3 * x2 - 6;

     } while (fx1*fx2>0);

     do

     {

      x0 = (x1 + x2)/2;

      fx0 = 2 * x0*x0*x0 - 4 * x0*x0 + 3 * x0 - 6;

      if (fx0*fx1 < 0)

      {

       x2 = x0;

       fx2 = fx0;

      }

      else

      {

       x1 = x0;

       fx1 = fx0;

      }

     } while (fabs(fx0)>= 1e-5);

     printf("x=%5.2f\n",x0);

     return 0;

    }

    结果:

    输入x1,x2的值:-10,15

    x= 2.00

    请按任意键继续. . .


    本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1742877

               
    展开全文
  • 二分法计算函数f(x)=x*x*x*x+2*x*x*x-x-1;本程序在turbo c或c++下编译#include "stdio.h"#include float f(float x){float y;y=x*x*x*x+2*x*x*x-x-1;return y;}void main(){float a=0,b=0,h,y,x;int k,n0;printf(...

    二分法计算函数f(x)=x*x*x*x+2*x*x*x-x-1;

    本程序在turbo c或c++下编译

    #include "stdio.h"

    #include

    float f(float x)

    {float y;

    y=x*x*x*x+2*x*x*x-x-1;

    return y;

    }

    void main()

    {float a=0,b=0,h,y,x;

    int k,n0;

    printf("please input qujian a and b");

    scanf("%f%f%d",&a,&b,&n0); /*输入含根区间a,b,循环次数n0 */

    for(k=0;k<=n0;k++)

    { x=(a+b)/2;

    h=(b-a)/2;

    y=f(x);

    if(h<10e-6||fabs(y)<10e-6)

    { printf("k=%d,x=%f,y=%f",k,x,y);

    break; } /*输出分半次数k,函数的根x,及x对应的函数值.*/

    else

    {if(f(a)*f(x)<0)

    b=x;

    else a=x;

    }

    }

    }

    展开全文
  • 题目:用二分法求方程在(-10,10)之间的:2x^3-4x^2+3x-6=0. 第一张图: [img=https://img-bbs.csdn.net/upload/202003/08/1583669622_83208.png][/img] 第二张图: [img=...
  • C语言怎么用二分法求一元三次方程的。啊 能不能把程序打出来一下谢了!!!
  • C语言用二分法求解方程的 用C语言编译的5次方程代码简明
  • C语言编程一元N次方程二分法求根,例子是的HS1101湿度传感器一元三次方程调试
  • 二分法求函数的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个r,即f®=0。 二分法的步骤为: 检查区间长度,如果小于给定阈值,则停止,输出区间中点...

    7-18 二分法求多项式单根

    二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0。

    二分法的步骤为:

    检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则
    如果f(a)f(b)<0,则计算中点的值f((a+b)/2);
    如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则
    如果f((a+b)/2)与f(a)同号,则说明根在区间[(a+b)/2,b],令a=(a+b)/2,重复循环;
    如果f((a+b)/2)与f(b)同号,则说明根在区间[a,(a+b)/2],令b=(a+b)/2,重复循环。
    本题目要求编写程序,计算给定3阶多项式f(x)=a3x**3+a2x**2+a1*x+a0在给定区间[a,b]内的根。

    输入格式:
    输入在第1行中顺序给出多项式的4个系数a3、a2、a1、a0,在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。

    输出格式:
    在一行中输出该多项式在该区间内的根,精确到小数点后2位。

    输入样例:

    3 -1 -3 1
    -0.5 0.5

    输出样例:

    0.33

    思路

    这道题利用定义函数来实现重复循环这一特点,在利用多各if语句来实现二分法的算法。还需注意f(a)=0和f(b)=0时的根。

    代码

    #include <stdio.h>
    int main()
    {
        double a3,a2,a1,a0;
        scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);
        double a,b;
        scanf("%lf %lf",&a,&b);
        //定义f(x)函数
        double f(double x)
        {
            return a3*pow(x,3)+a2*pow(x,2)+a1*x+a0;
        }
        //定义二分法g(a,b)函数
        double g(double a,double b)
        {
            //当a,b区间小于阈值时
            if((b-a)<0.001) 
                printf("%.2f",((a+b)/2));
             //当a,b区间大于阈值时   
            else if(f(a)*f(b)<0){
            	//如果f((a+b)/2)正好为0
                if(f((a+b)/2) == 0)
                    printf("%.2f",((a+b)/2));
                else{
                    if(f((a+b)/2)*f(a)>0){
                        a = (a+b)/2;
                        g(a,b);
                        }
                    else if(f((a+b)/2)*f(b)>0){
                        b = (a+b)/2;
                        g(a,b);
                    }
                }
            }
            //特殊情况,当f(a)=0
            else if(f(a)==0)
                printf("%.2f",a);
            //特殊情况,当f(b)=0
            else if(f(b)==0)
                printf("%.2f",b);
        }
        
        if(a<b)
            g(a,b);
        return 0;
    }
    
    
    展开全文
  • 二分法求方程--C语言

    千次阅读 2017-07-19 20:22:09
    1088: 习题5-15 二分法求...用二分法求下面方程在区间(a,b)之间的: 2x3-4x2+3x-6=0 区间端点a, b由键盘输入,确保输入区间内有。 计算至误差小于10-6为止。 程序中,浮点型数据请定义为双精度double类型。 提
  • 用二分法求方程 2x^3 - 4x^2 + 3x - 6 = 0在(-10, 10)之间的
  • 用二分法求方程在(-10,10)之间的:2x^3-4x^2+3x-6=0.解:x1程序:#include#includeint main(){ float x0,x1,x2,fx0,fx1,fx2; do { printf("输入x1,x2的值:"); scanf("%f,%f", &x1, &x2); fx1 = 2*x1*x1*x1 - ...
  • 一:迭代法 x=√a。平方根的迭代公式为:X(n+1)=(Xn+a/Xn) /2。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { ...
  • 修改方程,可达到任意曲线方程的目的,此处验证了一个.../*输入区间,“,”隔开,此区间上应包含一个,而且只包含一个*/ float f(float x) { float y; y=x*x-2;/*修改方程,可达到任意曲线方程...
  • (1)通过采用牛顿迭代法、弦截法和二分法求根的程序设计,使学生更加系统地理解和掌握C语言函数间参数传递方法、数组和指针的应用等编程技巧。培养学生综合利用C语言进行科学计算,使学生将所学知识转化为分析和...
  • 1.牛顿迭代法该方程在1.5附近的:2X^3-4X^2+3X-6=0 #include #include double func(double x) //函数 {return 2*x*x*x-4*x*x+3*x-6.0;} double func1(double x) //导函数 {return 6*x*x-8*x+3;} double ...
  • 编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实,要求计算精确到小数点后七位数字为止,并将出的近似结果与理论值2cos20 相比较。设二分法的初始迭代区间为 [1, 3],牛顿迭代法的...
  • //二分法! /* ======================================...题目:用二分法求解方程3x^3-2x^2-16=0的近似解。 ========================================================= */ #include #include double hs
  • 用二分法求下面方程(-10,10)的C语言) 题目要求:如标题,方程为:2xˆ3-4xˆ2+3x-6=0 #include <stdio.h> #include <math.h> int main() { double x,fx,fa,fb,a=-10,b=10; fa=2*a*a*a-4*a*a+3...
  • 练习题:用二分法求方程在(-10,10)范围内的:y=x^3+6x^2+3x-6,收敛精度为10^-5。二分法好像只能计算出一个零点,就想着用循环的方式,把第一次循环得到的x=0.7465代替b的位置,再进行二分法。但是好像不太行,...
  • 牛顿迭代法和二分法求方程的 今天发现百度知道有人问这个问题,所以就信手帮他做了一下题目,总共两道题,使用的是C语言解决的。 题目: 1.请设计程序,牛顿迭代法求f(x)=cos(x)-x的近似...
  • 用c语言编写如下程序:二分法求方程f(x)=x^2-x-1=0在区间[1,2]的正,精确到1e-3。#include&lt;stdio.h&gt; #include&lt;math.h&gt; void main() { float Result(float m); //函数声明 float a...
  • 用二分法求下面方程在(-10,10)之间的:2x^3-4x^2+3x-6=0 【C语言】 #include #include int main() { double x1, x2, x0, fx1,fx0,fx2; x1 = -10, x2 = 10; do { printf("Please enter x1,x2:"); ...
  • 二分法c语言

    2017-05-14 19:00:27
    用二分法求方程exp(-x)-sin(pi*x/2)=0在区间 [0,1]上的,要求误差不超过2^(-5)。 实验代码: #include #include #define pi 3.14 float f(float x) {  return exp(-x)-sin(pi*x/2); } void main...
  • 计算机数值方法之方程求根C语言

    千次阅读 2018-08-03 15:49:37
     二分法不断逼近方程的解在之前的学习便有涉及,所以难度不大,和数值计算相关的知识便是,如何限制精度,二分法的误差小于(b-a)/2n来满足精度的要求。  双点割线法是割线与x轴交点的横坐标作为x的新近似...
  • 题目:用二分法求f(x)=x^3+x^2-3*x-3=0的正(精度要求精确到1E-3)。 (1)分析结果的正确性。 (2)进一步考虑如何求出所有。 算法分析:  (1)分析题目要求,由于方程是一元三次方程。所以方程应该...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

c语言用二分法求根

c语言 订阅