扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Mamdani教授最初所用的模糊变量分为连续型和离散型两种型式,因此隶属度函数的型式也可以分为连续型与离散型两种。由于语言变量及相对大尺应隶属度函数选择的不同,将形成许多不同的模粗仿和糊控制器架构;下面将对各隶属度函数的型式加以介绍:
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的兴庆网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
1. 连续型隶属度函数
模糊控制器中常见的连续型隶属度函数有下列三种:
(1)吊钟形:如图3.3(a)所示,其隶属度函数可表示如下:
(2)三角形:如图3.3(b)所示,其隶属度函数可表示如下:
(3)梯形:如图3.3所示,其隶属度函数之表示法和三角形相类似。
在式中参数a为隶属度函数中隶属度为1时的x值,参数W为隶属度函数涵盖论域宽窄的程度。而图中NB,NM,NS,ZO,PS,PM,PB等是论域中模糊集合的标记,其意义如下所示:
NB=负方向大的偏差(Negative Big)
NM=负方向中的偏差(Negative Medium)
NS=负方向小的偏差(Negative Small)
ZO=近于零的偏差(Zero)
PS=正方向小的偏差(Positive Small)
PM=正方向中的偏差(Positive Medium)
PB=正方向大的偏差(Positive Big)
图上将模糊集合的全集合正规化为区间〔-1,1〕,在模糊控制上,使用标准化的模糊变量,其全集也常正规化,这时的正规化常数(亦称为增益常数),也是在设计模糊控制器时必须决定的重要参数。
2. 离散型隶属度函数
Mamdani教授除了使用连续型全集合之外,也使用了由13个元素所构成的离散合。由于用微处理机计算时使用整数比用〔0,1〕之间的小数更方便,模糊集合的隶属度均以整数表示,如表3.1所示。
模糊控制理论发展之初,大都采用吊钟形的隶属度函数,而近几年几乎都已改用三角形的隶属度函数,这是由于岩盯三角形隶属度函数计算比较简单,性能与吊钟形几乎没有差别。
数学函数库,一些数学计算的公式的具体洞高绝实现是放在math.h里,具体有:
1 三角函数
double sin (double);
double cos (double);
double tan (double);
2 反三角函数
double asin (double); 结果介于[-PI/2, PI/2]
double acos (double); 结果介于[0, PI]
double atan (double); 反正切纳姿(主值), 结果介于[-PI/2, PI/2]
double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2]
3 双曲三角函数
double sinh (double);
double cosh (double);
double tanh (double);
4 指数与对数
double exp (double);
double sqrt (double);
double log (double); 以e为底的对数
double log10 (double);
double pow(double x, double y)//计算以x为底数的y次幂
5 取整
double ceil (double); 取上整
double floor (double); 取下整
6 绝对值
double fabs (double);
double cabs(struct complex znum) //求复数的绝对值
7 标准化念肢浮点数
double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] )
double ldexp (double x, int p); 与frexp相反, 已知x, p求f
8 取整与取余
double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分
double fmod (double, double); 返回两参数相除的余数
9其他
double hypot(double x, double y);//已知直角三角形两个直角边长度,求斜边长度
double ldexp(double x, int exponent);//计算x*(2的exponent次幂)
double poly(double x, int degree, double coeffs [] )//计算多项式
nt matherr(struct exception *e)//数学错误计算处理程序
source: 《C C++ Code Capsules》
在 C 语言中,使用 math.h 框架库(或头文件)来使用三角函数的计算。该库将给出一些常见的三角函数,包括 sin()、cos()、tan()、asin()、acos()、atan() 等。
下面是使用 sin() 函数计算正弦值的代码示例:
Copy code
#include stdio.h
#include math.h
int main() {
double angleDegree = 30; // 角度为30度
double angleRad = angleDegree * M_PI / 180.0; // 将角度转换为弧度
double sinValue = sin(angleRad); // 计算正弦值
printf("正弦值为: %lf\n", sinValue);
return 0;
}
在这个程序中,通过 #include math.h 包含数学库,使用 double 类型的变量 angleDegree 存储角度,将其转换为弧度,然后使用 sin() 函数计算它的正弦值和打印输出。请注意,使用 sin() 函数时,其参数必须是弧度(而不是角度),因此在计算正弦值之前,必须将角孝宴度转换为弧度。
使用 cos() 函数和 tan() 函数计算余弦和正切值同样简单。例如:
Copy code
double cosValue = cos(angleRad); // 计算余弦值
double tanValue = tan(angleRad); // 计算袭慎橘正切值
请注意,在 C 语言中,三角函数的参数以弧度为单位。因此,拍团在计算函数之前,必须将角度转换为弧度。通常使用以下公式将角度转换为弧度:
Copy code
angleRad = angleDegree * M_PI / 180.0;
以上 M_PI 常量是 π 的值,其通常在 math.h 框架库中定义。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流