作业帮 > 综合 > 作业

求懂matlab和C语言的大神,同样的算法,为什么出来的结果完全不同?代码如下

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/19 22:56:19
求懂matlab和C语言的大神,同样的算法,为什么出来的结果完全不同?代码如下
clc;
test_x=30;
test_y=50;
x1=0;y1=0; x2=500;y2=0; x3=500;y3=350; x4=0;y4=350;
R21=(((test_x-x2)^2+(test_y-y2)^2)^0.5-((test_x-x1)^2+(test_y-y1)^2)^0.5);
R31=(((test_x-x3)^2+(test_y-y3)^2)^0.5-((test_x-x1)^2+(test_y-y1)^2)^0.5);
R41=(((test_x-x4)^2+(test_y-y4)^2)^0.5-((test_x-x1)^2+(test_y-y1)^2)^0.5);
R21
R31
R41
R1=0.5*(R31^2-R41^2-R21^2)/(R21+R41-R31)
Current_X=(500^2-R21^2-R21*(R31^2-R41^2-R21^2)/(R21+R41-R31))/1000;
Current_Y=(350^2-R41^2-R41*(R31^2-R41^2-R21^2)/(R21+R41-R31))/700;
Current_X
Current_Y
上面是matlab的,下面是C语言的
unsigned int test_x=30;
unsigned int test_y=50;
unsigned int x1=0,y1=0,x2=500,y2=0,x3=500,y3=350,x4=0,y4=350;
float R21=0,R31=0,R41=0;
R21=sqrt(pow((test_x-x2),2)+pow((test_y-y2),2))-sqrt(pow((test_x-x1),2)+pow((test_y-y1),2));
R31=sqrt(pow((test_x-x3),2)+pow((test_y-y3),2))-sqrt(pow((test_x-x1),2)+pow((test_y-y1),2));
R41=sqrt(pow((test_x-x4),2)+pow((test_y-y4),2))-sqrt(pow((test_x-x1),2)+pow((test_y-y1),2));
Current_X=(unsigned int)(250000-pow(R21,2)-R21*(pow(R31,2)-pow(R41,2)-pow(R21,2))/(R21+R41-R31))/1000;
Current_Y=(unsigned int)(122500-pow(R41,2)-R41*(pow(R31,2)-pow(R41,2)-pow(R21,2))/(R21+R41-R31))/700;
我试过很多很多方法了,算出来的结果不同啊,不是小数不同,而是完全没关系的那种!
求懂matlab和C语言的大神,同样的算法,为什么出来的结果完全不同?代码如下
C和m是一样的,应该是程序哪里的写的不一样了

我算了一个结果
R21 415.1978
R31 500.1297
R41 244.0419
Current_X 71.09866
Current_Y 84.45123
你看看和你的哪个是一样的,我用excel 算的