C语言编程:怎么让编写的程序理解用户给出的函数解析式,并绘制出相应的函数图像?

Python025

C语言编程:怎么让编写的程序理解用户给出的函数解析式,并绘制出相应的函数图像?,第1张

挺有意思的问题,简单谈一下看法

将你的需求分成两部分,一是让程序自行解析用户输入的函数解析式,二是绘制函数图像

首先,关于第一个功能,最直接的思路就是字符串解析,按照数学知识定义不同的运算符号,按照使用习惯定义常用的变量和常量的符号字母,然后据此规则解析输入的字符串,再根据解析结果确定函数中基本运算的次数及运算顺序,最后将整个操作流程以一定形式存储起来即可。

例如,对于y=log(x^2+x),包含三次基本运算,第一步是x^2,第二步是上一步的结果+x,第三步是上一步的结果求对数。注意到log有定义域的限制,这也是要在程序中实现的。

然后,对于第二个功能,根据给定函数绘制图像并不难,对于一元和二元函数来说很容易实现,难点在于多元函数应如何绘制直观易懂的函数图像?不过这一点超出编程语言的范畴了,而且二元函数可以满足大部分应用场景了。

绘制函数图像的程序只需在定义域上按指定的步长求出不同自变量对应的函数值,然后将点连成线,即可绘制出函数图像。例如对于logx,定义域为x>0。假设步长为0.1,则可求出0.1,0.2,0.3,...,99.9,100.0的函数值,然后绘制出点,再连点成线,即可得到函数图像。

另外,这里还有很多细节没有讨论,例如输入数据是字符串还是图像;是否可以用其他方法解析输入,例如神经网络。这些就很复杂了,不再深入。

回答中可能有考虑不周的地方,希望上述内容对你有参考意义

需求决定市场。不是每个软件用户都追求性能。而且运行速度,换来的是非常高的技术成本。这是开发者不能接受的。至于那些说什么开发时间问题,基本瞎扯,还是属于技术上的不成熟造成的,但这种非常细致入微且快速的规划算法/数据结构,都对程序员的数学知识以及经验有非常高的要求。所以,还不如降低少量性能换取更廉价的程序员。两全其美 。

一个简单的例子,一个神经网络,用PYTHON只需要简单的导入各种现存的库然后就能直接利用符号计算解决数学问题了,然而用C语言遇到符号计算时,需要自己写表达式的解析并演算的算法(这个过程还需要大量的数学知识)。虽然说看似很慢,其实质原因在于没有现存的工具库,但如果你数学非常熟练,也是可以快速写出来的。

神经网络本质也是一种数据回归模型。我们举个简单的例子

y=ax^2+bx+c,

有三个系数要回归,如果只给你1~2组数据,你觉得能回归好吗?

考虑到样本本身有误差,为了防止过拟合(或过学习),一般要求神经网络的训练样本数是连接权系数(包括阈值)的2~3倍。你用了太多的连接权系数(包括阈值),即使效果不错,风险仍然很高。