搜索
查看: 1093|回复: 16
打印 上一主题 下一主题

求大神给改进啊!!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-8-24 18:56:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
#include <stdlib.h>
int main()
{       
    double a,b,c,x;
    printf("请输入二次项系数(若输入0,将退出):");
    scanf("%lf",&a);
    if(a<0.0000001&&a>-0.0000001)exit(0);
    printf("请输入一次项:");
    scanf("%lf",&b);
    printf("请输入常数项:");
    scanf("%lf",&c);
        if(b*b-4*a*c<0){
    printf("无解");}
    else
    {
    double d=100000;
    double e=-100000;
    double i;
    i=(e+d)/2;
    x=a*i*i+b*i+c;
    while(x>0){
    e=i;
    }
    while(x<0){
    d=i;}
    if(x<0.0000001&&x>-0.0000001)
    printf("%lf",i);
    }
        system("pause");
        return 0;
}


推荐
发表于 2014-8-25 09:16:32 | 只看该作者
本帖最后由 981013 于 2014-8-25 09:18 编辑

一元二次方程用求根公式做,二分法浪费时间,且只能求出一定范围内的根
求根公式:设二次项系数为a,一次项系数为b,常数项为c,则:
              _______
x=   -b±√b^2-4ac \0\0\0\0\0
\0\0\0\0\02a
注意有两个根





沙发
发表于 2014-8-24 19:33:36 | 只看该作者
解方程吗?
板凳
发表于 2014-8-24 20:55:25 | 只看该作者
为什么要用二分逼近?100000和-100000这两个初始取值也完全没道理
5#
发表于 2014-8-25 15:06:52 | 只看该作者
981013 发表于 2014-8-25 09:16
一元二次方程用求根公式做,二分法浪费时间,且只能求出一定范围内的根
求根公式:设二次项系数为a,一次 ...

二分法是什么?
6#
 楼主| 发表于 2014-8-25 16:30:27 | 只看该作者
谢谢啊!!!
7#
 楼主| 发表于 2014-8-25 16:35:28 | 只看该作者
981013 发表于 2014-8-25 09:16
一元二次方程用求根公式做,二分法浪费时间,且只能求出一定范围内的根
求根公式:设二次项系数为a,一次 ...

可是我不会幂运算啊??求大神说说啊!!
8#
 楼主| 发表于 2014-8-25 16:58:52 | 只看该作者
981013 发表于 2014-8-25 09:16
一元二次方程用求根公式做,二分法浪费时间,且只能求出一定范围内的根
求根公式:设二次项系数为a,一次 ...


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{       
    double a,b,c,d,e,x1,x2;
    printf("请输入二次项系数(若输入0,将退出):");
    scanf("%lf",&a);
    if (fabs(a) < 0.0000001)exit(0);
    printf("请输入一次项:");
    scanf("%lf",&b);
    printf("请输入常数项:");
    scanf("%lf",&c);
        if(b*b-4*a*c<0)
    printf("无解");
        else
    {
    d=b*b-4*a*c;
    e=pow(d,1/2);
    x1=(-b+e)/2*a;
    x2=(-b-e)/2*a;
    printf("%lf",x1);
    printf("%lf",x2);
    }
        system("pause");
        return 0;
}
行吗??
9#
发表于 2014-8-25 17:07:19 | 只看该作者
本帖最后由 981013 于 2014-8-25 17:08 编辑

2*a要加括号,平方根有sqrt函数,没必要用1/2次方模拟
10#
发表于 2014-8-25 17:21:23 | 只看该作者
Dsp 发表于 2014-8-25 15:06
二分法是什么?

就是从两头逐步逼近根的算法
例如求方程x^3=10的根
先确定根的范围在1~5之间
然后把1和5的平均数3带入x,解得答案大于10
因y=x^3在该范围内单调递增
可知根的范围在1与3之内
可见根的取值范围缩小了一半
在这样迭代几次后,根的范围会非常小[以此题为例,例如是2.15443到2.15444之间](达到精度要求),此时就求得了方程的近似解[以此题为例,是2.1544]
11#
发表于 2014-8-25 19:18:16 | 只看该作者
981013 发表于 2014-8-25 17:21
就是从两头逐步逼近根的算法
例如求方程x^3=10的根
先确定根的范围在1~5之间

好暴力啊。。。
12#
 楼主| 发表于 2014-8-25 20:28:44 | 只看该作者
981013 发表于 2014-8-25 17:07
2*a要加括号,平方根有sqrt函数,没必要用1/2次方模拟

哦哦,我不知道啊!!
13#
发表于 2014-8-26 10:11:31 | 只看该作者
Dsp 发表于 2014-8-25 19:18
好暴力啊。。。

实在没办法时才用这个算法
14#
 楼主| 发表于 2014-8-26 10:46:39 | 只看该作者
rosynirvana 发表于 2014-8-24 20:55
为什么要用二分逼近?100000和-100000这两个初始取值也完全没道理

二分法初始值应该取什么啊?大神!!
15#
发表于 2014-8-26 11:34:42 | 只看该作者
小辉~ 发表于 2014-8-26 10:46
二分法初始值应该取什么啊?大神!!

这个问题预设什么值都不合适
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表