求教matlab关于feval函数地使用
老师布置作业:编写连续函数最佳平方逼近的算法程序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=;
return;
elseif t==1
L=;
return;
else
p0=;
p1=;
temp=;
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=;
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) 请将 mmpadd 贴一下,以便他人调试.
mmpadd 函数 不好意思忘了
function p=mmpadd(a,b)%MMPADD Polynomial addition.
%MMPADD(A,B) adds the polynomial A and B
if nargin<2 %在函数体内获得实际输入的变量的个数
error(' Not enough input arguments ')
end
a=a(:).' ;%make sure inputs are polynomial row vectors
b=b(:).' ;
na=length(a) ;%find lengths of a and b
nb=length(b) ;
p=+ ;%add zeros as necessary 你的程序有几个地方需要修改:
%%%%%%%%%%%%%%%
1. f=sym('e^x');---写法明显有问题,sym 去掉,e^x 应写成 exp(x);
2. 在 quad 前加一句: f=inline(f).--- 即可得到结果.
%%%%%%%%%%%%%%%
您再关注一下
首先 谢谢您对我地帮助,照您的方法,问题没有解决啊在主程序prog1中,m是一个字符表达式的乘法计算啊,不能象你那样改成exp(x)啊
本来我想f表示成input('please input a hanshu string','s'),让用户自己指定函数表达式地
f=sym('e^x');
m=poly2sym(Lengendre(2))*f
gauss(m,a,b,X,A)
[ 本帖最后由 eight 于 2007-5-21 13:01 编辑 ] 原帖由 liuxiangyangpc 于 2007-5-21 12:20 发表 http://www.chinavib.com/forum/images/common/back.gif
首先 谢谢您对我地帮助,照您的方法,问题没有解决啊
在主程序prog1中,m是一个字符表达式的乘法计算啊,不能象你那样改成exp(x)啊
本来我想f表示成input('please input a hanshu string','s'),让用户自己指 ...
用户输入和程序执行是两回事,要不你不要使用matlab,否则必须按照编程的要求去做,即只能 exp(x) 结果如下,还有什么问题请讲清楚一些.
%%%%%%%%%%%%%%%%%%
m =
(3/2*x^2-1/2)*exp(x)
ans =
0.1401
%%%%%%%%%%%%%%%%%%
我怎么得不到你的结果啊 ,能不能把你的代码发出来啊
我怎么得不到你的结果啊 ,能不能把你的代码发出来啊f=inline(f) 放到那里啊
我调试不出来啊 困扰了几天拉
高人啊,这个函数是做什么的,没看出来啊?
页:
[1]