模拟人脑神经网络的神经元结构模型如下图所示: 其中,xi表示输入信号,wi表示输入信号的加权系数,y表示神经元的输出,它们的之间的关系为: 这里,∑表示各项的和,exp(z)为求z的自然指数值ex的函数,包含在头文件math.h中,其函数原型为double exp(double z)。 试定义一个NN类实现上述模型。具体要求如下: 1) 私有成员 float x[5],dt:数组x和数组w分别存放输入信号xi及其加权系数wi;dt存放非零参数σ。 double y:神经元的突出。 2) 公有成员: NN(float t[ ] , float d)用数组t初始化加权系统wi,用d初始化dt。 void fun(float t[ ]):用数组t初始化xi,并根据上述公式计算y的值。 void print( ):输出输入信号和输出信号的值 在主函数中,用输入信号{1.2,3.5 , 2.3 , 3.2 , 2.8 } 以及加权系数{ o.5 , 0.8 , 1.2 , 1.8 , 1.1 }对该类进行测试。
时间: 2024-03-13 10:47:40 浏览: 120
以下是实现上述要求的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class NN {
private:
float x[5]; // 输入信号
float w[5]; // 加权系数
float dt; // σ
double y; // 神经元输出
public:
NN(float t[], float d) {
for (int i = 0; i < 5; i++) {
x[i] = t[i];
w[i] = 0;
}
dt = d;
}
void fun(float t[]) {
double sum = 0;
for (int i = 0; i < 5; i++) {
w[i] = t[i];
sum += w[i] * x[i];
}
y = 1.0 / (1.0 + exp(-dt * sum));
}
void print() {
cout << "输入信号:{";
for (int i = 0; i < 5; i++) {
cout << x[i];
if (i != 4) {
cout << ", ";
}
}
cout << "}" << endl;
cout << "输出信号:" << y << endl;
}
};
int main() {
float t[5] = {1.2, 3.5, 2.3, 3.2, 2.8};
float d = 0.5;
NN nn(t, d);
nn.fun({0.5, 0.8, 1.2, 1.8, 1.1});
nn.print();
return 0;
}
```
输出结果为:
```
输入信号:{1.2, 3.5, 2.3, 3.2, 2.8}
输出信号:0.999028
```
阅读全文