|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
老师布置作业:编写连续函数最佳平方逼近的算法程序
1、编写了通用的高斯-勒让德求积公式中用到了feval函数
function quad=gauss(f,a,b,X,A)
% f是被积函数.
% a和b分别为积分的上下限.
% X是节点的横坐标构成的向量.
% A是系数构成的向量.
% 输出所求积分值.
N=length(X);
T=zeros(1,N);
T=(a+b)/2+((b-a)/2)*X;
quad=((b-a)/2)*sum(A.*feval(f,T));
2、编写了求解Lengendre多项式3函数,输入项数 返回多项式矢量
function L=Lengendre(t)
% 产生Lengendre多项式.
% t是项数数值
% 输出Lengendre的第t项的多项式系数行向量.
if t==0
L=[1];
return;
elseif t==1
L=[1 0];
return;
else
p0=[1];
p1=[1 0];
temp=[1 0];
for k=1:1:t-1
p2= mmpadd((2*k+1)/(k+1)*conv(p1,temp),-k/(k+1)*p0);
% p2=(2*k+1)/(k+1)*conv(p1,temp)-k/(k+1)*p0;
p0=p1;
p1=p2;
end
end
L=p2;
3。然后编写了主程序prog1
a=-1;
b=1;
f=sym('e^x');
X=[-0.7745966692, 0.7745966692, 0];
A=[0.5555555556, 0.5555555556, 0.8888888888];
m=poly2sym(Lengendre(2))*f
gauss(m,a,b,X,A)
总是出现如下错误提示
??? Error using ==> feval
Argument must contain a string or function_handle.
Error in ==> C:\MATLAB6p1\work\gauss.m
On line 10 ==> quad=((b-a)/2)*sum(A.*feval(f,T));
Error in ==> C:\MATLAB6p1\work\prog1.m
On line 16 ==> gauss(m,a,b,X,A) |
|