MATLAB函数可以将数学函数作为输入吗?

时间:2016-04-08 03:31:29

标签: algorithm matlab math symbolic-math

我对这个网站和MATLAB都是全新的,所以如果我的问题是天真的,或者是某些现有问题的重复,请原谅。

好吧,我是一名数学学生,使用MATLAB来帮助我的项目。有一个叫做“L ^ 2内积”的东西,你需要2个数学函数,f(x)和g(x),作为输入。它应该像

一样工作
  

inner(f,g)= integrat f(x)* g(x)从0到1.

问题是我不知道如何在MATLAB中编写它。

总而言之,我想创建一个 MATLAB函数,其输入是两个数学函数,输出是一个实数。我知道如何制作内联对象,但我不知道如何继续进行。任何帮助都将受到高度赞赏。

PS。我不知道我的标签是否合适或是否适合主题,请耐心等待。

1 个答案:

答案 0 :(得分:1)

我将基于@transversality条件更详细地编写的内容(例如,应该有。*)

匿名函数的说明性示例

h = @sin % This assigns h the function handle of the sin function
         % If you know c, c++, this is basically a function pointer

inner = @(f,g)integral(@(x)f(x).*g(x),0,1) % This assigns  the variable inner
                                           % the function hanlde of a function which 
                                           % takes in two function handles f and g
                                           % and calculates the integral from 0 to 1
                         % Because of how Matlab works, you want .* here;
                         % you need f and g to be fine with vector inputs.

inner(h, @cos)           %this will calculate $\int_0^1 sin(x)cos(x)dx$

这产生0.354

将内部写为常规函数

在前面的示例中,inner是一个变量,变量的值是计算内积的函数的函数句柄。您也可以编写一个计算内积的函数。使用以下代码创建文件myinner.m

function y = myinner(f, g)
y = integral(@(x)f(x).*g(x),0,1);

然后你可以用同样的方式打电话给myinner:

myinner(@sin, @cos)

结果:0.354

另请注意,integral函数以数字方式计算积分,在奇怪的情况下,可能存在数值问题。