鱼C论坛

 找回密码
 立即注册
查看: 1108|回复: 9

[已解决]l的平方和2*l的横坐标交点

[复制链接]
发表于 2020-3-12 00:09:54 | 显示全部楼层 |阅读模式
25鱼币
#include <stdio.h>

#include <math.h>


void main()
{
    double l, a, b;

        for(l = 0.1; l <= 5; l=l+0.1)
        {       
                a = l*l;
                b = 2*l;
                if(a==b)
                {printf("%lf, %lf, %lf\n", a, b ,l);}
        }
}
代码如上,按理说应该输出4.000000,4.000000, 2.000000,可结果却什么也没有,请问为什么呢?
最佳答案
2020-3-12 00:09:55
#include<stdio.h>
#include<math.h>

void main()
{
    double l, a, b;

    for(l = 0.1; l <= 5; l+=0.1)
    {
        a = l*l;
        b = 2*l;
#if(0)
        浮点相等不能够用==判断
        需要用数学公式fabs计算它们差的绝对值,
        1e-6就是10的-6次方=0.000001
        fabs(a-b)这个是ab差的绝对值,
        如果小于0.000001也就是精度,
        就判断为真。
        这样就可以输出,4.0000和2.000了!
#endif
        if(fabs(a-b)<1e-6)
        {
            printf("%lf, %lf, %lf\n", a, b,l);
        }
    }
}

最佳答案

查看完整内容

#include #include void main() { double l, a, b; for(l = 0.1; l
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 00:09:55 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>
#include<math.h>

void main()
{
    double l, a, b;

    for(l = 0.1; l <= 5; l+=0.1)
    {
        a = l*l;
        b = 2*l;
#if(0)
        浮点相等不能够用==判断
        需要用数学公式fabs计算它们差的绝对值,
        1e-6就是10的-6次方=0.000001
        fabs(a-b)这个是ab差的绝对值,
        如果小于0.000001也就是精度,
        就判断为真。
        这样就可以输出,4.0000和2.000了!
#endif
        if(fabs(a-b)<1e-6)
        {
            printf("%lf, %lf, %lf\n", a, b,l);
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-12 10:11:22 | 显示全部楼层

#include <stdio.h>

#include <math.h>

#define PI 3.14

#define G 9.80

void main()
{
    double l, T, h, a;
    T = 5.5;
    h = 1000;
    a = (G*h*h* tanh( (2*PI*1000)/l))/(2*PI);
    for(l = 0.1; l <= 200; l = l+0.1)
    {
            if(fabs(a-l)<1e-6)
            {
                    printf("%lf", l);
                }
        }
}
不知道大佬能不能看懂这个程序,这是我自己用C编写的一个算水波波长的一个程序,我用那个matlab 软件验证了一下,这两个函数交点横坐标大概是40多,可是程序这次还是没运行成功,望大佬指点,学渣讲感激不尽。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 11:29:30 From FishC Mobile | 显示全部楼层
懵,你这个写的有问题呀,a-l的绝对值,永远不可能小于0.000001呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 11:40:08 | 显示全部楼层
a的值是1560509.554140  -200  你能让他俩的绝对值小于0.000001么?不可能的,是不是计算a的计算公式你写错了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-12 11:40:59 | 显示全部楼层
hongwei8858 发表于 2020-3-12 11:29
懵,你这个写的有问题呀,a-l的绝对值,永远不可能小于0.000001呀

就是说a和 l 没有交点吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 11:49:14 | 显示全部楼层
还有就是这个T=5.5;这就是个摆设呀。fabs(a-b)这个的意思是a-b=x 这个x是他俩的差  用fabs求他差的绝对值,1e-6,这个就是所谓的精度,如果a-b差的绝对值小于精度1e-6,就会返回真。这个判断就成立了。
你这算水波波长的代码,a-l的绝对值,永远不可能小于0.000001,你可以自己先打印出来看看a和l的值。再看看是不是哪里错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 11:50:02 | 显示全部楼层
wlp1818100227 发表于 2020-3-12 11:40
就是说a和 l 没有交点吗

是的,你这个计算方法,a和l不会有交点的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-12 12:54:17 | 显示全部楼层
hongwei8858 发表于 2020-3-12 11:49
还有就是这个T=5.5;这就是个摆设呀。fabs(a-b)这个的意思是a-b=x 这个x是他俩的差  用fabs求他差的绝对 ...

抱歉,我把这里面的一些参数弄错了,还是专业知识学的不够好,谢谢大佬,问题已经解决。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 13:06:21 | 显示全部楼层
wlp1818100227 发表于 2020-3-12 12:54
抱歉,我把这里面的一些参数弄错了,还是专业知识学的不够好,谢谢大佬,问题已经解决。

能解决就好,略尽绵薄之力~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表