将两个函数的句柄相乘并将ode45应用于结果

Sergio Haram |

我有以下离散形式的函数(这意味着它们是数组):

p1_1 of dim(200x1)
p1_2 of dim(200x1)
p1_3 of dim(200x1)
p2_1 of dim(200x1)
p2_2 of dim(200x1)
p2_3 of dim(200x1) 

函数p1_1, p1_2, p1_3已被评估为一个点,x1 = 0:(10/199):10并且函数p2_1, p2_2, p2_3为该点x2 = 0:(10/199):10

由于我具有函数值和评估函数的点,因此我可以执行以下操作:

fun1_of_p1 = @(xq1) interp1(x1,p1_1,xq1);
fun1_of_p2 = @(xq1) interp1(x1,p1_2,xq1);
fun1_of_p3 = @(xq1) interp1(x1,p1_3,xq1);

fun2_of_p1 = @(xq2) interp1(x2,p2_1,xq2);
fun2_of_p2 = @(xq2) interp1(x2,p2_2,xq2);
fun2_of_p3 = @(xq2) interp1(x2,p2_3,xq2);

然后,我需要能够执行以下操作:

new_fun1 = @(xq1,xq2) fun1_of_p1.*fun2_of_p1;
new_fun2 = @(xq1,xq2) fun1_of_p1.*fun2_of_p2;
new_fun3 = @(xq1,xq2) fun1_of_p1.*fun2_of_p3;
new_fun4 = @(xq1,xq2) fun1_of_p2.*fun2_of_p1;
new_fun5 = @(xq1,xq2) fun1_of_p2.*fun2_of_p2;
new_fun6 = @(xq1,xq2) fun1_of_p2.*fun2_of_p3;
new_fun7 = @(xq1,xq2) fun1_of_p3.*fun2_of_p1;
new_fun8 = @(xq1,xq2) fun1_of_p3.*fun2_of_p2;
new_fun9 = @(xq1,xq2) fun1_of_p3.*fun2_of_p3;

最后

 last_fun = @(xq1,xq2) gamma1*new_fun1 + gamma2*new_fun2 +...
 gamma3*new_fun3 + gamma4*new_fun4 + gamma5*new_fun4 +...
 gamma6*new_fun6 + gamma7*new_fun7 + gamma8*new_fun8 +...
 gamma9*new_fun9;

gamma-值只是常数(实值常数)。定义好之后last_fun,我需要应用ode45它,但是我不知道该怎么做,我尝试了:

([T,V] = ode45(@(xq1,xq2)last_fun(xq1,xq2),tspan,x0)

但这是行不通的。其实我不知道我所做的一切是否正确,所以一些反馈将不胜感激!

用户名

可以将功能的句柄视为可以识别该功能标签(或地址,ID等)。这些标记可以是数字(计算机中的所有数字都是数字),但是它们并不代表函数可能采用的值。要获取值,您必须提供函数的ID函数的参数。

现在,当您说函数乘法时,您的意思是一个函数,该函数返回函数的乘积,而不是函数标签的乘积得出正确的定义:

new_fun1 = @(xq1,xq2) fun1_of_p1(xq1).*fun2_of_p1(xq2);
new_fun2 = @(xq1,xq2) fun1_of_p1(xq1).*fun2_of_p2(xq2);
new_fun3 = @(xq1,xq2) fun1_of_p1(xq1).*fun2_of_p3(xq2);
new_fun4 = @(xq1,xq2) fun1_of_p2(xq1).*fun2_of_p1(xq2);
new_fun5 = @(xq1,xq2) fun1_of_p2(xq1).*fun2_of_p2(xq2);
new_fun6 = @(xq1,xq2) fun1_of_p2(xq1).*fun2_of_p3(xq2);
new_fun7 = @(xq1,xq2) fun1_of_p3(xq1).*fun2_of_p1(xq2);
new_fun8 = @(xq1,xq2) fun1_of_p3(xq1).*fun2_of_p2(xq2);
new_fun9 = @(xq1,xq2) fun1_of_p3(xq1).*fun2_of_p3(xq2);

请也last_fun以相同的方式更正该表达式:

last_fun = @(xq1,xq2) ...
     gamma1*new_fun1(xq1,xq2) ...
   + gamma2*new_fun2(xq1,xq2) ...
   + gamma3*new_fun3(xq1,xq2) ...
   + gamma4*new_fun4(xq1,xq2) ...
   + gamma5*new_fun4(xq1,xq2) ...
   + gamma6*new_fun6(xq1,xq2) ...
   + gamma7*new_fun7(xq1,xq2) ...
   + gamma8*new_fun8(xq1,xq2) ...
   + gamma9*new_fun9(xq1,xq2);

正确的调用ode45将是:

[T,V] = ode45(last_fun,tspan,x0);

前提是tspanx0是向量,并且tspan按升序排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将多个函数应用于一列并将结果发送到两个新列

将两个自变量的函数应用于两个矩阵

从应用于两个向量的函数创建结果矩阵

将函数应用于R中两个矩阵的所有列对

python pandas-将具有两个参数的函数应用于列

将“或”函数应用于两个以上的向量Matlab

R将函数应用于两个向量的连续值

以“ R”方式将函数应用于两个向量?

将函数应用于两个不同长度的向量,并返回R中的矩阵

将函数应用于带有两个参数的pandas数据框中的列

如何将函数应用于数组并形成两个单独的数组?

将两个(或多个)选项值应用于F#中的函数的正确方法

F# - 将函数应用于两个不同长度的数组

将需要两个整数的 map 函数应用于列表列表

如何在Mathematica中使用两个参数将Map []应用于函数?

是否可以将两个函数应用于 Clojure 中的列表?

使用Pool和multiprocessing同时将两个函数应用于两个列表

如何使用mapply将函数应用于两个不同数据帧中的两个不同列

将功能元素应用于两个DataFrame

Git:将更改应用于两个分支

可以将矢量化应用于由两个或多个函数定义的函数Z = f(X,Y)

什么是迭代两个流并将操作应用于一个的更好方法

VBA遍历2个范围并将IF语句应用于这两个范围的值

有条件地将两个函数之一应用于一个参数

MASM32函数,将两个双精度数字相乘并将其返回

R-将功能应用于文件夹中具有for循环或lapply的两个文件,并将结果保存在一个数据框中

将两个参数函数应用于列表以使用NumPy生成对称矩阵

将函数应用于熊猫数据框的每一行以创建两个新列

将函数应用于熊猫数据框的每一行以创建两个新列