解一元一次的方法
Cos( 56.3 - 3.8381X ) - 0.1444 X = 0
X 約6-7之間
遇上種問題之前都是用 C#寫個判斷, 用帶入法求出的 .
請問除了用試誤之外, 還有其他的方式嗎?
謝謝!
2 個解答
- 1 0 年前最佳解答
既然提到數值分析
那我就介紹一個方法給你
"二分法"
這種方法是用勘根定理及中間值定理寫出來
你先看~不懂在發問
程式碼:
#include <stdio.h>
#include <math.h>
float bisection(float a, float b, float Tol, float N);
int main()
{
float a, b, c, d, m;
printf("請依序輸入左端點;右端點;誤差;迴圈次數(左右端點需為整數,誤差為小數):\n");
scanf("%f%f%f%f",&a, &b ,&c ,&d);
m=bisection(a, b, c, d);
printf("方程式的根為:x=%.20f\n\n", m);
system("pause");
}
float bisection(float a, float b,float Tol, float N)
{
int i=1;
float FA, FB, FP, p;
FA=cos(56.3-3.8381*a)-0.1444*a;
while(i<=N)
{
p=a+(b-a)/2;
FP=cos(56.3-3.8381*p)-0.1444*p;
if(FP==0 || ((b-a)/2)<Tol )
{
return p;
}
i++;
if(FA*FP>0)
{
a=p;
FA=FP;
}
else
b=p;
}
}
建議誤差取0.00001 迴圈次數20次
以上面的題目算出的答案是6.37929......
你也可以是是別的題目
副程式那邊的函數改一下就好了
參考資料: 剛寫的 - 匿名使用者1 0 年前
既然提到 C
你可以去找數值分析的書,看求根的那些章節就好
方法很多
例如十分逼近法,二分逼近法,Newton-Raphson 方法