24小时热门版块排行榜    

查看: 4437  |  回复: 12

星——星

新虫 (初入文坛)

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

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

matlab中已知积分结果,求变量的值
1852167079.jpg
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

星——星: 回帖置顶 2016-08-20 16:14:54
代码没缩进了,重发一下
函数代码:
CODE:
function F=myfun(t)     
  ubound=10000;     
  x=0:0.1:ubound;     
  y=sqrt(x)./(1+exp(x-t));     
  F=trapz(x,y);%梯形积分

求解代码:
CODE:
clear,clc
F=1.4893 ;   %给定的F值
ta=0;tb=100;
fa=F-myfun(ta);
fb=F-myfun(tb); %fa*fb<0即可,不满足的话可以适当放大区间
error=inf;
while error>0.001   %自定义精度     
    tc=(ta+tb)/2;     
    fc=F-myfun(tc);     
    if fa*fc<0         
        tb=tc;     
    else         
        ta=tc;     
    end     
    error=tb-ta;
end
t=(ta+tb)/2;
t

11楼2016-08-20 00:37:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

月只蓝

主管区长 (职业作家)

代入高精度的辛普森积分公式,将原式化成只包含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的回帖

星——星

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by yz457694 at 2016-08-18 23:13:34
如下:
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

现在无法知道t的真实值是多少,可以随便赋一个初值吗?
5楼2016-08-19 11:51:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

引用回帖:
5楼: Originally posted by 星——星 at 2016-08-19 11:51:28
现在无法知道t的真实值是多少,可以随便赋一个初值吗?...

可以的,比如1 ,0, -1 均可,解不出来或者结果跟预期有差异的时候再适当调整初值

发自小木虫Android客户端
6楼2016-08-19 12:49:44
已阅   回复此楼   关注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的回帖

yz457694

铁杆木虫 (正式写手)

引用回帖:
7楼: Originally posted by 星——星 at 2016-08-19 14:27:41
嗯嗯,我开始赋的1结果显示:
>> main1
错误使用 fzero (line 309)
起始猜测处的函数值必须为有限实数。

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

然后赋0时,显示:
& ...

不能乱取的,电脑不在边上,刚用计算器算了一组数据,你可以代进去试试: 取F=1.4893  t0=1
算出来t=1.1左右
应该可以求出来,刚开始我用的一个简单的方程验证了一下代码,能通就直接给你发了,如果还不行,我晚上回去调试下

发自小木虫Android客户端
8楼2016-08-19 15:35:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

星——星

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by yz457694 at 2016-08-19 15:35:35
不能乱取的,电脑不在边上,刚用计算器算了一组数据,你可以代进去试试: 取F=1.4893  t0=1
算出来t=1.1左右
应该可以求出来,刚开始我用的一个简单的方程验证了一下代码,能通就直接给你发了,如果还不行,我晚上回 ...

嗯嗯,我把F=1.4893  t0=1带进去算了,还是显示:
错误使用 fzero (line 309)
起始猜测处的函数值必须为有限实数。

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

也无法得出t的值。
9楼2016-08-19 23:04:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
星——星: 金币+10, ★★★★★最佳答案, 多谢大侠~ 2016-08-23 19:46:54
不好意思,我想简单了,这种情况下用int积不出来的,只能通过取足够大的上界来近似代替无穷积分(调整上界就可以调整积分精度)。刚看了看,我给你分析一下思路吧(跟二楼差不多)
首先来分析一下F随t的变化趋势,有助于进一步判断
CODE:
for i=1:100     
  t(i)=-50+i;   
  ubound=10000;   %该积分收敛,上界取足够大即可接近无穷积分值     
  x=0:0.1:ubound;     
  y=sqrt(x)./(1+exp(x-t(i)));
  F(i)=trapz(x,y);%梯形积分
end
plot(t,F)

如图1所示,F随t单调增加的。对于给定的F值,就可以试差来确定t的值了。
下面我用二分法(简单便于理解,方法还有很多)来做一下。
定义函数myfun来求F:
CODE:
function F=myfun(t)     ubound=10000;     x=0:0.1:ubound;     y=sqrt(x)./(1+exp(x-t));     F=trapz(x,y);%梯形积分

二分法代码:
CODE:
clear,clc F=   ;   %给定的F值 ta=0;tb=100; fa=F-myfun(ta); fb=F-myfun(tb); %fa*fb<0即可,不满足的话可以适当放大区间 error=inf; while error>0.001   %自定义精度     tc=(ta+tb)/2;     fc=F-myfun(tc);     if fa*fc<0         tb=tc;     else         ta=tc;     end     error=tb-ta; end t=(ta+tb)/2; t

举例:F=1.4893时,结果如图2所示
matlab中已知积分结果,求变量的值-1
图1.png


matlab中已知积分结果,求变量的值-2
图2.png

10楼2016-08-20 00:33:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 星——星 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 情人节自我反思:在爱情中有过遗憾吗? +5 瞬息宇宙 2026-02-15 6/300 2026-02-18 12:51 by 月下雪林
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 11:09 by lqtl9djx19
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:54 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:39 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:53 by lqtl9djx19
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:38 by lqtl9djx19
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 07:55 by lotyj5cz79
[基金申请] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:40 by lotyj5cz79
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:38 by lotyj5cz79
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:23 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:08 by lotyj5cz79
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 3/150 2026-02-18 06:53 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 00:40 by tk2gfblvuz
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 00:23 by tk2gfblvuz
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-17 23:40 by tk2gfblvuz
[基金申请] 基金正文30页指的是报告正文还是整个申请书 +3 successhe 2026-02-16 4/200 2026-02-17 20:56 by successhe
[基金申请] 今年春晚有几个节目很不错,点赞! +5 瞬息宇宙 2026-02-16 6/300 2026-02-17 12:49 by jymy19840415
[微米和纳米] 球磨粉体时遇到了大的问题,请指教! 10+3 6sbiam 2026-02-12 15/750 2026-02-16 15:03 by tgzxzqj
[基金申请] 过年走亲戚时感受到了所开私家车的鄙视链 +3 瞬息宇宙 2026-02-15 5/250 2026-02-16 14:23 by aspect3000
[硕博家园] 江汉大学解明教授课题组招博士研究生/博士后 +3 cleverlyy 2026-02-12 3/150 2026-02-12 21:02 by qsdf1
信息提示
请填处理意见