24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 957  |  回复: 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  
相关版块跳转 我要订阅楼主 东山 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿南开大学0710生物学359求调剂 +6 兔兔兔111223314 2026-03-29 8/400 2026-04-02 22:37 by louise0220
[考研] 302求调剂一志愿华中师范大学 +7 小江小江江江 2026-04-02 7/350 2026-04-02 21:48 by macy2011
[考研] 材料专硕322分 +10 哈哈哈吼吼吼哈 2026-04-02 10/500 2026-04-02 21:46 by dongzh2009
[考研] 085602 找调剂 +3 逆时针快乐 2026-04-02 3/150 2026-04-02 21:23 by dongzh2009
[考研] 346求调剂 +5 郑诚乐 2026-04-02 5/250 2026-04-02 16:38 by SZW_UJN
[考研] 321求调剂 一志愿 浙江工业大学生物医药 +5 嘿嘿HC 2026-04-01 6/300 2026-04-02 15:23 by sophie2180
[考研] 08工科求调剂290分 +5 1314捧花 2026-04-02 8/400 2026-04-02 13:16 by 乔哒哒哒
[考研] 材料科学与工程调剂 +18 深V宿舍吧 2026-03-30 19/950 2026-04-02 10:28 by sanrepian
[考研] 0817化工学硕调剂 +11 努力上岸中! 2026-03-31 11/550 2026-04-01 20:30 by 赖春艳
[考研] 070300一志愿211,312分求调剂院校 +14 小黄鸭宝 2026-03-30 14/700 2026-04-01 20:19 by 赖春艳
[考研] 085600 一志愿9 总分351 求调剂学校 +7 czhcz 2026-03-31 9/450 2026-04-01 19:24 by 无际的草原
[考研] 材料科学与工程339求调剂 +11 hyz0119 2026-03-31 12/600 2026-04-01 18:40 by 伟大河北
[考研] 262求调剂 +9 励志一定发文章 2026-03-31 10/500 2026-04-01 12:22 by sunshine0013
[考研] 358求调剂 +3 王向阳花 2026-03-31 3/150 2026-04-01 09:56 by zzchen2000
[考研] 340求调剂 +4 希望如此i 2026-03-31 4/200 2026-03-31 16:40 by 690616278
[考研] 0856 335分 +9 cccchenso 2026-03-29 9/450 2026-03-31 16:37 by lishahe
[考研] 297 地理学070500 复试求调剂 +3 小圆圈圈ooo 2026-03-30 3/150 2026-03-30 21:05 by 余震yz
[考研] 328求调剂 +8 嗯滴的基本都 2026-03-27 8/400 2026-03-30 17:20 by Wang200018
[考研] 332求92调剂 +8 蕉蕉123 2026-03-28 8/400 2026-03-29 10:46 by 周梓丹
[考研] 298求调剂 +4 种圣赐 2026-03-28 4/200 2026-03-29 08:42 by q1092522407
信息提示
请填处理意见