计算函数的近似值
在本演示中,我们将研究使用Engee计算函数近似值的可能性,并检查用于解决此问题的基本块。
区块分析
Prelookup块计算区间的数量和分数,这决定了其输入值u与一组参考点的关系。
使用Prelookup块的插值在使用Prelookup块时最有效。 Prelookup块计算区间的索引和分数,它们确定其输入值u如何与断点的数据集相关联。 所得到的索引和分数值被送入使用预查询块进行n维表插值的插值。 两个块都集成了算法。
N-D查找表块计算函数的近似值。 该块及其变体使用插值和外推方法将输入数据与输出值表进行比较。
**直接查找表(n-D)**块索引n维表以提取标量、矢量或二维矩阵。 第一选择索引对应于上(或左)输入端口。 您可以将表数据指定为块的输入,或在块对话框中定义表数据。 输入端口的数量和输出的大小取决于表大小和所选输出切片的数量。
模型实现
接下来,让我们看看使用上面列出的所有块的模型。
现在让我们为模型添加表和搜索点的初始化。 让我们从直接查找表(n-D)和2-D查找表块开始,并连接数据处理和可视化所需的库。
In [ ]:
# Подключение библиотек
using DataFrames
using Plots
In [ ]:
Points2D = [1, 2, 3]; # Точки индексации
Matrix2D = [4 50 6; 16 19 20; 10 18 23] # Таблица
Out[0]:
In [ ]:
# Точки для чтения
X = 1;
Y = 2;
idx = [X,Y];
In [ ]:
# Точки для чтения
X = 1;
Y = 2;
idx = [X,Y];
现在让我们使用Prelookup初始化Prelookup和插值,并绘制点与表的比率。
In [ ]:
Value1 = 10:10:110; # Точки
Value2 = sqrt.(collect(1:11) * collect(1:11)'); # Таблица
plot(Value1, Value2)
Out[0]:
没有声明初始化参数的最后一个块是1-D查找表。
In [ ]:
Points1D = 1:1:100; # Точки индексации
Matrix1D = sin.(1:2:200); # Таблица
A = 50; # Амплитуда генератора сигналов
plot(Points1D,Matrix1D)
Out[0]:
让我们使用指定的参数运行模型。
In [ ]:
function run_model( name_model, path_to_folder )
Path = path_to_folder * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return model_output
end
Out[0]:
In [ ]:
res = run_model("Lookup_Table","/user/start/examples/base_simulation/lookup_table")
Out[0]:
让我们考虑res变量中包含的模拟结果。
在第一种情况下,我们计算了来自Matrix2D的列。
In [ ]:
df = collect(res["Direct Lookup Table (n-D).1"]);
println(df[1,2])
在第二种情况下,我们将Matrix2D中的值计算到单元格**[X,Y]**中。
In [ ]:
df = collect(res["2-D Lookup Table.1"])
println(df[1,2])
在使用Prelookup插值的第三种情况下,我们正在从Prelookup**读取数据。
In [ ]:
df = collect(res["Interpolation Using Prelookup.1"])
plot(df[!,2])
Out[0]:
在后一种情况下,我们从1-D查找表中读取正弦曲线。
In [ ]:
df = collect(res["1-D Lookup Table (mod.).1"])
plot(df[!,2])
Out[0]:
结论
作为这个演示的结果,我们已经展示了如何使用各种块来计算函数的近似值。
并且还实现了两个功能:
- 启动模型;
- 用写入的矩阵解析CSV。