找回密码
 注册
Simdroid-非首页
查看: 87|回复: 4

求助:如何把计算结果中的符号用其数值替换

[复制链接]
发表于 2011-3-29 22:39:35 | 显示全部楼层 |阅读模式 来自 陕西西安
我是新手,刚开始学习matlab。编了矩阵微分方程解析解的小程序,发现计算的最终结果里面全是是矩阵元素符号,我希望把他变成其相应的数值,请问该怎么弄呢?网上查了好久都没查到,急啊...请各位大神指点。以下是我编的程序以及结果(结果太长了,随便截了点,但是形式就是这样的):
clear all
clc
syms t x y
M=[1 2;
      2 1;];
K=[3 4;
      4 3;];
[x,y]=dsolve('M(1,1)*D2x+M(1,2)*D2y+K(1,1)*x+K(1,2)*y=0',...
                'M(2,1)*D2x+M(2,2)*D2y+K(2,1)*x+K(2,2)*y=0')

x =

-(C1*M(1,1)*exp(1/2*(-(-2*K(1,2)*M(2,1)+2*M(1,1)*K(2,2)+2*M(2,2)*K(1,1)-2*K(2,1)*M(1,2)-2*(M(2,1)^2*K(1,2)^2-2*M(2,1)*K(1,2)*M(1,1)*K(2,2)-2*M(2,2)*K(1,1)*M(2,1)*K(1,2)-2*K(2,1)*M(1,2)*M(2,1)*K(1,2)+M(1,1)^2*K(2,2)^2-2*M(2,2)*K(1,1)*M(1,1)*K(2,2)-2*K(2,1)*M(1,2)*M(1,1)*K(2,2)+M(2,2)^2*K(1,1)^2-2*M(2,2)*K(1,1)*K(2,1)*M(1,2)+K(2,1)^2*M(1,2)^2+4*M(1,1)*K(2,1)*M(2,2)*K(1,2)+4*M(2,1)*K(1,1)*K(2,2)*M(1,2))^(1/2))/(M(1,1)*M(2,2)-M(1,2)*M(2,1)))^(1/2)*t)*K(2,2)*(-(-2*K(1,2)*M(2,1)+2*M(1,1)*K(2,2)+2*M(2,2)*K(1,1)-2*K(2,1)*M(1,2)-2*(M(2,1)^2*K(1,2)^2-2*M(2,1)*K(1,2)*M(1,1)*K(2,2)-2*M(2,2)*K(1,1)*M(2,1)*K(1,2)-2*K(2,1)*M(1,2)*M(2,1)*K(1,2)+M(1,1)^2*K(2,2)^2-2*M(2,2)*K(1,1)*M(1,1)*K(2,2)-2*K(2,1)*M(1,2)*M(1,1)*K(2,2)+M(2,2)^2*K(1,1)^2-2*M(2,2)*K(1,1)*K(2,1)*M(1,2)+K(2,1)^2*M(1,2)^2+4*M(1,1)*K(2,1)*M(2,2)*K(1,2)

y =

(-M(2,1)*exp(1/2*(-(-2*K(1,2)*M(2,1)+2*M(1,1)*K(2,2)+2*M(2,2)*K(1,1)-2*K(2,1)*M(1,2)-2*(M(2,1)^2*K(1,2)^2-2*M(2,1)*K(1,2)*M(1,1)*K(2,2)-2*M(2,2)*K(1,1)*M(2,1)*K(1,2)-2*K(2,1)*M(1,2)*M(2,1)*K(1,2)+M(1,1)^2*K(2,2)^2-2*M(2,2)*K(1,1)*M(1,1)*K(2,2)-2*K(2,1)*M(1,2)*M(1,1)*K(2,2)+M(2,2)^2*K(1,1)^2-2*M(2,2)*K(1,1)*K(2,1)*M(1,2)+K(2,1)^2*M(1,2)^2+4*M(1,1)*K(2,1)*M(2,2)*K(1,2)+4*M(2,1)*K(1,1)*K(2,2)*M(1,2))^(1/2))/(M(1,1)*M(2,2)-M(1,2)*M(2,1)))^(1/2)*t)*C3*K(1,2)*(-(-2*K(1,2)*M(2,1)+2*M(1,1)*K(2,2)+2*M(2,2)*K(1,1)-2*K(2,1)*M(1,2)-2*(M(2,1)^2*K(1,2)^2-2*M(2,1)*K(1,2)*M(1,1)*K(2,2)-2*M(2,2)*K(1,1)*M(2,1)*K(1,2)-2*K(2,1)*M(1,2)*M(2,1)*K(1,2)+M(1,1)^2*K(2,2)^2
发表于 2011-3-30 09:20:39 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
1# gaoshuai008
  1. [x,y]=dsolve('D2x+2*D2y+3*x+4*y=0',...
  2. '2*D2x+D2y+4*x+3*y=0');
复制代码

  1. >> x

  2. x =

  3. (21^(1/2)*C5*cos((21^(1/2)*t)/3))/7 - C7*sin(t) - C8*cos(t) + (21^(1/2)*C6*sin((21^(1/2)*t)/3))/7

  4. >> y

  5. y =

  6. C8*cos(t) + C7*sin(t) + (21^(1/2)*C5*cos((21^(1/2)*t)/3))/7 + (21^(1/2)*C6*sin((21^(1/2)*t)/3))/7
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-30 10:23:10 | 显示全部楼层 来自 陕西西安
多谢斑竹出售相救啊!
我想要结果能随矩阵值的不同而结果不同,如果像您这样改的话,每次遇到不同的矩阵都必须手动改掉dsolve()里面的系数,有点麻烦。不知道如何让dsolve里面的系数与矩阵元素关联,而结果显示是数值?有没有这种方法,或者是我的想法就是错的?恳请大神指点迷津啊!!!
2# qibbxxt
回复 不支持

使用道具 举报

发表于 2011-3-30 11:55:27 | 显示全部楼层 来自 陕西西安
3# gaoshuai008
用匿名函数可以很方便的进行参数传递,此外你也可以在版内搜索关键词
参数传递
非线性方程
之类的,里面讨论有很多的

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-30 12:36:16 | 显示全部楼层 来自 陕西西安
多谢指点,我去看看 4# mhkmars
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 23:27 , Processed in 0.044307 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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