matlab中下列程序为什么出错?

问题描述:

matlab中下列程序为什么出错?
syms m k t v n
g=exp(- (m*v^2)/(2*k*t))*v^2;
a=m/(2*k*t);f=int(exp(- a*v^2)*v^n,v,0,inf);
b=f*4*pi*(a/pi)^(3/2);
pretty(solve(diff(g,v))); %求解最概然速率
n=2;eval(simple(eval(b))), %证明归一化条件
n=3;pretty(simple(eval(b))), %求解平均速率
n=4;pretty(eval(simple(eval(b^0.5)))), %求解方均根速率
我知道在符号积分中出现多个参数 ,我只对v进行积分,按理说第五个得到的应该是1,为什么改不了,应该如何修改?
1个回答 分类:综合 2014-10-04

问题解答:

我来补答
【按理说第五个得到的应该是1,为什么改不了】看不懂你的这句话——第五个是指哪个?“改不了”是什么意思? 很可能是因为符号运算内核导致的.我在几个不同的版本里面做了测试,对于MuPad内核的版本(2008b之后),都不能求解;而对于Maple内核的版本(2008a之前),6.5版中int函数求不出显式解,后续计算失败,而在2007b中,可以得到:>> pretty(solve(diff(g,v)));
 
                              [        0        ]
                              [                 ]
                              [  1/2        1/2 ]
                              [ 2    (m k t)    ]
                              [ --------------- ]
                              [        m        ]
                              [                 ]
                              [   1/2        1/2]
                              [  2    (m k t)   ]
                              [- ---------------]
                              [         m       ]
>> n=2;eval(simple(eval(b)))
ans =
    1.0000
>> n=3;pretty(simple(eval(b)))
 
                                1/2           1/2
                               2    (m k t pi)
                             2 ------------------
                                      m pi
>> n=4;pretty(eval(simple(eval(b^0.5))))
 
                                  1/2 /k t\1/2
                                 3    |---|
                                      \ m /其中n=2的那一行应该就是你说的“第五个”吧?
再问: 为什么不同的版本会出现结果计算不同,我用的是2012a,运行提示sym/eval功能错误,到底问题出现在哪,应该更改什么才能得到上图的结果?
再答: MATLAB的优势主要是数值运算,符号运算是借助于调用其它软件的内核完成的。早期的版本用的是Maple内核,从2008b开始,改用MuPad内核。接触MATLAB比较早的人普遍认为Maple内核优于MuPad内核,所以有不少人在多数场合都愿意使用早期的版本,就拿我来说,使用最频繁的版本是2008a(稍早些时候用6.5更多,但因Win7兼容性的问题,用的少了)。

即使是相同的内核,各版本也很可能存在差异,毕竟软件一直在更新完善。如果是相同内核出现不同的结果(比如6.5与2007b),还比较容易分析原因并尝试解决;而对于不同内核来说,就很难解决了,能给你的建议就是:如果以后需要比较多的用到符号运算,请考虑装一个早期版本(2008a或更早)的MATLAB,或者直接使用Maple、Mathematica之类的软件,它们在符号运算方面比MATLAB强大很多。
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识