牛頓和拉格朗日插值算法

/*近日浏覽文章時發現在這個網站上有好幾篇問關于牛頓插值和拉格朗日插值的文章。本人正好寫了這個代碼,將它公布,希望對一些朋友有幫助。如程序中有什麽問題請與我聯系。QQ:421404493E-mail:wbaobao#zj.com*/

//編譯平台:2000+vc6.0

//實驗一

//作者:計算機科學與技術02級2班寶寶421404493

#include<stdio.h>

#include<stdlib.h>

#include<iostream.h>

typedef strUCt data

{

float x;

float y;

}Data;//變量x和函數值y的結構

Data d[20];//最多二十組數據

float f(int s,int t)//牛頓插值法,用以返回插商

{

if(t==s+1)

return (d[t].y-d[s].y)/(d[t].x-d[s].x);

else

return (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x);

}

float Newton(float x,int count)

{

int n;

while(1)

{

cout<<"請輸入n值(即n次插值):";//獲得插值次數

cin>>n;

if(n<=count-1)// 插值次數不得大于count-1次

break;

else

system("cls");

}

//初始化t,y,yt。

float t=1.0;

float y=d[0].y;

float yt=0.0;

//計算y值

for(int j=1;j<=n;j++)

{

t=(x-d[j-1].x)*t;

yt=f(0,j)*t;

//cout<<f(0,j)<<endl;

y=y+yt;

}

return y;

}

float lagrange(float x,int count)

{

float y=0.0;

for(int k=0;k<count;k++)//這兒默認爲count-1次插值

{

float p=1.0;//初始化p

for(int j=0;j<count;j++)

{//計算p的值

if(k==j)continue;//判定是否爲同一個數

p=p*(x-d[j].x)/(d[k].x-d[j].x);

}

y=y+p*d[k].y;//求和

}

return y;//返回y的值

}

void main()

{

float x,y;

int count;

while(1)

{

cout<<"請輸入x[i],y[i]的組數,不得超過20組:";//要求用戶輸入數據組數

cin>>count;

if(count<=20)

break;//檢查輸入的是否合法

system("cls");

}

//獲得各組數據

for(int i=0;i<count;i++)

{

cout<<"請輸入第"<<i+1<<"組x的值:";

cin>>d[i].x;

cout<<"請輸入第"<<i+1<<"組y的值:";

cin>>d[i].y;

system("cls");

}

cout<<"請輸入x的值:";//獲得變量x的值

cin>>x;

while(1)

{

int choice=3;

cout<<"請您選擇使用哪種插值法計算:"<<endl;

cout<<" (0):退出"<<endl;

cout<<" (1):Lagrange"<<endl;

cout<<" (2):Newton"<<endl;

cout<<"輸入你的選擇:";

cin>>choice;//取得用戶的選擇項

if(choice==2)

{

cout<<"你選擇了牛頓插值計算方法,其結果爲:";

y=Newton(x,count);break;//調用相應的處理函數

}

if(choice==1)

{

cout<<"你選擇了拉格朗日插值計算方法,其結果爲:";

y=lagrange(x,count);break;//調用相應的處理函數

}

if(choice==0)

break;

system("cls");

cout<<"輸入錯誤!!!!"<<endl;

}

cout<<x<<" , "<<y<<endl;//輸出最終結果

}

圖像幾何變換(縮放、旋轉)中的插值算法
這是我在一些 數字圖像與圖形處理 方面的書上面看見的,書上說的比較零散,我稍微整理了一下實踐已證明,插值算法對于縮放比例較小的情況是完全可以接受的,令人信服的。一般的,縮小0.5倍以上或放大3.0倍以下,對任...查看完整版>>圖像幾何變換(縮放、旋轉)中的插值算法
 
用線性插值算法實現圖像縮放
用線性插值算法實現圖像縮放 猛禽[Mental Studio]() 在Windows中做過圖像方面程序的人應該都知道Windows的GDI有一個API函數:StretchBlt,對應在VCL中是TCanvas類的StretchDraw方法。它可以很簡單地實現圖像的縮放操...查看完整版>>用線性插值算法實現圖像縮放
 
圖像幾何變換(縮放、旋轉)中的插值算法
這是我在一些 數字圖像與圖形處理 方面的書上面看見的,書上說的比較零散,我稍微整理了一下實踐已證明,插值算法對于縮放比例較小的情況是完全可以接受的,令人信服的。一般的,縮小0.5倍以上或放大3.0倍以下,對任...查看完整版>>圖像幾何變換(縮放、旋轉)中的插值算法
 
查找算法集:順序查找、二分查找、插值查找、動態查找(數組實現、鏈表實現)
// search.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "LinkTable.h"#define MAX_KEY 500//------------------------------數組實現部...查看完整版>>查找算法集:順序查找、二分查找、插值查找、動態查找(數組實現、鏈表實現)
 
對高速二次線性插值算法的討論(格式正確版)
WannaPlay 原創文章對高速二次線性插值算法的討論(by Rocks Lee - http://wannaplay.51.net) 原理線性插值並不難理解。以圖像處理領域爲例,我們的理想圖像是均勻的分布在二維平面直角坐標系中的,任意給出一對坐標,...查看完整版>>對高速二次線性插值算法的討論(格式正確版)
 
J2ME插值算法實現圖片的放大縮小
文章來源:J2ME開發網前段時間接觸了一些數字圖像處理的問題,在1位師兄的指導下,在j2me平台,完成了一些基本的2D圖像處理算法。就當是對這段知識做一下總結,決定把這些算法寫出來,和各位朋友共同探討。這篇文章先...查看完整版>>J2ME插值算法實現圖片的放大縮小
 
對高速二次線性插值算法的討論(格式正確版)
WannaPlay 原創文章 對高速二次線性插值算法的討論 (by ) 原理 線性插值並不難理解。以圖像處理領域爲例,我們的理想圖像是均勻的分布在二維平面直角坐標系中的,任意給出一對坐標,...查看完整版>>對高速二次線性插值算法的討論(格式正確版)
 
Photoshop"插值"放大圖像淺析
Photoshop"插值"放大圖像淺析
  很多朋友經常會問到怎樣把小圖片放大。其實,無論是photoshop、其他圖像處理軟件、以及一些放大圖像的“專用軟件”,包括數碼相機的“數碼變焦”,采用的都是“插值”方法來放大圖像,不同的只是“插值”的算法。...查看完整版>>Photoshop"插值"放大圖像淺析
 
警惕背後的刀子!DC插值淺談
  小編平時在閱讀讀者來信的時候,經常看到一些朋友因爲對數碼相機不熟悉而被經銷商欺騙的事情。下面就是一封讀者來信的節選。    “編輯你好,我叫陳xx,是北京的一名普通消費者。前不久去逛中關村的時候看見...查看完整版>>警惕背後的刀子!DC插值淺談
 
 
回到王朝網路移動版首頁