EDA365电子论坛网

标题: 为什么Matlab计算结果和单片机相差非常大? [打印本页]

作者: elephant_    时间: 2022-8-16 13:59
标题: 为什么Matlab计算结果和单片机相差非常大?

遇到一个很奇怪的问题,下边这个公式使用Matlab和EXCEL计算结果相同且正确

使用单片机和csharp测试又是另一个结果

-(2*L^4*b - L^4*c + 8*L^2*b^3 + 2*L^2*c^3 + 8*c^3*h^2 - 4*L^2*b*c^2 - 4*L^2*b^2*c - 8*L^2*b*h^2 - 4*L^2*c*h^2 + 2*L*h*((L + c)*(L - c)*(L^2 - 4*b^2 + 4*h^2)*(L^2 - 4*b^2 + 8*b*c - 4*c^2 + 4*h^2))^(1/2))/(4*(4*L^2*b^2 - 4*L^2*b*c + L^2*c^2 - 4*L^2*h^2 + 4*c^2*h^2))

单片机和csharp计算a=-9.58444976;

double L =    270;
; q! n( E! C* ?& h* @8 i! sdouble b =    14.33;+ y) p% W, ?6 R7 W
double c =    20.25;. L: @. t7 \3 [% G; c
double h =    120.21;

a =  -(2*pow(L,4.00)*b - pow(L,4.00)*c + 8.00*pow(L,2)*pow(b,3.00) + 2*pow(L,2.00)*pow(c,3.00) + 8*pow(c,3)*pow(h,2) - 4*pow(L,2)*b*pow(c,2) - 4*pow(L,2)*pow(b,2)*c - 8*pow(L,2)*b*pow(h,2) - 4*pow(L,2)*c*pow(h,2) + 2*L*h*pow(((L + c)*(L - c)*(pow(L,2) - 4*pow(b,2) + 4*pow(h,2))*(pow(L,2) - 4*pow(b,2) + 8*b*c - 4*pow(c,2) + 4*pow(h,2))),(1/2)))/(4*(4*pow(L,2)*pow(b,2) - 4*pow(L,2)*b*c + pow(L,2)*pow(c,2) - 4*pow(L,2)*pow(h,2) + 4*pow(c,2)*pow(h,2)))9 f8 x# \3 n+ {5 P
;) y; s: B  C6 i4 m' c3 R: Q1 f

EXCEL和Matlab计算a=126.3747;

270    L) Q% W3 i! W3 _1 K* S' E
14.33    b
- W" W1 _" T# k( |. x( U' o# \; e# T; e20.25    c) m7 ^2 b# k) v, N
120.21    h

= -(2*A1^4*A2 - A1^4*A3 + 8*A1^2*A2^3 + 2*A1^2*A3^3 + 8*A3^3*A4^2 - 4*A1^2*A2*A3^2 - 4*A1^2*A2^2*A3 - 8*A1^2*A2*A4^2 - 4*A1^2*A3*A4^2 + 2*A1*A4*((A1 + A3)*(A1 - A3)*(A1^2 - 4*A2^2 + 4*A4^2)*(A1^2 - 4*A2^2 + 8*A2*A3 - 4*A3^2 + 4*A4^2))^(1/2))/(4*(4*A1^2*A2^2 - 4*A1^2*A2*A3 + A1^2*A3^2 - 4*A1^2*A4^2 + 4*A3^2*A4^2))


4 T# o1 z) J1 q  G  h" W

不知道这个问题是怎么产生的,正在找原因。


; E: ]6 N2 J% x% j( _! r7 Q; z5 }' }3 |
作者: we_happiness    时间: 2022-8-16 14:43
问题找到, 里边有一个(1/2)改成(1.00/2.00)后解决
+ ?* ?3 d' O6 Q( ^# _8 @2 r, _解决方法是把公式分解,一段一段对比& D- g4 H4 x. w3 D# T" |. f3 J

作者: duhe3hfu    时间: 2022-8-16 14:49
会不会溢出了
作者: elephant_    时间: 2022-8-16 14:57
duhe3hfu 发表于 2022-8-16 14:49+ \& Z2 l3 x# e: E& j9 [; `1 I
会不会溢出了
/ L. N# i: o/ f, N# H$ K
问题找到,是2个整数相除结果的小数部分被舍掉了
- U9 \4 p% @, s




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2