Function 在两个变量的网格上计算多元函数

Function 在两个变量的网格上计算多元函数,function,grid,evaluate,Function,Grid,Evaluate,我可能应该删除这个问题,因为我在stackoverflow的其他地方找到了答案 使用“矢量化”解决了这个问题 outer(x,y,Vectorize(model)) 我会把这个留一点,以防对其他人有帮助。我遇到的问题描述如下 我偶尔使用R,主要用于科学编程。我想计算x,y值网格上的函数。类似于此简单示例的内容: > x=seq(1,5,1) > y=seq(1,5,1) > model = function(a,b){a+b} > (outer(x,y,model

我可能应该删除这个问题,因为我在stackoverflow的其他地方找到了答案

使用“矢量化”解决了这个问题

outer(x,y,Vectorize(model))
我会把这个留一点,以防对其他人有帮助。我遇到的问题描述如下

我偶尔使用R,主要用于科学编程。我想计算x,y值网格上的函数。类似于此简单示例的内容:

> x=seq(1,5,1)
> y=seq(1,5,1) 
> model = function(a,b){a+b}


> (outer(x,y,model))
[,1] [,2] [,3] [,4] [,5]
[1,]    2    3    4    5    6
[2,]    3    4    5    6    7
[3,]    4    5    6    7    8
[4,]    5    6    7    8    9
[5,]    6    7    8    9   10
我的实际函数的输入和输出如下所示(圆形管道中“交叉”流体的体积流量):

我想在值网格上计算函数,例如,press_drop和pipe_diameter。那么,定义这两个变量的函数

> model = function(a,b){SimpleCrossModelCircPipe(eta_0 = 176.45, lambda = 2.4526, 
m=0.83122, mesh=1000,pipe_length=1.925, press_drop=a, pipe_diameter=b)}
仅对于一对值,这是可行的:

> model(1,2)
[1] 107249.8
但是,如果我与'outer'一起使用,则有一个错误

> (outer(x,y,model))
序列默认值中的错误(tau_wall,0,length.out=网格+1): “from”的长度必须为1

如果我为局部变量tau_wall放置一个print语句,在移动到生成错误的行之前,使用outer生成所有25个值,因为tau_wall的长度应该是1,而不是25

(outer(x,y,model))
 [1]  352.5289  705.0579 1057.5868 1410.1158 1762.6447  705.0579 1410.1158 2115.1736
 [9] 2820.2315 3525.2894 1057.5868 2115.1736 3172.7605 4230.3473 5287.9341 1410.1158
[17] 2820.2315 4230.3473 5640.4630 7050.5788 1762.6447 3525.2894 5287.9341 7050.5788
[25] 8813.2235
有没有一个简单的解决方法可以让它工作

最好的

史蒂夫

(outer(x,y,model))
 [1]  352.5289  705.0579 1057.5868 1410.1158 1762.6447  705.0579 1410.1158 2115.1736
 [9] 2820.2315 3525.2894 1057.5868 2115.1736 3172.7605 4230.3473 5287.9341 1410.1158
[17] 2820.2315 4230.3473 5640.4630 7050.5788 1762.6447 3525.2894 5287.9341 7050.5788
[25] 8813.2235