首页 数值积分_复化梯形_复化辛普森_龙贝格_算法

数值积分_复化梯形_复化辛普森_龙贝格_算法

举报
开通vip

数值积分_复化梯形_复化辛普森_龙贝格_算法数值积分_复化梯形_复化辛普森_龙贝格_算法 #include #include #include #define NULL 0 typedef struct pnode { float coef; float exp; struct pnode *next; }pnode,*plist; typedef struct dnode { float data; struct dnode *next; }dnode,*dlist; struct dnode *q; float a,b...

数值积分_复化梯形_复化辛普森_龙贝格_算法
数值积分_复化梯形_复化辛普森_龙贝格_算法 #include #include #include #define NULL 0 typedef struct pnode { float coef; float exp; struct pnode *next; }pnode,*plist; typedef struct dnode { float data; struct dnode *next; }dnode,*dlist; struct dnode *q; float a,b,t,h,m[2];dlist xn; plist pn() /*??Á??àÏîÊ?f(x)*/ { plist head,p,r;float c,e; r=head=(pnode *)malloc(sizeof(pnode)); scanf("%f%f",&c,&e); while(c!=0) { p=(pnode *)malloc(sizeof(pnode)); p->coef=c;p->exp=e;r->next=p;r=p; scanf("%f%f",&c,&e); } r->next=NULL; return(head); } float cap(plist p,float x)/*?ÆËãf(x)*/ { plist pa;float s=0; pa=p->next; while(pa!=NULL) { s=s+pa->coef*pow(x,pa->exp); pa=pa->next; } return(s); } dlist xk(float y,int n)/*??Á?x(k)*/ { dlist x,head,r; int i; r=head=(dnode *)malloc(sizeof(dnode)); for(i=1;idata=a+i*y;r->next=x;r=x; } r->next=NULL; return(head); } void tixin(plist p)/*ÌÝÐÎ??Ê?*/ { dlist m;m=xn->next; float f=0,s=0; while(m!=NULL) { f=f+cap(p,m->data); m=m->next; } s=h/2*(cap(p,a)+cap(p,b)+2*f); printf("ÌÝÐÎ??Ê?µÄÔËËã?á?ûΪ?º\n"); printf("%f\n",s); } void xinpu(plist p)/*ÐÁÆÕÉ,??Ê?*/ {dlist m;m=xn->next; float s,f=0,g=0; while(m!=NULL) { f=f+cap(p,m->data); g=g+cap(p,m->data+1/2*h); m=m->next; } s=h/6*(cap(p,a)+cap(p,b)+4*g+2*f); printf("ÐÁÆÕÉ,??Ê?µÄÔËËã?á?ûΪ?º\n"); printf("%f\n",s); } float tn(plist p)/*Çó?ötn*/ { dlist m,xm;float y,s=0,f=0; t++; y=(b-a)/pow(2,t); xm=xk(y,pow(2,t)); m=xm->next; while(m!=NULL) { f=f+cap(p,m->data); m=m->next; } s=y/2*(cap(p,a)+cap(p,b)+2*f); return(s); } void T(plist p)/*?õÊ???T?í*/ { dlist s,r; float t0; t0=(b-a)/2*(cap(p,a)+cap(p,b)); r=q=(dnode *)malloc(sizeof(dnode)); s=(dnode *)malloc(sizeof(dnode)); s->data=t0;r->next=s;s->next=NULL; t=0;printf("%3.0f %f\n",t,t0); m[1]=t0;m[0]=m[1]+1; } void tb(plist p)/*ÐÞ?ÄT?í*/ { dlist s,r,temp;float tm; temp=q->next; tm=tn(p); q=r=(dnode *)malloc(sizeof(dnode)); s=(dnode *)malloc(sizeof(dnode)); s->data=tm;r->next=s;r=s;int j; j=0;printf("%3.0f %f",t,tm); while(temp!=NULL) {j++; s=(dnode *)malloc(sizeof(dnode)); s->data=(pow(4,j)/(pow(4,j)-1))*(r->data)-(temp->data)/(pow(4,j)-1 ); r->next=s;r=s; m[0]=temp->data;m[1]=r->data;printf(" %f",m[1]); temp=temp->next; } printf("\n"); r->next=NULL; } void log(plist p,float du)/*Áú???ñËã??*/ { T(p); while(m[0]-m[1]>du) {tb(p);} printf("Áú???ñËã??µÄÔËËã?á?ûΪ?º\n"); printf("%f\n",m[1]); } void print(plist L) /*Êä?ö?àÏîÊ?*/ { plist p; float c,e; p=L->next; while(p!=NULL) {c=p->coef; e=p->exp; p=p->next; if(p!=NULL) printf("%3.3fX^%3.3f+",c,e); else printf("%3.3fX^%3.3f",c,e); } printf("\n"); } void main() { loop: plist fx; printf("ÊäÈëÒª?ý?ÖµÄ?àÏîÊ?º?Êý?º\n"); fx=pn(); printf("ÊäÈëÇø?ä?˵ãµÄÊýÖµa,b:\n"); scanf("%f%f",&a,&b); int n; printf("ÊäÈëµÈ?ÖµÄ?öÊýN?º\n"); scanf("%d",&n); h=(b-a)/n; xn=xk(h,n); printf("?ý?ÖµÄ?àÏîÊ?º?ÊýΪ?º\nF(x)="); print(fx); tixin(fx); xinpu(fx); printf("ÊäÈëÁú???ñµÄ?ÆËã???È?º\n"); float du; scanf("%f",&du);printf("\nÉú?ɵÄT?íΪ?º\n");printf("\n"); log(fx,du); printf("Èô?ÌÐøÇëÊäÈë1???ñÔòÊäÈëÆäËüÊý×Ö?º\n"); int i ; scanf("%d",&i); if(i==1) goto loop; }
本文档为【数值积分_复化梯形_复化辛普森_龙贝格_算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:0
分类:互联网
上传时间:2017-10-07
浏览量:21