用matlab编写拉格朗日插值,程序如下,但总是运行有错误,求大神啊!急急急急!要交作业啦!谢谢谢谢!

用matlab编写拉格朗日插值,程序如下,但总是运行有错误,求大神啊!急急急急!要交作业啦!谢谢谢谢!,第1张

出错原因:

函数定义只有一个输出参数,而调用时要求返回两个参数,当然就出错了。

修改:

1、把函数最前面的

function f=language(x,y,x0)

改成

function [f,f0]=language (x,y,x0)

2、另外,最后两句也存在问题:

f0=subs(f,'t',x0);

应为

f0=subs(f,t,x0);

而最后一句则不需要,直接删掉即可。

改后调用实例:

>> [f,f0]=language(x,y,16) 

f = 

-799/3125t(t-1)(t-3/2)(t-2)(t-5/2)(t-3)+561/500t(t-1/2)(t-3/2)(t-2)(t-5/2)(t-3)-133/75t(t-1/2)(t-1)(t-2)(t-5/2)(t-3)+3031/2500t(t-1/2)(t-1)(t-3/2)(t-5/2)(t-3)-399/1250t(t-1/2)(t-1)(t-3/2)(t-2)(t-3)+1411/112500t(t-1/2)(t-1)(t-3/2)(t-2)(t-5/2)

 

f0 =

             099957318144

你需要把上面的部分保存为Lagrangenew。m文件。

文件头应加  function s=Lagrangenew(x,y,x0)

后面是

nx=length(x);

ny=length(y);

。。。。。。

然后,可以命令窗口执行下面部分的命令

结果如下

m文件

function yy=lagrange(x1,y1,xx)

%本程序为Lagrange1插值,其中x1,y1

%为插值节点和节点上的函数值,输出为插值点xx的函数值,

%xx可以是向量。

syms x

n=length(x1);

for i=1:n

t=x1;t(i)=[];L(i)=prod((x-t)/(x1(i)-t));% L向量用来存放插值基函数

end

u=sum(Ly1);

p=simplify(u) % p是简化后的Lagrange插值函数(字符串)

yy=subs(p,x,xx);

clf

plot(x1,y1,'ro',xx,yy,'')

====================================

x=[ 04 05 06 07 08];

y=[-0916291;-0693147;-0510826;-0356675;-0223144]';

yy=lagrange(x,y,054)

p =

- (14363668061545223x^4)/6755399441055744 + (229230406283396627x^3)/33776997205278720 - (6086876668119665137x^2)/675539944105574400 + (23595121244981107513x)/3377699720527872000 - 186390055565518223/70368744177664000

yy =

-06161

以上就是关于用matlab编写拉格朗日插值,程序如下,但总是运行有错误,求大神啊!急急急急!要交作业啦!谢谢谢谢!全部的内容,包括:用matlab编写拉格朗日插值,程序如下,但总是运行有错误,求大神啊!急急急急!要交作业啦!谢谢谢谢!、matlab求拉格朗日插值多项式并画图、怎么用matlab利用拉格朗日插值计算法的原理编写并计算函数所在节点的近似值。 谢谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9294230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存