Function 在两个变量的网格上计算多元函数
我可能应该删除这个问题,因为我在stackoverflow的其他地方找到了答案 使用“矢量化”解决了这个问题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
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