Merging/Multiplying Functions

211 次查看(过去 30 天)
Hello, I haven't figured out to find a way to create a new function out of multiplying 2 functions, for example:
fun1 = @(x) sin(x);
fun2 = @(x) cos(x);
*I want to create fun3 out of them so that -*
fun3 = @(x) sin(x)*cos(x)
The reason I'm asking this is that if I define fun3 as-
fun3 = @(x) fun1(x)*fun2(x)
and obviously it doesn't turn into-
fun3=@(x) sin(x)*cos(x)
thus I can't integrate fun3-
integral(fun3,0,5) ~= int(sin(x)*cos(x),x,0,5)
Matlab just says-
Error using *
Inner matrix dimensions must agree.
Thank you

采纳的回答

Star Strider
Star Strider 2017-4-19
You need to use element-wise operations here, using the dot (.) operator for element-wise multiplication, (.*).
This works:
fun1 = @(x) sin(x);
fun2 = @(x) cos(x);
fun3 = @(x) fun1(x).*fun2(x);
int_fun3 = integral(fun3, 0, 5)
int_fun3 =
459.7679e-003
See the documentation on Array vs. Matrix Operations for a full discussion.
  6 个评论
Grant Peel
Grant Peel 2024-4-14,0:32
Does this method work with 2 dimensional functions:
fun1 = @(x,y) sin(x)*sin(y);
fun2 = @(x,y) xy;
fun3 = @(x,y) fun1(x,y).*fun2(x,y);
integral2(fun3, 0,1,0,1)
Star Strider
Star Strider 2024-4-14,1:41
The easiest way to find out is to first fully vectorise the constituent equations, and then try it —
fun1 = @(x,y) sin(x).*sin(y);
fun2 = @(x,y) x.*y;
fun3 = @(x,y) fun1(x,y).*fun2(x,y);
int_fun3 = integral2(fun3, 0,1,0,1)
int_fun3 = 0.0907
It seems that it does!
.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by