查看: 1091  |  回复: 4

东山

木虫 (正式写手)


[交流] 探讨多维插值程序的编写——自己编写一个,希望能讨论一下更好的

根据n,pi值来求G//感觉计算有些繁琐,希望讨论更简洁有效的方式
n[14]={};//14个初值, 由小到大
G[14][17]={};//14*17数组,每行由小到大
pi[14][17]{};//14*17数组,每行由大到小
//n的14个值对应G,pi的14行

if(nc>n[13])//输入值nc>n[13],则产生新的对应nc的HnewG[17]和Hnewpi[17];然后对应输入pai求输出Gc
        {
                for(j=0;j<=16;j++)
                {
                        HnewG[j]=G[12][j]*(n[13]-nc)/(n[13]-n[12])+G[13][j]*(nc-n[12])/(n[13]-n[12]);
                        Hnewpi[j]=pi[12][j]*(n[13]-nc)/(n[13]-n[12])+pi[13][j]*(nc-n[12])/(n[13]-n[12]);
                }
                if(pai                 {
                        return(HnewG[16]);
                }
                if(pai>Hnewpi[0])
                {
                        return(HnewG[0]);
                }
                for(j=0;j<=16;j++)
                {
                        if(pai==Hnewpi[j])
                        {
                                Gc=HnewG[j];
                                return(Gc);
                        }
                        else if((paiHnewpi[j+1]))
                        {
                                Gc=HnewG[j]*(Hnewpi[j+1]-pai)/(Hnewpi[j+1]-Hnewpi[j])+HnewG[j+1]*(pai-Hnewpi[j])/(Hnewpi[j+1]-Hnewpi[j]);
                                return(Gc);
                        }
                        else
                                continue;
                }
        }
        else if(nc         {
                for(j=0;j<=16;j++)
                {
                        LnewG[j]=G[1][j]*(n[0]-nc)/(n[0]-n[1])+G[0][j]*(nc-n[1])/(n[0]-n[1]);
                        Lnewpi[j]=pi[0][j]*(n[1]-nc)/(n[1]-n[0])+pi[1][j]*(nc-n[0])/(n[1]-n[0]);
                }
                if(pai                 {
                        return(LnewG[20]);
                }
                if(pai>Lnewpi[0])
                {
                        return(LnewG[0]);
                }
                for(j=0;j<=16;j++)
                {
                        if(pai==Lnewpi[j])
                        {
                                Gc=LnewG[j];
                                return(Gc);
                        }
                        else if((paiLnewpi[j+1]))
                        {
                                Gc=LnewG[j]*(Lnewpi[j+1]-pai)/(Lnewpi[j+1]-Lnewpi[j])+LnewG[j+1]*(pai-Lnewpi[j])/(Lnewpi[j+1]-Lnewpi[j]);
                                return(Gc);
                        }
                        else
                                continue;
                }
        }
        else if(nc==n[0])//判定最小值以便于下面的计算
        {
                if(pai                 {
                        return(G[0][16]);
                }
                if(pai>pi[0][0])
                {
                        return(G[0][0]);
                }
                for(j=0;j<=16;j++)       
                {
                        if(pai==pi[0][j])
                        {
                                Gc=G[0][j];
                                return(Gc);
                        }
                        else if((paipi[0][j+1]))
                        {
                                Gc=G[0][j]*(pi[0][j+1]-pai)/(pi[0][j+1]-pi[0][j])+G[0][j+1]*(pai-pi[0][j])/(pi[0][j+1]-pi[0][j]);
                                return(Gc);
                        }
                        else
                                continue;
                }
        }
        else//判定输入nc的范围,求解对应nc的pi[17],再根据输入pai求输出Gc;其中求解过程在是从n[14]的每相邻两值判定nc并按上面步骤求解
        {
                for(i=1;i<=13;i++)
                {     
                        if(nc==n)
                        {
                                if(pai[16])
                                {
                                        return(G[16]);
                                }
                                if(pai>pi[0])
                                {
                                        return(G[0]);
                                }
                                for(j=0;j<=16;j++)       
                                {
                                        if(pai==pi[j])
                                        {
                                                Gc=G[j];
                                                return(Gc);
                                        }
                                        else if((pai[j])&&(pai>pi[j+1]))
                                        {
                                                Gc=G[j]*(pi[j+1]-pai)/(pi[j+1]-pi[j])+G[j+1]*(pai-pi[j])/(pi[j+1]-pi[j]);
                                                return(Gc);
                                        }
                                        else
                                                continue;
                                }
                        }
            else if((nc)&&(nc>n[i-1]))
                        {
                                 for(j=0;j<=16;j++)
                                {
                                        newG[j]=G[i-1][j]*(n-nc)/(n-n[i-1])+G[j]*(nc-n[i-1])/(n-n[i-1]);
                                        newpi[j]=pi[i-1][j]*(n-nc)/(n-n[i-1])+pi[j]*(nc-n[i-1])/(n-n[i-1]);
                                }
                                if(pai                                 {
                                        return(newG[16]);
                                }
                                if(pai>newpi[0])
                                {
                                        return(newG[0]);
                                }
                                for(j=0;j<=16;j++)
                                {
                                        if(pai==newpi[j])
                                        {
                                                Gc=newG[j];
                                                return(Gc);
                                        }
                                        else if((painewpi[j+1]))
                                        {
                                                Gc=newG[j]*(newpi[j+1]-pai)/(newpi[j+1]-newpi[j])+newG[j+1]*(pai-newpi[j])/(newpi[j+1]-newpi[j]);
                                                return(Gc);
                                        }
                                        else
                                                continue;
                                }
                        }
                        else
                                continue;
                }
        }
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

edisondanny

金虫 (小有名气)


★
小木虫: 金币+0.5, 给个红包,谢谢回帖
只要达到目的了,我觉得就可以了。bug没有了就行
2楼2012-12-07 13:08:58
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wangxn06

金虫 (正式写手)


这是什么插值啊
3楼2012-12-08 09:33:53
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

东山

木虫 (正式写手)


引用回帖:
3楼: Originally posted by wangxn06 at 2012-12-08 09:33:53
这是什么插值啊

n[14]有14个值,对应G[14][17]和pi[14][17]的14行,根据n的范围得出用哪一行来进行插值,比如,nc=n[9],就用G[9]来求n[9]
4楼2012-12-21 08:27:59
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
11jxli15楼
2012-12-23 09:45  
相关版块跳转 我要订阅楼主 东山 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 极限拉扯,如何抉择 +7 Isak0320 2026-10-12 10/500 2026-10-12 22:38 by 大飞鱼鱼鱼
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +6 13108017953 2026-10-08 6/300 2026-10-12 20:07 by w3w3y3
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +4 wangyl_123 2026-10-10 8/400 2026-10-12 18:09 by wangyl_123
[教师之家] 课题组会帮你通过考核么? +3 好运来~9527 2026-10-10 6/300 2026-10-12 14:55 by 简单化xn
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见