24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1622  |  回复: 6
【悬赏金币】回答本帖问题,作者CPYHH将赠送您 100 个金币

CPYHH

金虫 (著名写手)

[求助] 求Matlab代码的改进已有1人参与

请问这个matlab代码有什么需要改进的地方?

计算lagrange插值多项式的代码,输入x=[1 2 3 4 ],y=[1 4 9 16] 和 x0=1.5以及 x=[1 2 3 4 ],y=[1 4 9 16]和x0=2.5输出都是y0=30,请问怎么改进?
代码如下:
function y0 = lagrange2(x,y,x0 )
n=length(x);
l=ones(1,n);
for k=1:n
for j=1:n
if j~=k
l(k)=l(k)*(x0-x(j))/(x(k)-x(j));
end
end
end
y0=sum(y.*1);
end

求Matlab代码的改进


求Matlab代码的改进-1


求Matlab代码的改进-2


发自小木虫Android客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

你算了一通 l(k) 后面完全没有用到,y0 y

发自小木虫Android客户端
2楼2020-10-02 21:30:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

y0 只与y相关,y不变y0就不会变,这不是很正常吗?

发自小木虫Android客户端
3楼2020-10-02 21:32:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

另外这个不叫改进,程序完全是错的,只能叫修错

发自小木虫Android客户端
4楼2020-10-02 21:34:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

y0那个式子里,我猜是y与L相乘,而不是与1相乘

发自小木虫Android客户端
5楼2020-10-03 02:02:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hzlhm

至尊木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
题主给出计算Lagrange插值多项式的代码,经计算当x0=1.5和x0=2.5输出都是y0=30,从结果来看明显有错。出错的原因有:
1、没有完全理解拉格朗日插值公式的结构,该公式是两部分组成,即求和部分,求积部分
2、虽然题主考虑了用双循环语句,但没有明确计算初值,即求和的初值以及求积的初值
3、在双循环语句里,求和应采用累加的形式求解,在这里使用用sum()函数不是太合理,即为
s=p*y0(k)+s; %s为求和的值
4、完善代码,运行可以得到如下结果。
求Matlab代码的改进-3
123.jpg

QQ:2120156492
6楼2020-10-03 12:44:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

CPYHH

金虫 (著名写手)

引用回帖:
5楼: Originally posted by sspa9999 at 2020-10-03 02:02:05
y0那个式子里,我猜是y与L相乘,而不是与1相乘

你是对的

发自小木虫Android客户端
7楼2020-10-03 14:12:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 CPYHH 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见