Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 求解与距离有关的非线性方程组_Matlab_Geometry_Distance - Fatal编程技术网

Matlab 求解与距离有关的非线性方程组

Matlab 求解与距离有关的非线性方程组,matlab,geometry,distance,Matlab,Geometry,Distance,我想在matlab中解一组非线性方程组。我的意思是,假设我有两个点,由(lat1,lon1)和(lat2,lon2)定义。现在我想找到一个点lat3,lon3,这样它距离两个点都有20公里。以点(lat1,lon1)和(lat2,lon2)为中心绘制半径为20km的圆的交点 然而,我有点困惑如何解决这个方程 我有在matlab中计算两点之间距离的功能 function [ distance ] = calculateDistance( latitude1,longitude1,latitude2

我想在matlab中解一组非线性方程组。我的意思是,假设我有两个点,由(lat1,lon1)和(lat2,lon2)定义。现在我想找到一个点lat3,lon3,这样它距离两个点都有20公里。以点(lat1,lon1)和(lat2,lon2)为中心绘制半径为20km的圆的交点

然而,我有点困惑如何解决这个方程

我有在matlab中计算两点之间距离的功能

function [ distance ] = calculateDistance( latitude1,longitude1,latitude2,longitude2 )
radius = 6371;
dLat = degtorad(latitude2-latitude1);
dLon = degtorad(longitude2-longitude1);
a = sin(dLat/2) * sin(dLat/2) + cos(degtorad(latitude1)) * cos(degtorad(latitude2)) * sin(dLon/2) * sin(dLon/2);
c = 2 * atan2(sqrt(a), sqrt(1-a));
distance = radius * c;
end
我正在尝试使用matlab的解算功能

但是当我定义

syms lat3 lon3
试着把方程传递给解函数,它会抛出
atan2只接受sym类型的参数

我怎样才能解决这个问题呢?

如果你只需要解决那个特定的问题,你不需要Matlab的任何方程求解功能。您可以简单地使用毕达哥拉斯公式:

如果点为(0,0)和(1,0),半径为x,则距离(0,0)和(1,0)x的两个点为

(0.5,sqrt(x^2-0.25))和(0.5,-sqrt(x^2-0.25))

如果你的点是(a,b)和(c,d),那么两点的距离是

dist=sqrt((c-a)^2+(d-b)^2)

现在我们取一个坐标系,原点是(a,b),单位是dist,水平轴穿过(c,d)。在这个坐标系中,有问题的点是

(0.5,+/-sqrt((r/dist)^2-0.25))

现在,为了得到原始坐标系,我们必须乘以dist,得到

(0.5*dist,+/-sqrt(r^2-0.25*dist^2))

然后用矩阵旋转(dist,0)到(c-a,d-b),这是

cos alpha   -sin alpha
sin alpha   cos alpha
式中,α=arccos((d-b)/dist),即矩阵

(d-b) / dist   -(c-a) / dist
(c-a) / dist    (d-b) / dist

(0.5(d-b)-/+(c-a)sqrt(r^2/dist^2-0.25), 0.5(c-a)+/-(d-b)平方米(r^2/距离^2-0.25)

最后加上(a,b),屈服

(a+0.5(d-b)-/+(c-a)平方米(r^2/dist^2-0.25), b+0.5(c-a)+/-(d-b)平方米(r^2/区^2-0.25))

这些就是你要寻找的要点。也许我在某个地方犯了一个错误,但我希望方向应该是明确的