rfj123 发表于 2008-10-14 10:27

怪呀,参数的命名影响计算结果吗?

改变一个参数Tn的名字就导致Error:@@ ,是不是我的Matlab坏了?
function test4
Tn=1.5;
a=0.7;
m=dsolve('Dm=a*x+Tn','m(0)=-2','x')
m=subs(m)
结果都正常,test4回车
m =
1/2*a*x^2+Tn*x-2
m =
7/20*x^2+3/2*x-2,      但是把“Tn”改成“T_n”就出错了,

function test4
T_n=1.5;
a=0.7;
m=dsolve('Dm=a*x+T_n','m(0)=-2','x')
m=subs(m)

test4回车
m =
1/2*a*x^2+Tn*x-2
??? Undefined function or variable 'a'.
Error in ==> D:\Matlab\toolbox\symbolic\@sym\subs.m
On line 89==>          NEWexpr{k} = evalin('base',char(VaR{j(k)}));
Error in ==> D:\Matlab\work\test4.m
On line 5==> m=subs(m)
我再改!!!把“T_n”改成“Tm”,错误又不一样了?
function test4
Tm=1.5;
a=0.7;
m=dsolve('Dm=a*x+Tm','m(0)=-2','x')
m=subs(m)

test4回车
??? Error using ==> dsolve
Error, (in dsolve/IC) The 'implicit' option is not available when giving Initial Conditions.
Error in ==> D:\Matlab\work\test4.m
On line 4==> m=dsolve('Dm=a*x+Tm','m(0)=-2','x')

折腾了半天也不明白,这到底是怎么一回事???Matlab坏了吗:@o

sogooda 发表于 2008-10-14 11:14

你的三段程序在我这里执行的结果是一样的,不过我没有用函数文件。
>> Tn=1.5;
a=0.7;
m=dsolve('Dm=a*x+Tn','m(0)=-2','x')
m=subs(m)
m =
1/2*a*x^2+Tn*x-2
m =
7/20*x^2+3/2*x-2
>> clear
>> T_n=1.5;
a=0.7;
m=dsolve('Dm=a*x+T_n','m(0)=-2','x')
m=subs(m)
m =
1/2*a*x^2+T_n*x-2
m =
7/20*x^2+3/2*x-2
>> clear
>> Tm=1.5;
a=0.7;
m=dsolve('Dm=a*x+Tm','m(0)=-2','x')
m=subs(m)
m =
1/2*a*x^2+Tm*x-2
m =
7/20*x^2+3/2*x-2

rfj123 发表于 2008-10-14 11:58

问题确实存在,难道软件问题?
我的版本是6.5.1.199709 release 13(service pack 1)

看来是用了一个残废的版本,还用了这么久,浪费青春啊

[ 本帖最后由 ChaChing 于 2010-6-15 15:35 编辑 ]

express 发表于 2008-10-14 22:43

回复 地板 rfj123 的帖子

不一定是版本问题,可能你用的前期对该变量都赋过值,你重新赋值看看

ChaChing 发表于 2008-10-15 01:03

我用了v5.3 R11.1及v8.5.0 R13.0.1两版本试过, sogooda主任用的可能是较新版本
前两个都未报错, 第三个才报错, 我猜这是旧版的bug吧, 刚开始程式发展未考虑到那麽多可能性的输入

个人看法, 不管新旧版matlab都只是个工具罢了, 本来使用者就需有能力判断结果的对错
要吗使用较新版, 或小心使用输入方式, 控制结果的对错
页: [1]
查看完整版本: 怪呀,参数的命名影响计算结果吗?