Matlab & Mathematica 解符号方程组
2015-09-25 16:41
661 查看
Matlab & Mathematica 求解方程组:
Matlab:解方程
syms a1 b1 c1 syms a2 b2 c2 syms x y [x,y] = solve( 'a1*x + b1*y + c1 == 0', 'a2*x + b2*y + c2 == 0', 'x','y') simplify(x) simplify(y)
三点求齐次变换矩阵
syms a1 a2 b1 b2 c1 c2; syms x1 y1 z1 A1 B1 C1; %原点坐标 syms dzx dzy; % 向量[dzx dzy 1] vx = [a1,b1,c1]; Nx = norm(vx); v2 = [a2,b2,c2]; vz = cross(vx,v2) Nz = norm(vz); vy = cross(vz,vx) Ny = norm(vy); mat = [ a1/Nx vy(1)/Ny vz(1)/Nz x1; b1/Nx vy(2)/Ny vz(2)/Nz y1; c1/Nx vy(3)/Ny vz(3)/Nz z1; 0 0 0 1 ]; %% 随便计算验证一下 p1 = [1 2 3 1.1 1 1.3]; % 原点 p2 = [2 3 6 1.1 1 1.2]; % x轴上任意一点 p3 = [5 3 7 1.1 1 1.0]; % x-y平面任意一点 p21 = p2-p1; p31 = p3-p1; re = subs(mat, {a1,b1,c1,a2,b2,c2,x1,y1,z1},{p21(1),p21(2),p21(3), p31(1),p31(2),p31(3), p1(1),p1(2),p1(3)}) R = re(1:3,1:3); R*R'; % 单位矩阵 tra = vpa(re,5); % 获得数值矩阵 tra*[0 0 0 1]' % 将坐标系1下的原点转换到坐标系0,即得到p1
如果需要用实际数值替换某个符号变量,使用 subs 函数,或者 对符号变量赋值,然后使用 eval 函数。
Mathematica:
解方程
sol = Solve[ a1*x + b1*y + c1 == 0 && a2*x + b2*y + c2 == 0, {x,y}] // 因为 MMA 计算结果是一个Rule:{x->xxx , y->xxx},因此需要利用这个Rule得到解,/.表示全部应用规则,例如:f[x_]:=x+1+y,即出现x的地方用x+1+y替换。 x/.sol y/.sol 在 MMA 中如果需要将结果进一步计算,可应用规则: f[x,y]/.sol Simplify[%] // 将表达式转化为C/C++语言格式 CForm[%]
相关文章推荐
- 在实验中训练样本的选择和matlab代码展示(自己在实验中的亲身的经历)
- matlab save -v7.3 速度较慢及解决方式
- Matlab & Mathematica 向量(行,列) 矩阵
- matlab中的sum函数的用法
- Matlab中判断文件是否为空
- MATLAB中squeeze函数的作用
- Ubuntu14.04+搜狗输入法+Cuda+opencv3.0+matlab2014b+mkl+caffe 安装
- MATLAB:镜像图片
- 特征点检测效果评估(matlab代码)
- Matlab:max函数
- MATLAB R2014b 的安装破解
- matlab生成opencv需要的xml文件
- MATLAB使用技巧
- ubuntu下安装Matlab2014及破解
- matlab getframe()
- MATLAB 中gcf、gca 以及gco 的区别
- Matlab中libsvm的安装几使用(参数的设置 )
- Mac上(Xcode7)使用Matlab调用libsvm库函数
- Ubuntu下安装Matlab
- caffe安装系列——安装Matlab