iiiooo 发表于 2007-11-19 20:27

多系数的方程求解问题

问题来源:
有前面的信号处理得到一个m*5的
系数矩阵,矩阵每行为下面方程的系数p1,p2,p3,p4,p5,对应每组系数,方程
cos(10*pi*t)+p1*cos(8*pi*t)+p2*cos(6*pi*t)+p3*cos(4*pi*t)+p4*cos(2*pi*t)+1/2*p5=0
在0-0.5内有5个解,求其解t

问题表现:我用函数solve求解,如果把每行对应的系数的具体数值代替方程中的p1,p2,p3,p4,p5,就可以得到5个解,但系数用p1,p2,p3,p4,p5,之前取矩阵一行分别赋给p1,p2,p3,p4,p5,就提示如下错误,
??? Error using ==> solve
Unable to find closed form solution.

我实在是不明白,请高手指点
附上我的程序:
这个是系数具体的,可以得到结果
clear;
load p_LSP.mat
a=solve('cos(5*2*pi*t)+(-2.0226)*cos(4*2*pi*t)+2.5063*cos(3*2*pi*t)+(-2.6823)*cos(2*2*pi*t)+2.8038*cos(2*pi*t)+1/2*(-2.9325)=0');

为什么换成参数就不行了呢?而且用了sym

附件为系数矩阵,请高手帮我分析一下该怎么实现

[ 本帖最后由 eight 于 2007-11-19 20:39 编辑 ]

eight 发表于 2007-11-19 20:40

原帖由 iiiooo 于 2007-11-19 20:27 发表 http://www.chinavib.com/forum/images/common/back.gif
问题来源:
有前面的信号处理得到一个m*5的
系数矩阵,矩阵每行为下面方程的系数p1,p2,p3,p4,p5,对应每组系数,方程
cos(10*pi*t)+p1*cos(8*pi*t)+p2*cos(6*pi*t)+p3*cos(4*pi*t)+p4*cos(2*pi*t)+1/2*p5=0
...
对这个不太懂,不过版面有很多相关讨论,请搜素、参考一下

donkeyxu 发表于 2007-11-19 20:54

回复 #1 iiiooo 的帖子

加了引号'p',matlab就不知道p是给过值的p了,他只知道是个符号p

iiiooo 发表于 2007-11-19 21:41

原帖由 donkeyxu 于 2007-11-19 20:54 发表 http://www.chinavib.com/forum/images/common/back.gif
加了引号'p',matlab就不知道p是给过值的p了,他只知道是个符号p

那应该怎么来求呢?不用符号运算吗?
请讲详细点好吗

donkeyxu 发表于 2007-11-19 22:32

回复 #4 iiiooo 的帖子

%去掉引号即可
syms t p1 p2 p3 p4 p5
p1=-2.0226;p2=2.5063;p3=-2.6823;p4=2.8038;p5=-2.9325;
a=solve(cos(10*pi*t)+p1*cos(8*pi*t)+p2*cos(6*pi*t)+p3*cos(4*pi*t)...
+p4*cos(2*pi*t)+1/2*p5,'t');

iiiooo 发表于 2007-11-19 23:04

还是不行啊,出现这样的错误
The expression to the left of the equals sign is not a valid target for an assignment.

donkeyxu 发表于 2007-11-19 23:20

回复 #6 iiiooo 的帖子

我运行无错

iiiooo 发表于 2007-11-19 23:21

用我的系数矩阵吗?

iiiooo 发表于 2007-11-19 23:23

是用for循环,完成整个29行的运算结果吗?

iiiooo 发表于 2007-11-19 23:29

我运行了,按照你的写法是可以得到结果,5个解,能不能加上for循环,每次自动取一行作为系数呢?因为是信号处理,每个系数都是不固定且不能自己输入的
究竟哪个需要符号,哪个需要数值,我还不太懂
谢谢了

donkeyxu 发表于 2007-11-20 09:24

回复 #10 iiiooo 的帖子

%每次改变系数那就改啊。自己看看精通matlab教材啊,都有。
%例如:
syms t
pmatr=rand(10,5);
for m=1:size(pmatr,1)
   p=pmatr(m,:);
   a(m,:)=solve(t+p(1)+p(2)+p(3)+p(4)+p(5),'t');
end

eight 发表于 2007-11-20 09:26

建议楼主自己多动脑筋、动手,如果遇到什么问题只懂发问,则自己永远只能落后别人

iiiooo 发表于 2007-11-20 10:55

呵呵,因为我弄了一天,都找不找原因,所以很着急,老八教训的对啊
自己是做信号处理的,很少遇到方程,所以不太明白
昨天晚上我根据donkeyxu 的提示,加上for循环,可以做出来结果,也学到了一点符号计算的皮毛

解一个符号方程,为什么要3秒的时间呢,我把数值直接写进去就很快,能解释一下什么原因吗?
我猜想大概是因为符号的原因,但具体不知道为什么

最好非常感谢donkeyxu 和老八
页: [1]
查看完整版本: 多系数的方程求解问题