24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 955  |  回复: 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  
相关版块跳转 我要订阅楼主 东山 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 280求调剂 +8 咕噜晓晓 2026-04-02 9/450 2026-04-02 16:52 by 1939136013狗壮
[考研] 283分材料与化工求调剂 +12 罗KAKA 2026-04-02 12/600 2026-04-02 16:50 by guanxin1001
[考研] 材料调剂 +6 懒羊羊轻置玉臀 2026-04-02 6/300 2026-04-02 14:47 by 5896
[考研] 0710生物学336分求调剂 +3 kiyy 2026-04-01 3/150 2026-04-02 10:54 by w虫虫123
[考研] 289求调剂 +23 新时代材料 2026-03-27 26/1300 2026-04-02 10:29 by oooqiao
[考研] 354求调剂 +4 lxb598 2026-03-31 5/250 2026-04-02 09:55 by Jaylen.
[考研] 0710生物学,325求调剂 +3 mkkkkkl 2026-04-01 3/150 2026-04-02 09:48 by Jaylen.
[考研] 274求调剂 +8 薛定谔的虎。 2026-04-01 8/400 2026-04-02 09:21 by 晴空210210
[考研] 08生物与医药专硕初试346找调剂 +6 dianeeee 2026-04-01 7/350 2026-04-02 08:23 by guoweigw
[考研] 求调剂,一志愿南京师范大学计算机专硕,初试373,六级通过, +3 计算机追梦人 2026-04-01 3/150 2026-04-02 07:57 by fxue1114
[考研] 379求调剂 +3 ?苦瓜不苦 2026-04-01 3/150 2026-04-01 20:09 by 暮云清寒
[考研] 0703一志愿南师大334求调剂 +4 seven7yu 2026-03-30 4/200 2026-04-01 16:10 by oooqiao
[考研] 289求调剂 +7 BrightLL 2026-03-29 7/350 2026-03-31 22:05 by 544594351
[考研] 318求调剂 +10 陈晨79 2026-03-30 10/500 2026-03-31 17:37 by 544594351
[考研] 求调剂 生物学 377分 +6 zzll03 2026-03-31 6/300 2026-03-31 17:33 by 唐沐儿
[考研] 322求调剂:一志愿湖南大学 材料与化工(085600),已过六级。 +10 XX小邓 2026-03-29 10/500 2026-03-31 16:46 by 不吃魚的貓
[考研] 083000环境科学与工程调剂,总分281 +4 橙子(胜意) 2026-03-30 4/200 2026-03-31 00:44 by Linzejun
[考研] 327求调剂 +5 小卡不卡. 2026-03-29 5/250 2026-03-30 19:30 by Wang200018
[考研] 340求调剂 +5 jhx777 2026-03-27 5/250 2026-03-28 04:18 by fmesaito
[考研] 一志愿吉大071010,316分求调剂 +3 xgbiknn 2026-03-27 3/150 2026-03-27 10:36 by guoweigw
信息提示
请填处理意见