函数的一次最佳平方逼近

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013-2014(1)专业课程实践论文题目:函数的最佳平方逼近

一、算法理论

下面研究在区间[],a b 上一般的最佳平方逼近问题。

对于给定的函数()[,]f x C a b ∈,如果存在

*01(){(),(),,()}n S x Span x x x ϕϕϕ∈

使得

[]22*()()()min ()()()b

b a a a x b x f x S x dx x f x s x dx ρρ≤≤⎡⎤-=-⎣⎦⎰⎰

则称*()s x 是()f x 在集合01{(),(),,()}n Span x x x ϕϕϕ 中的最佳平方逼近函数。

为了求*()s x ,由式可知,该为题等价于求多元函数。

若用H 表示行列式2(1,,,....,)n Gn G x x x =对应的矩阵,则*()s x , H 称为Hilbert 矩阵。记

01(,,....,)T n a a a a =,01(,,....,)T n d d d d =

其中 (,)(0,1,.....,)k k d f x k n ==

则方程 Ha d =

的解*(0,1,.....)k k a a k n ==即为所求。

二、算法框图

三、算法程序

#include

#include

double function1(double x)

{ double s1;

s1=1/sqrt(4+x*x);//替换函数

return s1;

}

double function2(double x)

{ double s2;

s2=x/sqrt(4+x*x);//替换函数

return s2;

}

double ReiterationOfSimpson(double a,double b,double n,double f(double x))

{ double h,fa,fb,xk,xj;

h=(b-a)/n;

fa=f(a);

fb=f(b);

double s1=0.0;

double s2=0.0;

for(int k=1;k

{ xk=a+k*h;

s1=s1+f(xk);}

for(int j=0;j

{ xj=a+(j+0.5)*h;

s2=s2+f(xj);}

double sn;

sn=h/6*(fa+fb+2*s1+4*s2);

return sn;

}

int main()

{ double a=0.0,b=1.0,Result[2];

int n=5;

Result[0]=ReiterationOfSimpson(a,b,n,function1);

Result[1]=ReiterationOfSimpson(a,b,n,function2);

printf("d0=%f,d1=%f\n\n",Result[0],Result[1]);

double x[2]={Result[0],Result[1]};

double a0,a1;

a0=4*Result[0]-6*Result[1];

a1=12*Result[1]-4*Result[0];

printf("a0=%5.7f,a1=%5.7f\n\n",a0,a1);

}

四、算法实现

例1. 求()f x x =在[1,1]-上的一次最佳平方逼近

解:运行程序,把替换函数分别改成s1=abs(x),s2=x*abs(x), 上机运行截图

例2. 设()1/

0,1上的一次最佳平方逼近多项式。

f x=[]

解:运行程序把替换函数分别改成s1=1/sqrt(4+x*x),s2=x/sqrt(4+x*x)

上机运行截图

相关文档
最新文档