计算方法中的拉格朗日插值的Matlab实践

计算方法中的拉格朗日插值的Matlab实践,第1张

Matlab中没有现成的拉格朗插值函数,必须编写一个M文件实现拉格朗日插值。

设n个节点数据以数组x0, y0输入(注意Matlab的数组下标从1开始),m 个插值点以数

组x输入,输出数组y 为m 个插值。

编写一个名为lagrangem的M文件:

function y=lagrange(x0,y0,x);

n=length(x0);m=length(x);

for i=1:m

z=x(i);

s=00;

for k=1:n

p=10;

for j=1:n

if j~=k

p=p(z-x0(j))/(x0(k)-x0(j));

end

end

s=py0(k)+s;

end

y(i)=s;

end

nclude<stdioh>

#include<mathh>

#include<stdlibh>

#include<iostream>

int main()

{

double t, z=0, tmp;

double x[12] = { 0, 88, 202, 300, 397, 489, 592, 700, 803, 903, 950, 1000 };

double y[12] = { 1106, 1061, 1022, 986, 952, 921, 894, 868, 844, 823, 812, 802 };

t = 450;

int i, j, k, p;

k = 0;

p = 12;

for (i = k; i < k + p; i++)

{

tmp = 1;

for (j = k; j<p+k; j++)

if (j == i)//j=i

tmp = tmp(t - x[j]) / (x[i] - x[j]);//j=ix[i] - x[j]=00作为分母??

z = z + tmpy[i];//z没有初始化

}

//return z;//遇到return 后面的就不会执行

printf("%25f°C\n", z);

return 0;

}

做了一个测试,希望有所帮助。代码:% 用matlab编写拉格朗日插值算法的程序,并以下面给出的函数表为数据基础,

% 在整个插值区间上采用拉格朗日插值法计算f(06),写出程序源代码,输出计算结果

% x -215 -100 001 102 203 325

% y 1703 724 105 203 1706 2305

function main()

clc;

x = [-215 -100 001 102 203 325];

y = [1703 724 105 203 1706 2305 ];

x0 = 06;

f = Language(x,y,x0)function f = Language(x,y,x0)

%求已知数据点的拉格朗日插值多项式

%已知数据点的x坐标向量: x

%已知数据点的y坐标向量: y

%插值点的x坐标: x0

%求得的拉格朗日插值多项式或在x0处的插值: fsyms t l;

if(length(x) == length(y))

n = length(x);

else

disp('x和y的维数不相等!');

return; %检错

endh=sym(0);

for (i=1:n)

l=sym(y(i));

for(j=1:i-1)

l=l(t-x(j))/(x(i)-x(j));

end;

for(j=i+1:n)

l=l(t-x(j))/(x(i)-x(j));

end;

h=h+l;

end

simplify(h);if(nargin == 3)

f = subs (h,'t',x0); %计算插值点的函数值

else

f=collect(h);

f = vpa(f,6); %将插值多项式的系数化成6位精度的小数

end结果:

f = 00201>>

以上就是关于计算方法中的拉格朗日插值的Matlab实践全部的内容,包括:计算方法中的拉格朗日插值的Matlab实践、C语言拉格朗日插值法,求帮忙看一下程序哪里出错了,0 error但是运行出不来结果……、用matlab编写拉格朗日插值算法的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存