matlab函数调用不可赋值
设计的function,调用fu0(800)时得到结果为:
>> c=fu0(800)
c =
23107197116.874122942902443913907*k*s^b - 18.224563066100490240746478103187*k*s^b*(1267965000.0*exp(-0.03404*t) - 49987.0*exp(-2.966*t)) + 25705.229999999999563442543148994
结果中并没有把800赋值给函数计算,不知道什么问题,请各位高手帮忙看下是什么问题,感谢了。
fuo函数为
function y=fu0(t)
syms k s b y(t);
y = vpa(dsolve(diff(y,t)==k*s^b*(786600000*exp(-0.03404*t)-2702000*exp(-2.966*t)),y(0)==25705.23));
end 返回小木虫查看更多
今日热帖
这个是fuo函数里面转换问题
syms y(t) 会直接把 t 也转换成 sym , 取代 前面的 赋值,比如 t=800
所以,你需要添加一个变量,
最后 用 subs 来运行
t0 = t;
syms k s b y(t);
y = vpa(dsolve(diff(y,t)==k*s^b*(786600000*exp(-0.03404*t)-2702000*exp(-2.966*t)),y(0)==25705.23));
t = t0;
subs(y)
大神解释的对!但是修改后还是不能赋值计算,之后修改如下:
function y= fu0(x)
syms y(t) k s b;
y=vpa(dsolve(diff(y,t)==k*s^b*(786600000*exp(-0.03404*t)-2702000*exp(-2.966*t)),y(0)==25705.23));
y=subs(y,t,x);
end
就可以了,再次感谢
,
嗯,这里其实就是一个变量调用,和 函数执行 的问题
上面我例子,我没在 function 里面测试,是主程序,所有的变量对于 subs 是可见的,
t = t0; 会清除上面对 t 是 sym 的声明,所以没有问题
但是到了function 里面,就不同了,就会出问题