您的位置:首页 > 编程语言 > MATLAB

MATLAB中勒让德多项式程序

2015-11-25 15:31 1386 查看
function p = legendre(t,n)

%求勒让德多项式的函数

%计算勒让德多项式中的x^2-1

f = ( t * t - 1)^n;

%对f多项式进行n阶求导

y = diff( f , n);

%求n得阶乘

str = prod(1 : n);

%勒让德多项式的一般表示式

l = (1 / (2^n * str))*y;

%对求出的勒让德多项式进行合并同类项

p = collect(l);

end

%利用勒让德多项式求解函数逼近的脚本

%初始化定义区间[a,b]

a = 0;

b = 1;

%定义符号变量x

syms x ;

%定义多项式中的n

n = 4;

h=1;

%定义多项式中的中间变量t

t =(2 * x - b - a)/(b - a );

%以为MATLAB中定义的collect函数不适用于0,所以要把当n = 0 是单独写出来。

p = 1

%从1开始依次打印出区间[a,b]上的正交多项式

data=[];

for i = 1 : 1 :n

%p/(2^i)因为此时t=2*x-1在进行求导的过程中由p函数对t求导转变为对x的求导,t=2*x-1两边同时求导dt=2*dx

%所以在最后根据求导的次数要进行相应的除以2^i

p = legendre(t,i)/(2^i);

s = p*p;

h=int(s,0,1);

d=h*p;

data = [data;d];

end

m=sum(data);

vpa(m)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: