带参数的数值积分,帮忙看下哪错了。

6 次查看(过去 30 天)
bidefe
bidefe 2022-11-25
回答: fowinec 2022-11-25
求y=kx在【1,5】上的积分:
k=linspace(0,5);
>> for i=1:length(k)
kk=k(i);
fun=inline('kk.*x','x');
y(i)=quadl(fun,1,5);
end

采纳的回答

fowinec
fowinec 2022-11-25
对于这类带(向量化)参数的积分,可以用向量化积分函数一次性计算,不需要循环调用来调用多次积分函数。另外,楼上版主说得对,尽量用匿名函数代替inline函数,inline函数调用开销比较大,而且使用很不灵活,尤其是参数传递方面,像你这里,参数k就无法传递进去。但是匿名函数就不用担心参数传递了。
k=linspace(0,5);
y1 = quadv(@(x) k*x, 1, 5);
y2 = integral(@(x) k*x, 1, 5, 'ArrayValued', true);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 函数基础知识 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!