| 查看: 1100 | 回复: 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((pai { 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((pai { 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((pai { 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 { 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 { 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 { 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((pai { 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; } } } |
» 猜你喜欢
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有5人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有5人回复
售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急
已经有5人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有4人回复
售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急
已经有4人回复
售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急
已经有5人回复
售SCI文章,我:8O.5.5.1O.54,科目全,可十急
已经有5人回复
售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急
已经有6人回复
延安大学回应“副教授留绝笔信”:确已离世,正核实举报内容
已经有5人回复
售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急
已经有23人回复
» 本主题相关价值贴推荐,对您同样有帮助:
matlab多维插值原理是什么?
已经有5人回复
4楼2012-12-21 08:27:59
2楼2012-12-07 13:08:58










回复此楼