level 4
任道正
楼主
进来使用Plot函数发现了一些问题,特意向高手请教,具体问题是这样的:
1. 首先我定义了一个函数,比如fun[a_]:=NIntegrate[f[a,b],{b,0,1}]; 可以看出这里对函数f(a,b)中的b进行了数值积分(既然采用数值积分,肯定就说明函数f的直接积分是求不出了的咯)!
2. Plot[fun[a],{a,0,2}]即会报错——“对于所有采样点,计算被积函数****得到非数值"
原因:Plot[fun[a],{a,0,2}]绘图时,Plot函数并不是讲a=0,a=0.0001,a=0.0002……a=2依次带入fun[a]计算然后画图,Plot函数是直接计算fun[a],这里就出现问题了,因为fun函数中包涵数值积分NIntegrate,但里面的参数a仍然是变量,没有被替换成相应的数值,所以NIntegrate肯定会返回非数值结果了!这个问题怎么解决呢???
目前我的解决方案是,ListLinePlot[Table[{a,fun[a]},{a,0,2,1/100}]]即先用Table生成一个列表,然后ListLinePlot,但这样毕竟有诸多不便,有没有什么更好的方法呢?
2017年10月18日 07点10分
1
1. 首先我定义了一个函数,比如fun[a_]:=NIntegrate[f[a,b],{b,0,1}]; 可以看出这里对函数f(a,b)中的b进行了数值积分(既然采用数值积分,肯定就说明函数f的直接积分是求不出了的咯)!
2. Plot[fun[a],{a,0,2}]即会报错——“对于所有采样点,计算被积函数****得到非数值"
原因:Plot[fun[a],{a,0,2}]绘图时,Plot函数并不是讲a=0,a=0.0001,a=0.0002……a=2依次带入fun[a]计算然后画图,Plot函数是直接计算fun[a],这里就出现问题了,因为fun函数中包涵数值积分NIntegrate,但里面的参数a仍然是变量,没有被替换成相应的数值,所以NIntegrate肯定会返回非数值结果了!这个问题怎么解决呢???
目前我的解决方案是,ListLinePlot[Table[{a,fun[a]},{a,0,2,1/100}]]即先用Table生成一个列表,然后ListLinePlot,但这样毕竟有诸多不便,有没有什么更好的方法呢?
