matlab求解方程组
matlab求解方程组,具体方程组如下图,
syms x1 x2 x3 x y y3 z2 z3 Alpha0 Beta0 Alpha Beta
>> b1=[x2-x1 0 0];
b2=[x3-x2 0 z3-z2];
b3=[x-x3 y-y3 -z3];
>> n1= [sin(Alpha+Alpha0) 0 cos(Alpha+Alpha0)];
n2= [0 cos(Beta+Beta0) sin(Beta+Beta0)];
[x3,Alpha,Beta]=solve('b1*n1/norm(b1)=-b2*n1/norm(b2)','b2*n2/norm(b2)=-b3*n2/norm(b3)','dot(n2,cross(b2,b3))=0','x3','Alpha','Beta')
程序运行出错 求大神指教
4.png 返回小木虫查看更多
今日热帖
Cannot find explicit solution.
syms x1 x2 x3 x y y3 z2 z3 Alpha0 Beta0 Alpha Beta
b1=[x2-x1 0 0];
b2=[x3-x2 0 z3-z2];
b3=[x-x3 y-y3 -z3];
n1= [sin(Alpha+Alpha0) ;0 ;cos(Alpha+Alpha0)];
n2= [0 ;cos(Beta+Beta0); sin(Beta+Beta0)];
aa=b1*n1/norm(b1)+b2*n1/norm(b2)
bb=b2*n2/norm(b2)+b3*n2/norm(b3)
cc=dot(n2,cross(b2,b3))
[x3,Alpha,Beta]=solve( aa,bb,cc,'x3,Alpha,Beta')
这个还是手算方便点吧
这类问题,一般情况下用软件无法求符号解。
但是,所有已知常数都给定的情况下,可以求数值解
x1=-2;
x2=0;
y3 = 0; ;
z2=200;
z3=200-0.1;
R=70;
x=R*cos(sita);
y=R*sin(sita);
sita==0:pi/18:2*pi;
Alpha0=pi/4;
Beta0=pi/6;
求[x3,Alpha,Beta]的数值解 程序一直出错 求大神指教
x1=-2;
x2=0;
y3 = 0; ;
z2=200;
z3=200-0.1;
R=70;
x=R*cos(sita);
y=R*sin(sita);
sita==0:pi/18:2*pi;
Alpha0=pi/4;
Beta0=pi/6;
求[x3,Alpha,Beta]的数值解 程序一直出错 求大神指教
clc
clear
syms x3 Alpha Beta
sita=pi/8;
x1=-2;
x2=0;
y3 = 0;
z2=200;
z3=200-0.1;
R=70;
x=R*cos(sita);
y=R*sin(sita);
Alpha0=pi/4;
Beta0=pi/6;
b1=[x2-x1 0 0];
b2=[x3-x2 0 z3-z2];
b3=[x-x3 y-y3 -z3];
n1= [sin(Alpha+Alpha0) ;0 ;cos(Alpha+Alpha0)];
n2= [0 ;cos(Beta+Beta0); sin(Beta+Beta0)];
aa=b1*n1/norm(b1)+b2*n1/norm(b2);
bb=b2*n2/norm(b2)+b3*n2/norm(b3);
cc=dot(n2,cross(b2,b3));
[x3,Alpha,Beta]=solve( aa,bb,cc,'x3,Alpha,Beta')
你好 这里的sita是变化的 sita==0:pi/18:2*pi; 我想得到一系列的x3,Alpha,Beta随sita变化而变化的值 谢谢大神
clc
clear
x3AlphaBeta=[];
si=0:pi/18:2*pi;
for i=1:length(si)
sita=si(i);
syms x3 Alpha Beta
x1=-2;
x2=0;
y3 = 0;
z2=200;
z3=200-0.1;
R=70;
x=R*cos(sita);
y=R*sin(sita);
Alpha0=pi/4;
Beta0=pi/6;
b1=[x2-x1 0 0];
b2=[x3-x2 0 z3-z2];
b3=[x-x3 y-y3 -z3];
n1= [sin(Alpha+Alpha0) ;0 ;cos(Alpha+Alpha0)];
n2= [0 ;cos(Beta+Beta0); sin(Beta+Beta0)];
aa=b1*n1/norm(b1)+b2*n1/norm(b2);
bb=b2*n2/norm(b2)+b3*n2/norm(b3);
cc=dot(n2,cross(b2,b3));
[x3,Alpha,Beta]=solve( aa,bb,cc,'x3,Alpha,Beta') ;
x3AlphaBeta=[x3AlphaBeta;double(x3),double(Alpha),double(Beta)];
end,