一.维多项式求值
秦九韶算法:
A[]//由低次项系数向高次项系数依次排列数组,double类型,n是项数,x自变量
double polynomial(double A[],int n,int x){
int i;
double result=A[n-1];
for(i=n-2;i>=0;i--){
result=result*x+A[i];
}
return result;
}
二.随机数生成
范围:0~32767
#include<time.h>
srand((int)time(0));//随机种子函数
rand()//伪随机数
三.复数运算
//a,b是第一个复数的实部和虚部,c,d 是第二个复数的实部和虚部
//*e,*f分别是计算后的实部和虚部
void Cplus(double a,double b,double c,double d,double *e,double *f){
/************************加法*******************************/
//(a+ci)-(b+di)=(a-b)+(c-d)i;
*e=a+c;
*f=b+d;
/************************减法*******************************/
//(a+bi)+(c+di)=(a+b)+(c+d)i;
*e=a-c;
*f=b-d;
/************************乘法*******************************/
//(a+bi)*(c+di)=(ac-bd)+(ad+bc)i;
*e=a*c-b*d;
*f=a*d+b*c;
/************************除法*******************************/
//(a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+(bc-ad)/(c^2+d^2);
*e=(ac+bd)/(c^2+d^2)
*f=(bc-ad)/(c^2+d^2)
}
四.阶乘
原理:递归
int fact(int n){
if(n==1){
return 1;
}else
{
return n*fact(n-1);
}
}
五.矩阵运算
1.矩阵加法:对应项相加
void MatrixPlus(double a[],double b[],double c[],int m,int n){
for(int i=0;i<n*m;i++){
c[i]=a[i]+b[i];
}
}
2.矩阵减法:对应项相减
void MatrixMinus(double a[],double b[],double c[],int m,int n){
for(int i=0;i<n*m;i++){
c[i]=a[i]-b[i];
}
}
3.矩阵乘法
给定m*n矩阵a[m][n] 给定n*k矩阵b[n][k]
乘积矩阵: c[m][k]=a[m][n]*b[n][k]
注意:乘积矩阵c[][]是m*k阶的。两个矩阵参与相乘的前提条件是,矩阵a[][]的列数必须等于矩阵b[][]的行数
矩阵乘法不具有交换律:a[][]*b[][]!=b[][]*a[][]
void MatrixMinus(double a[],double b[],double c[],int m,int n,int k){
int u;
for(int i=0;i<m;i++){
for(int j=0;j<k;j++){
u=i*k+j;
c[u]=0.0;
for(int l=0;l<n;l++){
c[u]+=a[i*n+l]*b[l*k+j];
}
}
}
}
4.快速幂运算
long pow(int a,int b){
long x=a;
long res=1;
while(b>0){
if(b&1){
res*=x;//右移一位
}
b>>=1;
x=x*x;
}
return res;
}
6.2的n次方
int pow_2(int n) {
return 1 << n;
}