實驗報告
**檔案
用程式語言程式設計實現以下演算法:
(1) 已知插值節點序列 ,用拉格朗日(lagrange)插值多項式 計算的函式 在點 的近似值。
(2) 已知插值節點序列 ,用牛頓(newton)插值值多項式 計算的函式 在點 的近似值。
(3) 用線性函式 擬合給定資料 。
#include
#define max 100
using
namespace std;
//拉格朗日插值
double
lagrange
(double x,
double y,
int n,
double x0)
} y0 +
= temp;
}return y0;
}//牛頓插值
double
newton
(double x,
double y,
int n,
double x0)
else}}
double out =0;
for(
int i =
0; i < n; i++
) out +
= temp1;}}
return out;
}//最小二乘法擬合資料
void
mintwo
(double x,
double y,
int n,
double
&a,double
&b) a =
(c1 * b2 - c2 * b1)
/(a1 * b2 - a2 * b1)
; b =
(c1 * a2 - c2 * a1)
/(b1 * a2 - b2 * a1);}
intmain()
//cout << "輸入要計算的 x0 :";
//cin >> x0;
//cout << "函式f(x)的近似值為:lagrange:" << lagrange(x, y, n, x0) << endl;
//cout << "函式f(x)的近似值為:newton:" << newton(x, y, n, x0) << endl;
double a, b;
mintwo
(x, y, n,a,b)
; cout <<
"擬合函式為:y = "
<< a <<
" + "
<< b <<
"x "
<< endl;
return0;
}
用程式語言程式設計實現以下演算法:
(1) 用復化梯形公式 的自動控制誤差演算法求積分 。
(2) romberg積分演算法求積分 。
#include
#define max 20
using
namespace std;
//測試函式
doublef(
double x)
//復合梯形公式
double
trapz
(double a,
double b,
int n,
double
(*f)
(double x)
) out *
= h;
return out;
}//remberg演算法
double
remberg
(double a,
double b,
int n,
double
(*f)
(double x));
temp[0]
[0]=
trapz
(a, b,
1, f)
;for
(int k =
1; k <= n; k++
) p = p * hlast /2;
temp[k]
[m]= temp[k -1]
[m]/
2+ p;
}else
cout << temp[k]
[m]<<
"\t";}
cout << endl;
}return temp[n]
[n];
}int
main()
本章學習了數值積分的演算法,在計算一些無法通過直接計算來求解的函式積分時,來實現各種近似積分的方法,包含插值型求積公式、newton-cotes公式、復合梯形公式、復合simpson公式,以及romberg演算法等。在運用計算機求解積分時的技巧和方法。在掌握這些東西的時候雖然難以理解,但這些東西都包含數學的魅力。
用程式語言程式設計實現以下演算法:
(1) 用改進的尤拉(euler)公式求解常微分方程初值問題。
(2) 用四階龍格-庫塔(runge-kutta)方法求解常微分方程初值問題。
#include
using
namespace std;
//導數
double
f_xy
(double x,
double y)
//尤拉演算法
double
euler
(double x0,
double y0,
double h,
double xn,
double
(*f)
(double x,
double y)
)return ynext;
}//龍格庫塔演算法
double
rungekutta
(double x0,
double y0,
double h,
double xn,
double
(*test)
(double x,
double y)
)return ynext;
}int
main()
本章學習的是微分方程的近似解法,已知初值(x0,y0),和求積函式,求解xn時yn的近似值,問題是對於不能直接通過計算得出結果計算式子。總體思想就是求曲線的積分,求面積來代替求解,然後使用微分法,離散化成乙個乙個區域求面積,所有面積的和就是yn,每個面積用長方形代替長取區域長度,寬取區域左端點求的方法交尤拉演算法(euler),取右端點的叫隱式尤拉演算法,取中點的叫中點尤拉格式,用梯形計算區域面積的叫梯形格式,由於右端點未知,用尤拉演算法先求出來,再用梯形公式校正,就是改進的尤拉演算法。龍格庫塔演算法就是在區域內取幾個點,把對應的y加權求平均作為長方形的高。求解。
用程式語言程式設計實現以下演算法:
(1) 用二分法求 的根。
(2) 用牛頓(newton)迭代法求 在 附近的根。
(3) 用弦截法求 的根。
#include
#define max 1000
using
namespace std;
//求解函式
doublef(
double x)
//導函式
doublefl(
double x)
//二分法
double
dichotomy
(double a,
double b,
double precision,
double
(*f)
(double x)
)elseif(
f(a)*f
(temp)
<0)
else}}
}//newton迭代法
double
newton
(double x0,
double precision,
double
(*f)
(double x)
,double
(*fl)
(double x)
)return
null;}
//弦切法
double
stringcut
(double x0,
double x1,
double precision,
double
(*f)
(double x)
)return
null;}
intmain()
實現計算機
實現乙個計算器 實現兩個運算元 小數和整數均可 的加 減 乘 除 清零操作。1.加法運算 2.減法運算 3.乘法運算 4.除法運算 64 16 4 using system using system.collections.generic using system.componentmodel us...
C 實驗將計算機加入域
using system using system.collections.generic using system.componentmodel using system.data using system.diagnostics using system.directoryservices us...
計算機啟動分析
計算機的啟動一般分為四個階段 bios程式為開機自檢程式,是固化在rom晶元中。正如其英文表達意思,basic input output system 基本輸入輸出系統 當控制權轉移到優先順序第一的儲存裝置上後,計算機會讀取該裝置的第乙個扇區,即最前面512個位元組。觀察512個位元組中最後2個位元...