09-1函数的一次最佳平方逼近

更新时间:2023-09-11 13:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2013-2014(1)专业课程实践论文

题目:函数的最佳平方逼近

一、算法理论

下面研究在区间?a,b?上一般的最佳平方逼近问题。 对于给定的函数f(x)?C[a,b],如果存在

S*(x)?Span{?0(x),?1(x),?,?n(x)}

使得

min??(x)?f(x)?s(x)?dx?a?(x)??f(x)?S(x)??dx?a?x?ba*b2b2

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

为了求s*(x),由式可知,该为题等价于求多元函数。 若用H表示行列式Gn?G(1,x,x2,....,xn)对应的矩阵,则s*(x),

H称为Hilbert矩阵。记

a?(a0,a1,....,an)T,d?(d0,d1,....,dn)T 其中 dk?(f,xk)(k?0,1,.....,n)

Ha?d 则方程 的解ak?ak*(k?0,1,.....n)即为所求。

二、算法框图

开始 f(x)?闭区间连续函数

d1?Re sult1 d0?Re sult0 a0,a1 输出系数

三、算法程序

#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

s1=s1+f(xk);} for(int j=0;j

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

void 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(\ 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(\ }

四、算法实现

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

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

例2. 设f(x)?1/4?x2,求?0,1?上的一次最佳平方逼近多项式。

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

本文来源:https://www.bwwdw.com/article/vg4h.html

Top