LabVIEW是一种图形化的编程语言,在框图程序中,如果涉及到了复杂的数学运算,框图程序的连线将会十分繁琐复杂,而且不直观,调试、改错也不是太方便,这时候,就可以用LabVIEW中提供的公式节点函数实现相应的计算功能了,其位于函数面板的“编程”-->“结构”子面板中。
在公式节点中输入文本公式时,其语法同C语言类似,如每个公式语句必须以分号结束,可使用内置的多种数学函数,包括abs、sin、sinc、cos、ceil、exp、floor、log、log2、max、min、mod、pow、rand、sign、tanh等,同时,公式节点中可声明变量,也支持一些常用的C语言的语句(包括赋值语句、if条件语句、 for和do、while循环语句、Switch分支语句)等。公式节点与C语言语言的区别在于一些变量类型的声明上有着细微区别。
利用公式节点,将数学公式的文本表达式输入在公式节点的框图内,并连接相应的输入、输出端口,则LabVIEW会自动根据公式计算出正确的结果,并从输出端输出。
下面通过使用公式节点求解一元二次方程的例子,说明公式节点的编程方法。
示例说明
对于如下的一元二次方程:
设计LabVIEW程序,输入一元二次方程的三个系数a、b、c,求解出该方程的两个根,并且允许用户在程序中多次输入不同的系数,以求解不同的一元二次方程的解。
根据题目要求,设计前面板如下图所示:
在前面板上,a、b、c三个控件用作一元二次方程系数的输入,x1、x2作为方程根的结果输出。其中,a、b、c控件类型为double(双精度)类型,x1、x2为complex double(双精度复数)类型。
编程思路及程序框图实现
对于上面的一元该方程,令delta=b^2-4*a*c,从数学上来讲,需根据delta的值来判断该方程的根情况:
当delta>=0时,其两个根为实数解,分别为(-b+sqrt(delta))/(2*a)和(-b-sqrt(delta))/(2*a);
当delta<0时,其两个根为复数解,实部皆为-b/(2*a),虚部分别为sqrt(-delta)/(2*a)和-sqrt(-delta)/(2*a)。
其中,sqrt(delta)代表对delta作开根号运算。
根据上面的分析,设计程序框图如下图所示:
程序框图使用while循环+事件结构的框架,在三个系数a、b、c值改变事件中使用公式节点计算方程的根。
在公式节点中,根据a、b、c的输入,判断delt的值,根据其值情况求解一元二次方程的根。两个根皆用复数表示,在公式内部求解其实部和虚部值。注意,当delt>0时,其虚部值为0。最后,在公式节点外部使用“实部虚部至复数转换”函数将其组合为复数,作为最终方程的根。
至此,程序就设计完成了,当在前面板修改系数a、b、c的值时,会实时显示出当前一元二次方程的根情况。
总结
这儿演示了在LabVIEW中使用公式节点求解一元二次方程根的编程方法,通过这个例子,可看出在LabVIEW中使用公式节点进行编程的一般步骤如下:
2. 在框中输入文本行表示的数学公式和文本语句
3. 添加输入/输出数据端口,并命名(与公式中变量同名)
4. 将数据端口与公式节点的输入/输出端口进行连接,通过输出端口得到计算结果
本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!