数学算法程序Word格式文档下载.docx
- 文档编号:15894307
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:22
- 大小:22.49KB
数学算法程序Word格式文档下载.docx
《数学算法程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数学算法程序Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
{
inti,k;
doublec,d,q,w,s;
q=6.28318530718/n;
for(k=0;
k<
n;
k++)
w=k*q;
a[k]=b[k]=0.0;
for(i=0;
i<
i++)
d=i*w;
c=cos(d);
s=sin(d)*sign;
a[k]+=c*x+s*y;
b[k]+=c*y-s*x;
}
if(sign==-1)
c=1.0/n;
a[k]=c*a[k];
b[k]=c*b[k];
2。
四阶亚当姆斯预估计求解初值问题
*用四阶亚当姆斯预估计求解初值问题,其中一阶微分方程未y'
=f(x,y)
*初始条件为x=x[0]时,y=y[0].
f--函数f(x,y)的指针
x--自变量离散值数组(其中x[0]为初始条件)
y--对应于自变量离散值的函数值数组(其中y[0]为初始条件)
h--计算步长
n--步数
*输出:
x为说求解的自变量离散值数组
y为所求解对应于自变量离散值的函数值数组
doubleadams(double(*f)(double,double),doublex[],
doubley[],doubleh,intn)
doubledy[4],c,p,c1,p1,m;
inti,j;
runge_kuta(f,x,y,h,3);
4;
dy=(*f)(x,y);
c=0.0;
p=0.0;
for(i=4;
n+1;
x=x[i-1]+h;
p1=y[i-1]+h*(55*dy[3]-59*dy[2]+37*dy[1]-9*dy[0])/24;
m=p1+251*(c-p)/270;
c1=y[i-1]+h*(9*(*f)(x,m)+19*dy[3]-5*dy[2]+dy[1])/24;
y=c1-19*(c1-p1)/270;
c=c1;
p=p1;
for(j=0;
j<
3;
j++)
dy[j]=dy[j+1];
dy[3]=(*f)(x,y);
return(0);
3、几种常见随机数的产生
#include"
stdlib.h"
stdio.h"
math.h"
doubleuniform(doublea,doubleb,longint*seed);
doublegauss(doublemean,doublesigma,longint*seed);
doubleexponent(doublebeta,longint*seed);
doublelaplace(doublebeta,longint*seed);
doublerayleigh(doublesigma,longint*seed);
doubleweibull(doublea,doubleb,longint*seed);
intbn(doublep,longint*seed);
intbin(intn,doublep,longint*seed);
intpoisson(doublelambda,longint*seed);
voidmain()
doublea,b,x,mean;
longints;
a=4;
b=0.7;
s=13579;
mean=0;
10;
5;
x=poisson(a,&
s);
mean+=x;
printf("
%-13.7f"
x);
\n"
);
mean/=50;
平均值为:
%-13.7f\n"
mean);
/*******************************************************************
*求[a,b]上的均匀分布
a--双精度实型变量,给出区间的下限
b--双精度实型变量,给出区间的上限
seed--长整型指针变量,*seed为随机数的种子
********************************************************************/
doubleuniform(doublea,doubleb,longint*seed)
doublet;
*seed=2045*(*seed)+1;
*seed=*seed-(*seed/1048576)*1048576;
t=(*seed)/1048576.0;
t=a+(b-a)*t;
return(t);
*正态分布
mean--双精度实型变量,正态分布的均值
sigma--双精度实型变量,正态分布的均方差
doublegauss(doublemean,doublesigma,longint*seed)
inti;
doublex,y;
for(x=0,i=0;
12;
x+=uniform(0.0,1.0,seed);
x=x-6.0;
y=mean+x*sigma;
return(y);
*指数分布
beta--指数分布均值
seed--种子
*******************************************************************/
doubleexponent(doublebeta,longint*seed)
doubleu,x;
u=uniform(0.0,1.0,seed);
x=-beta*log(u);
return(x);
*拉普拉斯随机分布
*beta--拉普拉斯分布的参数
**seed--随机数种子
doublelaplace(doublebeta,longint*seed)
doubleu1,u2,x;
u1=uniform(0.,1.,seed);
u2=uniform(0.,1.,seed);
if(u1<
=0.5)
x=-beta*log(1.-u2);
else
x=beta*log(u2);
/********************************************************************
*瑞利分布
*
doublerayleigh(doublesigma,longint*seed)
u=uniform(0.,1.,seed);
x=-2.0*log(u);
x=sigma*sqrt(x);
/************************************************************************/
/*韦伯分布
*/
doubleweibull(doublea,doubleb,longint*seed)
u=-log(u);
x=b*pow(u,1.0/a);
/*贝努利分布
intbn(doublep,longint*seed)
intx;
doubleu;
u=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 算法 程序