24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 954  |  回复: 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  
相关版块跳转 我要订阅楼主 东山 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 302分初试 0854 +4 伶可乐 2026-04-02 4/200 2026-04-02 17:44 by chran16
[考研] 085601一志愿北理325分求调剂 +3 找调剂,, 2026-04-02 3/150 2026-04-02 16:42 by asdfzly
[考研] 求调剂推荐 +3 南山南@ 2026-04-01 3/150 2026-04-02 12:09 by xiaoranmu
[考研] 0856初试324分求调剂 +6 想上学求调 2026-04-01 6/300 2026-04-02 11:42 by 星空星月
[考研] 085600,材料与化工321分调剂 +8 大馋小子 2026-03-27 10/500 2026-04-02 10:15 by kaiyanjie
[考研] 08生物与医药专硕初试346找调剂 +6 dianeeee 2026-04-01 7/350 2026-04-02 08:23 by guoweigw
[考研] 304求调剂 +12 素年祭语 2026-03-31 15/750 2026-04-01 22:41 by peike
[考研] 292求调剂 +17 木虫er12138 2026-04-01 17/850 2026-04-01 21:37 by 七度不信任
[考研] 求调剂0703 +5 周嘉尧 2026-03-31 8/400 2026-04-01 20:32 by ltltkkk
[考研] 265求调剂 +11 yelck 2026-04-01 12/600 2026-04-01 19:12 by 549790059
[考研] 材料与化工(0856)304求B区调剂 +8 邱gl 2026-03-30 16/800 2026-04-01 17:58 by 邱gl
[考研] 土木304求调剂 +3 兔突突突, 2026-03-31 3/150 2026-04-01 09:42 by JourneyLucky
[考研] 333求调剂 +4 阿科逸 2026-03-31 4/200 2026-04-01 09:11 by jp9609
[考研] 313求调剂 +6 卖个关子吧 2026-03-31 6/300 2026-03-31 10:58 by Jaylen.
[考研] 323分 食品与营养调剂 +3 嘿ooo 2026-03-31 3/150 2026-03-31 09:38 by longlotian
[考研] 抱歉 +4 田洪有 2026-03-30 4/200 2026-03-30 21:26 by mumin1990
[考研] 348求调剂 +6 小懒虫不懒了 2026-03-28 6/300 2026-03-30 10:29 by Evan_Liu
[考研] 291求调剂 +5 Y-cap 2026-03-29 6/300 2026-03-29 13:18 by mumin1990
[考研] 求佛 +7 迷人的哈哈 2026-03-28 7/350 2026-03-28 16:47 by 催化大白
[考研] 308求调剂 +7 墨墨漠 2026-03-27 7/350 2026-03-28 07:43 by 热情沙漠
信息提示
请填处理意见