问题描述
我开发了以下代码来找到三次方程的 3 个根。代码从 C 翻译成 Arduino。代码运行并正确打印 X1。但是,剩余的 X 值不会打印,并且代码会循环运行,重复打印 i 和 X1 的值。
使用的代码**
#include <math.h>
#include <curveFitting.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
void loop(){
}
void setup() {
/*********************************************/
Serial.begin(9600);
while (!Serial);
double a,b,c,d,x1,x2,x3;
double B,C,delta;
double y;
int i=0;
while(i!=1)
{
Serial.print("Please input the coefficient of cube equation:");
x1=eqsolve(10,11,12,13);
printf("x1= %.8f\n",x1);
if(a!=0)
{
B = b/a+x1;
C = -d/(a*x1);
delta = B*B-4*C;
if(delta>=0)
{
x2 = (-B+ sqrt(delta))/2.0;
x3 = (-B- sqrt(delta))/2.0;
printf("x2= %.8f\nx3= %.8f\n",x3);
}
else
{
x2 = x3 = -B/2.0;
y = sqrt(-delta)/2.0;
Serial.print(x2,y);
Serial.print(x2,y);
}
}
if(a==0)
{
x2 = -(c/b+x1);
Serial.print(x2);
}
}
system("pause");
}
/*------------functions--------------------*/
double funeva(double a,double b,double c,double d,double x) {
double y=x*(x*(a*x+b)+c)+d;
return y;
}
double diffeva(double a,double x){
double y0=x*(3*a*x+2*b)+c;
return y0;
}
double eqsolve(double a,double d){
double e=-64,f=64;
double x,m;
int i=0;
while((f-e)>=0.25)
{
if(int(funeva(a,e))^int(funeva(a,(e+f)/2)<=0))
{
f=(e+f)/2;
i++;
}
else
{
e=(e+f)/2;
i++;
}
}
x = (e+f)/2;
do
{
m=funeva(a,x)/diffeva(a,x);
x-= m;
i++;
}
while(fabs(m)>=10e-10);
printf("i=%d\n",i);
return x;
}
当前结果。这是一个无限循环:
;ld⸮⸮|⸮$⸮|⸮$⸮c|⸮⸮⸮⸮{⸮c⸮c⸮⸮o'⸮lno⸮⸮⸮bx⸮⸮l;l{lx⸮n⸮⸮⸮f.⸮*⸮Յѥ⸮⸮⸮i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.09163765
nanPlease input the coefficient of cube equation:i=26
x1= -1.091
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
>>>stack>>>
ctx: cont
sp: 3ffffc10 end: 3fffffc0 offset: 01a0
3ffffdb0: 3ffffec4 3ff17759 3ffe8020 40204ee2
3ffffdc0: 401002c4 3ffffdd4 3ffffdd0 40209f78 <
3ffffdd0: 00000010 3ffe8020 3ffef1a0 4020a4a4
3ffffde0: 3ffef42d 00000400 3ffffe30 00000010
3ffffdf0: 3ffef2dc 3ffe8020 3ffef1a0 4020a915
3ffffe00: 40209f78 3ffffe80 3ffe8020 3ffe8020
3ffffe10: 0000000a 3ffe8020 3ffef1a0 4020a9a5
3ffffe20: 00000000 3ffe8020 3ffef1a0 4020a5cf
3ffffe30: 3ffef1a0 3ffe8670 00000000 40209f6f
3ffffe40: 3ffef1a0 00000000 3ffe86c6 40209fd5
3ffffe50: 3ffe8671 00000066 3ffef425 feefeffe
3ffffe60: 003632fe feefeffe 000001ac 3ffe8670
3ffffe70: 3ffe8671 3ffe8020 3ffef1a0 4020a15c
3ffffe80: 00000400 00000008 00000000 00000000
3ffffe90: 0000000a 0000000f fe302066 bff17759
3ffffea0: 00000001 00000000 3ffe8020 bff17759
3ffffeb0: 0ae543fd 3ffe8620 3ffe8020 4020609a
3ffffec0: 2dfffee0 3ffffed0 0ae543fd bff17759
3ffffed0: 00000002 0000001a 00000001 3e112e0b
3ffffee0: 3fffff40 3fffff30 00000010 0000000b
3ffffef0: 00000001 00000000 0000001a 402012be
3fffff00: 00000000 40260000 00000000 3ffee3dc
3fffff10: 3fffdad0 3ffe8668 3ffe8020 4020609a
3fffff20: 3fffff40 3fffff30 00000004 ffd8ad0d
3fffff30: 0000000b bff17759 0ae543fd bff17759
3fffff40: 5ffffe00 00000000 0ae543fd 3ffee3dc
3fffff50: 3fffdad0 bff17759 0ae543fd 402014b9
3fffff60: 00000000 402a0000 feefeffe feefeffe
3fffff70: feefeffe feefeffe feefeffe feefeffe
3fffff80: feefeffe feefeffe feefeffe feefeffe
3fffff90: feefeffe feefeffe feefeffe 3ffee3dc
3fffffa0: 3fffdad0 00000000 3ffee39c 40201da4
3fffffb0: feefeffe feefeffe 3ffe84f0 40100bcd
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)