声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3986|回复: 8

[编程技巧] 用solve函数解方程组遇到问题

[复制链接]
发表于 2007-7-28 15:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
想用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 编辑 ]

lw147.m

702 Bytes, 下载次数: 14

回复
分享到:

使用道具 举报

发表于 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 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 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楼的改,就可以求出答案呀。楼主没有看么?你既然还有其他解法,对找一下看解是否正确。只是有个警告而已。
 楼主| 发表于 2007-7-28 19:45 | 显示全部楼层
看到了。不过解的 结果是
    FArx: [1x1 sym]
    FAry: [1x1 sym]
    FBpN: [1x1 sym]
    FBrx: [1x1 sym]
    FBry: [1x1 sym]
    FCrx: [1x1 sym]
    FCry: [1x1 sym]
    FDpN: [1x1 sym]
    FDrx: [1x1 sym]
    FDry: [1x1 sym]
    FOrx: [1x1 sym]
    FOry: [1x1 sym]
      TD: [1x1 sym]
      Tr: [1x1 sym]
根本不是数值解。
发表于 2007-7-28 19:48 | 显示全部楼层
是结构体数组,用访问结构体的形式才可以看到。
D.Tr试试!
 楼主| 发表于 2007-7-28 20:11 | 显示全部楼层
谢谢!
结果算出来了。
把第3个方程和相应的未知数去掉。
求解结果中,就没有警告了。

[ 本帖最后由 star198311 于 2007-7-28 20:12 编辑 ]
发表于 2007-7-28 21:05 | 显示全部楼层

回复 #8 star198311 的帖子

为什么这样就可以了?第三个方程有问题?
 楼主| 发表于 2007-7-28 21:44 | 显示全部楼层
不知道就相当于
x-a=0(a为常数)。
大概这样不行吧?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-12 09:50 , Processed in 0.068211 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表