wlp1818100227 发表于 2020-3-12 00:09:54

l的平方和2*l的横坐标交点

#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,可结果却什么也没有,请问为什么呢?

hongwei8858 发表于 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);
      }
    }
}

wlp1818100227 发表于 2020-3-12 10:11:22

hongwei8858 发表于 2020-3-12 00:09
#include
#include



#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多,可是程序这次还是没运行成功,望大佬指点,学渣讲感激不尽。{:5_111:}

hongwei8858 发表于 2020-3-12 11:29:30

懵,你这个写的有问题呀,a-l的绝对值,永远不可能小于0.000001呀

hongwei8858 发表于 2020-3-12 11:40:08

a的值是1560509.554140-200你能让他俩的绝对值小于0.000001么?不可能的,是不是计算a的计算公式你写错了?

wlp1818100227 发表于 2020-3-12 11:40:59

hongwei8858 发表于 2020-3-12 11:29
懵,你这个写的有问题呀,a-l的绝对值,永远不可能小于0.000001呀

就是说a和 l 没有交点吗

hongwei8858 发表于 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的值。再看看是不是哪里错了。

hongwei8858 发表于 2020-3-12 11:50:02

wlp1818100227 发表于 2020-3-12 11:40
就是说a和 l 没有交点吗

是的,你这个计算方法,a和l不会有交点的!

wlp1818100227 发表于 2020-3-12 12:54:17

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

抱歉,我把这里面的一些参数弄错了,还是专业知识学的不够好,谢谢大佬,问题已经解决。

hongwei8858 发表于 2020-3-12 13:06:21

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

能解决就好,略尽绵薄之力~!
页: [1]
查看完整版本: l的平方和2*l的横坐标交点