一道C语言的编程题(龙贝格算法)

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:19:54
用龙贝格算法计算椭圆:

(x^2/400)+(y^2/100)=1

的周长,使误差不超过10^(-4)。

非常紧急,谢谢各位了...

http://zhidao.baidu.com/question/101855377.html
(额,这里还有100...)
呵呵,只有你一个回答,分肯定是你的了...

那另一半就答到那个链接去吧...嘿嘿

谢了

#include <stdio.h>
#include<math.h>
#define PI 3.14159265359
double f(double x){
return sqrt(400*cos(x)*cos(x)+100*sin(x)*sin(x));
}
double Romberg(double a, double b, double eps){
int m,n,i;
double y[11],h=b-a,ep,p,s,q;
y[0]=0.5*h*(f(a)+f(b));
m=n=1;ep=eps+1.0;
while(ep>=eps&&m<=10){
p=0.0;
for(i=0;i<n;i++)p+=f(a+(i+.5)*h);
p=(y[0])*.5+p*h*.5;
s=1.0;
for(i=1;i<=m;i++){
s*=4.0;q=(s*p-y[i-1])/(s-1.0);
y[i-1]=p;p=q;
}
ep=fabs(q-y[m-1]);
y[m]=q;m++;n*=2;h*=.5;
}
return q;
}

void main(){
printf("%lf\n",4*Romberg(0,PI/2.0,1e-7));
}

ans=96.882985
会改f(x),你想算什么都行

#include "math.h"
#include "iostream.h"
double a,c; //设定全局变量,便于FUN()引用。

//求F(X)函数
double fun(double x){
double temp;
temp=c*sin(x)/a;
temp=1-temp