1樓:袁怡圃
建立m檔案:
function [result ,k] = newton(fun,x0,e)
% 呼叫形式:
% [x k] = newton(fun,x0,e)
% 功能:
% 用差商求導的牛頓法求解一元非線性方程的根
% 輸入:
% -- fun 字串,f(x)的表示式,以x作為自變數,以字串形式輸入
% -- x0 標量,求解的起始點
% -- e 標量,精度要求
% 輸出:
% -- x 標量,所求得的解
% -- k 標量,求解過程的迭代次數
% 袁怡圃,2003/4/3
m = x0;
h=0.000001;
f=inline(fun,'x');
k=0;
f0=feval(f,m);
f2=feval(f,m+h);
f1=feval(f,m-h);
n=m-2*h*f0/(f2-f1);
while abs(1-m/n)>e
m=n;
f0=feval(f,m);
f2=feval(f,m+h);
f1=feval(f,m-h);
n=m-2*h*f0/(f2-f1);
k=k+1;
if k>999
break
endend
if k==1000
disp('沒找到方程的根!');
result = 'zero';
else
result = n;
end在命令視窗輸入:
fun = '2*x^3+x^2-3*x+4=0';
x0 = 1;
[result ,k] = newton(fun,x0,0.00001)
2樓:匿名使用者
用matlab,具體程式設計我忘了
c++用牛頓迭代法求根。方程為ax^3+bx^2+cx+d=0。係數a,b,c,d由主函式輸入,求x在1附近的1個實根。
3樓:匿名使用者
牛頓迭代法的基本原理是,給定一個初始x0,做一條垂線與函式f(x)相交,得到的交點為(x0,y0),過該點在f(x)上作一條切線,得到該切線與x軸的交點為(x1, 0)。之後對(x1, 0)重複上述步驟,直到與x軸的交點的橫座標xn逐漸收斂到f(x)=0的根。也就是對於第i+1次迭代(i>=0),有下列等式
再來看**,
double x=1,x0,f,f1;
do while(fabs(x-x0)>1e-5);
其中f=((a*x0+b)*x0+c)*x0+d;
是用來求f在第i+1次迭代時的,在xi處的值,這裡f(x)是一個3次多項式,即
f1=(3*a*x0+2*b)*x0+c;
f1是用來求第i+1次迭代時,f在xi處的導數,而f在x處的導數為而迴圈結束一般是誤差在某個範圍內,就認為得到解了,所以是while(fabs(x-x0)>1e-5);
利用函式完成用牛頓迭代法求根。方程為ax3+bx2+cx+d=0,
4樓:匿名使用者
#include
#include
double value(double a,double b,double c,double d,double x)
double daovalue(double a,double b,double c,double d,double x)
int main()
printf("%lf\n",x1);
return 0;
} 你看看這個程式合你的意不?
利用函式完成用牛頓迭代法求根。方程為ax3+bx2+cx+d=0,係數a、b、c、d的值依次為1,2,3,4,
5樓:匿名使用者
同學,你的a b c是區域性變數,它的值只能在main函式裡面用
double f1(int a,int b,int c,int d,double x),同理f2。
用牛頓迭代法求ax³+bx²+cx+d=0的根。abcd依次為1234由主函式輸入。
6樓:環恢儷萄
1 #include
2 #include
3 using namespace std;
4 5 double static a,b,c,d;
6 7 double f(double x)8 11 double df(double x)12 15 int main()
16 能找根自再完善判斷迭代收斂性否根等內容
用牛頓迭代法求ax3+bx 2 +cx+d=0根
7樓:
可令f(x)=ax3+bx 2 +cx+d
可用excel列表試算,逐漸逼近方程的根。
x x^3 2x^2 3x f(x)
0 0 0 0 4
-2 -8 8 -6 -2
-1 -1 2 -3 2
-1.5 -3.375 4.5 -4.5 0.625
-1.75 -5.35938 6.125 -5.25 -0.48438
-1.625 -4.29102 5.28125 -4.875 0.115234
-1.68 -4.74163 5.6448 -5.04 -0.13683
-1.65 -4.49213 5.445 -4.95 0.002875
-1.655 -4.53309 5.47805 -4.965 -0.02004
-1.651 -4.5003 5.451602 -4.953 -0.0017
-1.6505 -4.49621 5.448301 -4.9515 0.000591
用牛頓迭代法求ax^3+bx^2 +cx+d=0的根
8樓:匿名使用者
牛頓迭代法的基本原理是,給定一個初始x0,做一條垂線與函式f(x)相交,得到的交點為(x0,y0),過該點在f(x)上作一條切線,得到該切線與x軸的交點為(x1, 0)。之後對(x1, 0)重複上述步驟,直到與x軸的交點的橫座標xn逐漸收斂到f(x)=0的根。也就是對於第i+1次迭代(i>=0),有下列等式
編寫自定義函式stringLower 實現將字串中所
這是個c語言 當然c 也可以這樣寫的。include void stringlower char int main void stringlower char s 這個是結果 望採納,謝謝。設計函式實現將一個字串中小寫字母轉化為大寫字母。c語言題目 include include void fun ...
編寫函式SUM實現求1 2 3 100的求和,結果在MAIN函式中輸出
include int main int sum include int sum return s void main printf the result is d 1 100 2 100 include intsum return sum int main void 編寫一個函式計算n!在主函式中...
編寫遞迴函式函式逆序輸出正整數,編寫一個遞迴函式函式逆序輸出一個正整數
實現指定 bai功能的遞迴函du數如下,呼叫時zhi只要使用daoreverse n 就可以得到自然專數n的逆序數輸出。屬void reverse int n void reverse int t 編寫遞迴函式將一個整數逆序輸出,求c程式 可以參考下面的 include void printdata...