出错原因:
函数定义只有一个输出参数,而调用时要求返回两个参数,当然就出错了。
修改:
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
怎么用matlab实现拉格朗日乘子法最优化问题
计算机优化长于数值计算,你要想得到合适的结果,最好把未知数减少到最少。你这个优化,只要把常数项都以数值代入,matlab 能解的。
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利用拉格朗日插值计算法的原理编写并计算函数所在节点的近似值。 谢谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)