我对这个网站和MATLAB都是全新的,所以如果我的问题是天真的,或者是某些现有问题的重复,请原谅。
好吧,我是一名数学学生,使用MATLAB来帮助我的项目。有一个叫做“L ^ 2内积”的东西,你需要2个数学函数,f(x)和g(x),作为输入。它应该像
一样工作inner(f,g)= integrat f(x)* g(x)从0到1.
问题是我不知道如何在MATLAB中编写它。
总而言之,我想创建一个 MATLAB函数,其输入是两个数学函数,输出是一个实数。我知道如何制作内联对象,但我不知道如何继续进行。任何帮助都将受到高度赞赏。
PS。我不知道我的标签是否合适或是否适合主题,请耐心等待。
答案 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
函数以数字方式计算积分,在奇怪的情况下,可能存在数值问题。