【发布时间】:2013-09-11 07:01:27
【问题描述】:
我正在Matlab 的一个项目中工作,需要找到两条线之间的区域(在区间 [-1,+1] 中与点 (xIntersection,yIntersection) 相交。所以我的想法是将两者相减线并在 [-1, xIntersection] 和 [xIntersection, +1] 之间积分,对结果求和,如果为负,则更改其符号。
有关如何找到两条线的交点的详细信息,请查看link。
我正在使用Matlab's 函数int(),这里是我的代码的sn-p:
xIntersection = ((x_1 * y_2 - y_1 * x_2) * (x_3 - x_4) - (x_1 - x_2) * (x_3 * y_4 - y_3 * x_4) ) / ((x_1 - x_2) * (y_3 - y_4) - (y_1 - y_2) * (x_3 - x_4));
syms x;
integral = int( line 1 - line 2 expression containing x, x, -1, xIntersection) + int( line 1 - line 2 expression containing x, x, xIntersection, 1)
if(integral < 0),
integral = integral * -1;
end
问题在于Matlab 不会返回积分的实数值,而是返回包含除法的表达式,即:
107813370750829368626584124420059/162259276829213363391578010288128
这使我无法对集成结果进行进一步的操作。
- 知道为什么这是返回值吗?
- 知道可能存在漏洞吗?
【问题讨论】:
-
我没有符号数学工具箱,但你不能用
double(x)转换你的结果吗?
标签: matlab function math linear-algebra integrate