# Merging/Multiplying Functions

183 ビュー (過去 30 日間)
yuval 2017 年 4 月 19 日
コメント済み: Star Strider 2024 年 4 月 14 日
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 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 件のコメント4 件の古いコメントを表示4 件の古いコメントを非表示
Grant Peel 2024 年 4 月 14 日
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 2024 年 4 月 14 日
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!
.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

### Community Treasure Hunt

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

Start Hunting!

Translated by