24小时热门版块排行榜    

查看: 4321  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

星——星

新虫 (初入文坛)

[求助] matlab中已知积分结果,求变量的值

积分函数如图所示,已知函数F的值,如何用matlab求出t的值,还请各位大侠帮帮忙~

matlab中已知积分结果,求变量的值
1852167079.jpg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

星——星

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by yz457694 at 2016-08-19 12:49:44
可以的,比如1 ,0, -1 均可,解不出来或者结果跟预期有差异的时候再适当调整初值
...

嗯嗯,我开始赋的1结果显示:
>> main1
错误使用 fzero (line 309)
起始猜测处的函数值必须为有限实数。

出错 main1 (line 13)
t=eval(fzero(myfun,t0));   %也可以用fsolve

然后赋0时,显示:
>> main1
警告: 没有为 'sym' 输入定义函数。
> In num2str>cellPrintf at 174
  In num2str at 132
  In fzero>disperr at 560
  In fzero at 346
  In main1 at 13
警告: 没有为 'sym' 输入定义函数。
> In num2str>cellPrintf at 174
  In num2str at 133
  In fzero>disperr at 560
  In fzero at 346
  In main1 at 13
正在退出 fzero: 终止搜索包含符号变化的区间
    因为在搜索期间遇到复函数值。
(-0.0282843 处的函数值为 。)
请检查函数或使用其他起始值重试。
未定义与 'double' 类型的输入参数相对应的函数 'eval'。

出错 main1 (line 13)
t=eval(fzero(myfun,t0));   %也可以用fsolve
请问造成上述问题是因为赋的值不合适吗?还是说存在别的问题呢?
7楼2016-08-19 14:27:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

月只蓝

主管区长 (职业作家)

代入高精度的辛普森积分公式,将原式化成只包含t的代数式,解该代数方程即可。
或者,根据F值,试算t值,可得到t的大概范围,将t范围缩小到足够小,然后将该范围区间等分100份(或者更多),逐个扫描取F值误差左偏差和右偏差最小的两个t值,再以此两者为范围扫描100次,即可获得精度很高的t值。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2016-08-18 22:13:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
如下:
syms x;
F=      ;%给定F的值
myfun=@(t) F-int(sqrt(x)/(1+exp(x-t)),x,0,inf);
t0=     ;%给一个t的初值,最好取接近真实值,收敛会快些
t=eval(fzero(myfun,t0))   %也可以用fsolve
3楼2016-08-18 23:13:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

星——星

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-08-18 22:13:33
代入高精度的辛普森积分公式,将原式化成只包含t的代数式,解该代数方程即可。
或者,根据F值,试算t值,可得到t的大概范围,将t范围缩小到足够小,然后将该范围区间等分100份(或者更多),逐个扫描取F值误差左偏 ...

可以附上相应的代码吗?本人也是最近才开始接触Matlab,对于积分的计算还是第一次,望大侠不吝赐教
4楼2016-08-19 11:46:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见