24小时热门版块排行榜    

查看: 1147  |  回复: 4

zw12332111

金虫 (正式写手)

[交流] matlab函数调用不可赋值 已有1人参与

设计的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
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)

★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
jjdg: 金币+2, 感谢参与 2017-12-30 18:26:42
这个是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)
2楼2017-12-30 08:49:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zw12332111

金虫 (正式写手)

引用回帖:
2楼: Originally posted by somomo91 at 2017-12-30 08:49:48
这个是fuo函数里面转换问题

syms  y(t) 会直接把 t 也转换成 sym , 取代 前面的 赋值,比如  t=800
所以,你需要添加一个变量,
最后 用 subs 来运行

t0 = t;
syms k s b y(t);
y = vpa(dsolve(diff(y,t) ...

大神解释的对!但是修改后还是不能赋值计算,之后修改如下:
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
就可以了,再次感谢
3楼2017-12-30 14:04:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)

★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
jjdg: 金币+1, 感谢参与 2017-12-30 18:26:54
引用回帖:
3楼: Originally posted by zw12332111 at 2017-12-30 14:04:39
大神解释的对!但是修改后还是不能赋值计算,之后修改如下:
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=s ...

嗯,这里其实就是一个变量调用,和 函数执行 的问题
上面我例子,我没在 function 里面测试,是主程序,所有的变量对于 subs 是可见的,
t = t0; 会清除上面对 t 是 sym 的声明,所以没有问题
但是到了function 里面,就不同了,就会出问题
4楼2017-12-30 17:52:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zw12332111

金虫 (正式写手)

引用回帖:
4楼: Originally posted by somomo91 at 2017-12-30 17:52:53
嗯,这里其实就是一个变量调用,和 函数执行 的问题
上面我例子,我没在 function 里面测试,是主程序,所有的变量对于 subs 是可见的,
t = t0; 会清除上面对 t 是 sym 的声明,所以没有问题
但是到了function ...

谢谢

发自小木虫Android客户端
5楼2018-01-01 10:40:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 学员fMdZ05 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见