star198311 发表于 2007-7-28 15:22

用solve函数解方程组遇到问题

想用solve函数求解一多变量(14)的线性方程组。
总是出现错误。
但是将方程组写成AX=B的形式,用X=inv(A)×B能却解出。
由于对solve函数不是太了解,无法根据错误提示判断出错误的原因。
程序如下:
clear;clc;
format long
syms FDrx FDry TD FDpN FCrx FCry FBrx FBry FBpN FArx FAry FOrx FOry Tr;
L1=10;L2=40;L3=25;L4=45;L5=10;
alpha1=7*pi/8;
LAB=30.27113668467943;
alpha2=1.88094630998577;
alpha3 =0.76266236322523;
X=1;Y=0;T=0;
f1=FDrx-X;
f2=FDry+FDpN-Y;
f3=TD-T;
f4=FCrx-FDrx;
f5=FCry-FDry;
f6=FDrx*L5*sin(alpha3)-FDry*L5*cos(alpha3);
f7=FArx-FCrx+FBpN*cos(alpha2-pi/2);
f8=FAry-FCry+FBpN*sin(alpha2-pi/2);
f9=FCrx*L2*cos(alpha2-pi/2)+FCry*L2*sin(alpha2-pi/2)-FBpN*LAB;
f10=FBrx-FBpN*cos(alpha2-pi/2);
f11=FBry-FBpN*sin(alpha2-pi/2);
f12=FOrx-FBrx;
f13=FOry-FBry;
f14=FBrx*L1*cos(alpha1-pi/2)+FBry*L1*sin(alpha1-pi/2)-Tr;
D=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14);

[ 本帖最后由 eight 于 2007-7-28 21:59 编辑 ]

花如月 发表于 2007-7-28 16:58

调用格式不对 把最后一句该成:
D=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,...
'FDrx,FDry,TD,FDpN,FCrx,FCry,FBrx,FBry,FBpN,FArx,FAry,FOrx,FOry,Tr');
就可以计算出来了。

错误问题,提示很简单说只有一个变量而你是14个变量。看一下help就可以了,不过也有一个问题修改后程序有结果,不过仍有一个警告:
Warning: 13 equations in 15 variables.
> In solve at 113
In sym.solve at 49
>> D
明明是14个方程,14个变量。怎么会13 equations in 15 variables呢?

[ 本帖最后由 ChaChing 于 2010-5-4 13:15 编辑 ]

star198311 发表于 2007-7-28 18:44

谢谢您的答复。
我知道solve函数的基本调用格式。
看到错误信息,一开始我认为是方程本身有问题(没有解)。
就把它写成矩阵的形式,用线性代数的知识进行求解。
结果表明方程本身好像并没有没问题。
烦请各位高手继续指教!
如果不指定变量的话错提示为
Warning: 13 equations in 1 variables.
> In solve at 113
In sym.solve at 49
In lw147 at 24
Warning: Explicit solution could not be found.
> In solve at 140
In sym.solve at 49
In lw147 at 24
奇怪!

[ 本帖最后由 star198311 于 2007-7-28 19:04 编辑 ]

花如月 发表于 2007-7-28 19:38

回复 #4 star198311 的帖子

按照2楼的改,就可以求出答案呀。楼主没有看么?你既然还有其他解法,对找一下看解是否正确。只是有个警告而已。

star198311 发表于 2007-7-28 19:45

看到了。不过解的 结果是
    FArx:
    FAry:
    FBpN:
    FBrx:
    FBry:
    FCrx:
    FCry:
    FDpN:
    FDrx:
    FDry:
    FOrx:
    FOry:
      TD:
      Tr:
根本不是数值解。

花如月 发表于 2007-7-28 19:48

是结构体数组,用访问结构体的形式才可以看到。
D.Tr试试!

star198311 发表于 2007-7-28 20:11

谢谢!
结果算出来了。
把第3个方程和相应的未知数去掉。
求解结果中,就没有警告了。

[ 本帖最后由 star198311 于 2007-7-28 20:12 编辑 ]

花如月 发表于 2007-7-28 21:05

回复 #8 star198311 的帖子

为什么这样就可以了?第三个方程有问题?

star198311 发表于 2007-7-28 21:44

不知道就相当于
x-a=0(a为常数)。
大概这样不行吧?
页: [1]
查看完整版本: 用solve函数解方程组遇到问题