用matlab软件编程:求出球面上x^2+y^2+z^2=1 上与点(3,1,-1)距离最近和最远点
2个回答
展开全部
function f = myfun(x)
f=sqrt((x(1)-3)^2+(x(2)-1)^2+(x(3)+1)^2);
function [c,ceq]=conf(x)
c=0;
ceq=1-x(1)^2-x(2)^2-x(3)^2;
这两个函数分别定义在myfun.m和conf.m中
命令行输入
[x,fval]=fmincon(@myfun,[0 0 1],[],[],[],[],[],[],@conf)
求得
x =
0.9045 0.3015 -0.3015
fval =
2.3166
所以最近点坐标[0.9045 0.3015 -0.3015],距离是2.3166
最远点的话f=-sqrt((x(1)-3)^2+(x(2)-1)^2+(x(3)+1)^2);
再[x,fval]=fmincon(@myfun,[0 0 1],[],[],[],[],[],[],@conf)
求得
x =
-0.9045 -0.3015 0.3015
fval =
-4.3166
所以最远点坐标[ -0.9045 -0.3015 0.3015],距离是4.3166
满意请采纳,不懂可追问,谢谢!
f=sqrt((x(1)-3)^2+(x(2)-1)^2+(x(3)+1)^2);
function [c,ceq]=conf(x)
c=0;
ceq=1-x(1)^2-x(2)^2-x(3)^2;
这两个函数分别定义在myfun.m和conf.m中
命令行输入
[x,fval]=fmincon(@myfun,[0 0 1],[],[],[],[],[],[],@conf)
求得
x =
0.9045 0.3015 -0.3015
fval =
2.3166
所以最近点坐标[0.9045 0.3015 -0.3015],距离是2.3166
最远点的话f=-sqrt((x(1)-3)^2+(x(2)-1)^2+(x(3)+1)^2);
再[x,fval]=fmincon(@myfun,[0 0 1],[],[],[],[],[],[],@conf)
求得
x =
-0.9045 -0.3015 0.3015
fval =
-4.3166
所以最远点坐标[ -0.9045 -0.3015 0.3015],距离是4.3166
满意请采纳,不懂可追问,谢谢!
展开全部
过球心o(0,0,0)及点p(3,1,-1)的直线与球面的两个交点即为所求。
可用以下代码求解
syms
x
y
z
t
q1='x-3*t'
q2='y-t'
q3='z+t'
q4='x^2+y^2+z^2-1'
[x,y,z,t]=solve(q1,q2,q3,q4)
x
=
1/11*11^(1/2)
-1/11*11^(1/2)
y
=
3/11*11^(1/2)
-3/11*11^(1/2)
z
=
1/11*11^(1/2)
-1/11*11^(1/2)
dmin=sqrt((3-x(1))^2+(1-y(1))^2+(-1-z(1))^2)
dmin
=
((3-1/11*11^(1/2))^2+(1-3/11*11^(1/2))^2+(-1-1/11*11^(1/2))^2)^(1/2)
dmax=sqrt((3-x(2))^2+(1-y(2))^2+(-1-z(2))^2)
dmax
=
((3+1/11*11^(1/2))^2+(1+3/11*11^(1/2))^2+(-1+1/11*11^(1/2))^2)^(1/2)
dmax=
eval(dmax)
dmax
=
3.8749
dmin=
eval(dmin)
dmin
=
2.9975
可用以下代码求解
syms
x
y
z
t
q1='x-3*t'
q2='y-t'
q3='z+t'
q4='x^2+y^2+z^2-1'
[x,y,z,t]=solve(q1,q2,q3,q4)
x
=
1/11*11^(1/2)
-1/11*11^(1/2)
y
=
3/11*11^(1/2)
-3/11*11^(1/2)
z
=
1/11*11^(1/2)
-1/11*11^(1/2)
dmin=sqrt((3-x(1))^2+(1-y(1))^2+(-1-z(1))^2)
dmin
=
((3-1/11*11^(1/2))^2+(1-3/11*11^(1/2))^2+(-1-1/11*11^(1/2))^2)^(1/2)
dmax=sqrt((3-x(2))^2+(1-y(2))^2+(-1-z(2))^2)
dmax
=
((3+1/11*11^(1/2))^2+(1+3/11*11^(1/2))^2+(-1+1/11*11^(1/2))^2)^(1/2)
dmax=
eval(dmax)
dmax
=
3.8749
dmin=
eval(dmin)
dmin
=
2.9975
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |