插值

本文介绍了拉格朗日插值法及其在MATLAB中的实现,探讨了如何使用interp1函数进行插值,并特别提到了三次样条插值方法。通过示例展示了如何利用这些方法解决已知点的插值问题,同时讨论了如何获取多项式的系数。
摘要由CSDN通过智能技术生成

拉格朗日插值法

由此容易写出程序

#include <stdio.h>
int main()
{
    int i,j,n;
    double x[100],y[100];
    double temp,m,result;
    printf("请输入已知点的对数\n");
    scanf("%d",&n);
    printf("请输入点的横坐标与纵坐标\n");
    for (i=0;i<n;i++)
    scanf("%lf%lf",&x[i],&y[i]);
    printf("请输入插值点的横坐标\n");
    scanf("%lf",&m);
    result=0;
    for (i=0;i<n;i++)
    {
        temp=y[i];
        for (j=0;j<n;j++)
        {
            if (i!=j)
            {
            temp=temp*(m-x[j]);
            temp=temp/(x[i]-x[j]);
            }
        }
        result=result+temp;
    }
    pr
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cressman差值,程序、说明及例子 程序代码如下: subroutine interp_cressman(lati,loni,data,nxi,nyi, !此处给定了nxi,nyi,nxo,nyo目的是给据网格上的i、j在主程序是方便计算经纬度的值,如经纬 * lato,lono,datao,nxo,nyo) !给定了 是否就不用再给出nxi,nyi,nxo,nyo呢?而只要给出待插值网格的循环次数呢? !datao 是插值格点数据 !自己改写主程序和子程序的时候,可以使fvcom的经纬变成一维的L,就不必给出nxo,nyo了 c**** interpolates fields to another grid as specified c**** by lat., lon. values. c**** uses a Cressman interpolation with a specified c**** search radius c**** uses output from lookup.f to determine search points parameter(pi=3.14159,num=500) real lati(nxi,nyi),loni(nxi,nyi) real lato(nxo,nyo),lono(nxo,nyo) real data(nxi,nyi) integer ilon(num),ilat(num) real datao(nxo,nyo) open(30,file='lookup.tab1',status='unknown') open(31,file='lookup.tab2',status='unknown') guess = 100. ! search radius xmiss = -999. scale = 1. c************************************************************ c reinterpolate to NMC Octagonal grid using Cressman (应用cressman方法,逐步订正到NMC网格上) c weights with a specified search radius do 100 jj=1,nyo do 100 ii=1,nxo sum1=0. sum2=0. ilevs=0 c read in indices from lookup table read(30,*) ilevs c process indices if(ilevs.ne.0.)then read(31,*) (ilon(i),i=1,ilevs),(ilat(i),i=1,ilevs) !ilon,ilat没有定义? 有定义 do 90 kk=1,ilevs i = ilon(kk) j = ilat(kk) c find distance between NMC point to be interpolated to c and original point. dim=(sin(pi*lati(i,j)/180.)*sin(pi*lato(ii,jj)/180.)) dam=(cos(pi*lati(i,j)/180.)*cos(pi*lato(ii,jj)/180.)) dam1=lono(ii,jj)-loni(i,j) dam1=cos(pi*dam1/180.) dist=dim+dam*dam1 dist=acos(dist)*110.949*(180./pi) c dim=(sin(lati(i,j))*sin(lato(ii,jj))) c dam=(cos(l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值