函数的一次最佳平方逼近
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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) 上机运行截图