非线性方程组与方程组的数值解法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if [f[a]*f[b]<0, for [i =1, i≤n, i++ , print [“搜索第”, i ,“次”, “x=“,(a+b)/2// N,”
f (x)=“,f [(a+b)/2] // N,”[“, a // N, “,”, b // N, “]”] : if [f [(a+b)/2]==0,i = n+1:]; if [f [(a+b)/2]*f[a] <0, b=(a+b)/2]; if [f [(a+b)/2]*f[a] <0, a=(a+b)/2] ]; print[“The root between [“, p, “,”,q ,”] is: “, (a+b)/2// N ], print[“There is no roots between [“, a, “,”,b , ”] !”] ]
a = f0 ∗ l2 ∗ l2 – f1 ∗ l2 ∗ hs2 + f2 ∗ l2; b = f0 ∗ l2 ∗ l2 – f1 ∗ hs2 ∗ hs2 + f2 ∗ 2 + f2 ∗ hs2; c = f2 ∗ hs2;
if [Abs[b +(b^2-4*a*c)^0.5]>Abs[b -(b^2-4*a*c)^0.5], l3 =-2*c/( b -(b^2-4*a*c)^0.5), l3= -2*c/( b +(b^2-4*a*c)^0.5)];
1
第 1 章 非线性方程组与方程组的数值解法
实验 1-1 解非线性方程的二分法(对分区法)
1. 问题: 2. 算例: 求方程 x^3-2x-5=0 的根。 3. 程序清单:
(*输入数据*) f [x_ ]: = x^3-2*x – 5; p = a = 2; q = b =3; n = 8; (*允许最大搜索次数*)
3
实验 1-3 简化的牛顿迭代法
1.问题: 2.算例: 求方程 x^3+2x^2+10x-20=0 的根。 3.程序清单: f[x_]:=x^3+2*x^2+10*x-20; g[a_]:=D[f(a),a] n = 6;
x=N[1,10]; print[“ ”]; print [“x[0]=”,x]
5
λ3=0.125 xk =3.19698 f (xk) =7.69478
λ 4 = 0.0625 xk =1.10349 f (xk) =-0.655587
K=2 时,第 2 次迭代
λ0 =1 xk =4.11507 f (xk) =19.1129
λ1=0.5 xk =2.60928 f (xk) =3.31234
print [“x[0]=”,x0]; print [“x[1]=”,x1]; print [“x[2]=”,x2]; f0 = f[x0]; f1 = f[x1]; f2 = f[x2];
for [i = 1,i ≤ n, i ++, l2 =(x2-x1) /(x1-x0); l= λ
hs2 = 1 + l2;
print[“x[0]=”,x0]; print[“x[1]=”,x1]; f0=f[x0]; f1=f[x1]; for[i=1,i<=n,i++,
x2=x1-f1*(x1-x0)/(f1-f0); f2=f[x2]; print[“x[”,i+1,”]=”,x2]; if [Abs(f2)<=e ,i=n+4] if [Abs(f2)>e ,x0=x1; f0=f1; x1=x2; f1=f2] ] xk=xk1 if[i==n+1,
4. 运行结果: 搜索第 1 次 x= 2.5 f (x)= 5.625 [ 2. , 3. ] 搜索第 2 次 x= 2.25 f (x)= 1.89063 [ 2. , 2.5 ] 搜索第 3 次 x= 2.125 f (x)= 0.345703 [ 2. , 2.25 ] 搜索第 4 次 x= 2.09375 f (x)= -0.00894165 [ 2.0625 , 2.125 ] 搜索第 5 次 x= 2.10938 f (x)= 0.166836 [ 2.09375 , 2.125 ] 搜索第 6 次 x= 2.10156 f (x)= 0.0785623 [ 2.09375 , 2.10938 ] 搜索第 7 次 x= 2.09766 f (x)= 0.0347143 [ 2.09375 , 2.10156 ] 搜索第 8 次 x= 2.0957 f (x)= 0.0128623 [ 2.09375 , 2.09766 ] The root between [ 2 , 3 ] is: 2.09473
print [“The root is : ”,x3]]; 4.运行结果: x[0]=0.5 x[1]=0.6 x[2]=0.56532 The root is:0.567124
8
实验 1-7 解非线性方程组的牛顿迭代法
1.问题: 2.算例: 设
f1[x, y] = x*x + y*y - 5 = 0 f2[x, y] = (x + 1)*y - (3*x + 1) = 0 用牛顿法求在(x0, y0) = (1, 1)附近的解 3.程序清单: Clear[x, y, x0, y0] n = 4; f1[x_, y_] := x*x + y*y - 5; f2[x_, y_] := (x + 1)*y - (3*x + 1);
λ 2 =0.25 xk =1.85638 f (xk) =0.276084
K=3 时,第 3 次迭代
λ0 =1 xk =1.74352
f (xk) =0.0231679
K=4 时,第 4 次迭代
λ0 =1 xk =1.73216
f (xk) =0.000224417
K=5 时,第 5 次迭代
λ0 =1 xk =1.73205
print [“the method have not got a root after” ,n, “steps”]; print [“The root is:”,x2]]; 4.运行结果: x[0]=1. x[1]=1.5 x[2]=1.35443 x[3]=1.36827 x[4]=1.36881 x[5]=1.36881
x0 = 1 // N; y0 = 1 // N;
for [i = 1,i<= n,i ++,
2
实验 1-2 解非线性方程的简单迭代法
1.问题: 2.算例: 求方程 x^3+2x^2+10x-20=0 的根。 3.程序清单:
f [x_]:=x^3+ 2*x2 + 10*x–20 ;
ϕ [x_]:=20/(x^2+2*x+10) ;
N=15; e=10^(-10);
x =N [1,8]; print [“x0=”,x]; for [i=1,i≤n,i++,
4
实验 1-4 下山牛顿迭代法
1.问题: 2.算例: 求方程 x^3/3-x=0 在-0.99 处的根 3.程序清单: (*输入数据*) Clear[x,a,l,xk,xk1] f[x_]:=x^3/3-x; g[a_]:=D[f(a),a]; delta=10^(-7); eps=10^(-7); n=20; x0=-0.99; xk=x0; print[“”]; print[“k=0 时,第 0 次迭代”]; print[“x0=”,xk,”,f(xk)=”, f(xk)]; for[i=1,i<=n,i++,
பைடு நூலகம்
7
实验 1-6 解非线性方程的抛物线法
1.问题: 2.算例: 用抛物线法求解方程 f(x)=x*Exp[x]-1=0。 3.程序清单:
clear[x,a,b,c]; n = 5;
f [x]: = x ∗ Exp[x]-1;
x0 = N[0.5,10]; x1 = N[0.6,10]; x2 = N[0.56532,10];
for[i=1,i<=n,i++, x=[x-f(a)/g(a)]/.a ->x; print[“x[“,i,”]=”,x]; ]
print [“The root is:”, x ];
4、运行结果: x[0]=1.000000000 x[1]=1.411764706 x[2]=1.369336471 x[3]=1.368808189 x[4]=1.36880811 x[5]=1.36880811 x[6]=1.36880811 The root is:1.36880811
print[“k=”,i”时,第”,i”次迭代”]; l=1; xk1=xk-l*f(xk)/g(a) /.a ->xk; print[“l0=1”,”xk=” , xk1,”f(xk)=”, f(xk1)]; for[j=1,Abs(f(xk1))>= Abs(f(xk)),j++ l=1/2*j; xk1=(xk-l*f(xk)/g(a))/.a->xk; print[“l”,”j,”=” ,l//N,”xk=”, xk1,”f(xk)=”, f(xk1)]; ]; if [(Abs(xk1-xk)<=delta)|| (Abs(f(xk1)<=esp)) ,i=n+2 ] xk=xk1 ] print [“The root is:”,xk1]
if [Abs[x-ϕ [x]]<e,i=n+1, x=ϕ [x];
print [“x[“, i ,”]=”,x]; ] ] print[“The root is :”,x];
4.运行结果: X[0]=1.0000000 x[1]=1.53846154 x[2]=1.29501916 x[3]=1.401825309 x[4]=1.354209390 x[5]=1.375298092 x[6]=1.3659297882 x[7]=1.3700860034 x[8]=1.3682410236 x[9]=1.36905981201 x[10]=1.36869639756 x[11]=1.36885768863 x[12]=1.368786102578 x[13]=1.368817874396 x[14]=1.368803773144 x[15]=1.3688100316751 The root is:1.3688100316751
(*定义矩阵*) g1[x_, y_] := Det[{{D[f1[x, y], x], D[f1[x, y], y]}, {D[f2[x, y], x], D[f2[x, y], y]}}]; g1[x, y]; j1[x_, y_] := Det[{{D[f1[x, y], y], f1[x, y]}, {D[f2[x, y], y], f2[x, y]}}]; j2[x_, y_] := Det[{{f1[x, y], D[f1[x, y], x]}, {f2[x, y], D[f2[x, y], x]}}];
4.运行结果: K=0 时,第 0 次迭代
x0 =-0.99 f (xk) =0.666567
K=1 时,第 1 次迭代
λ0 =1 xk =32.5058 f (xk) =11416.4
λ1=0.5 xk =15.7579 f (xk) =1288.53
λ 2 =0.25 xk =7.38396 f (xk) =126.814
f (xk) =2.18003×10−8
The root is: 1.73205
6
实验 1-5 解非线性方程的弦截法
1.问题: 2.算例: 求方程 x^3+2x^2+10x-20=0 的根 3.程序清单:
f[x_]:=x^3+2*x^2+10*x-20; x0=1//N; x1=1.5//N; e=10^(-6); n=12;
x3 = x2 + l3 ∗ x2 - l3 ∗ x1;
f3 = f[x3];
if [Abs [f3]<e,i = n+3]; e= ε if [Abs [f3]>e, x0 = x1;x1 = x2;x2 = x3;f0 = f1;f1 = f2;f2 = f3; λ 2 = λ3 ]
] if [i = = n + 1, print [“the method have not got a root after”, n ,” steps”],
f (x)=“,f [(a+b)/2] // N,”[“, a // N, “,”, b // N, “]”] : if [f [(a+b)/2]==0,i = n+1:]; if [f [(a+b)/2]*f[a] <0, b=(a+b)/2]; if [f [(a+b)/2]*f[a] <0, a=(a+b)/2] ]; print[“The root between [“, p, “,”,q ,”] is: “, (a+b)/2// N ], print[“There is no roots between [“, a, “,”,b , ”] !”] ]
a = f0 ∗ l2 ∗ l2 – f1 ∗ l2 ∗ hs2 + f2 ∗ l2; b = f0 ∗ l2 ∗ l2 – f1 ∗ hs2 ∗ hs2 + f2 ∗ 2 + f2 ∗ hs2; c = f2 ∗ hs2;
if [Abs[b +(b^2-4*a*c)^0.5]>Abs[b -(b^2-4*a*c)^0.5], l3 =-2*c/( b -(b^2-4*a*c)^0.5), l3= -2*c/( b +(b^2-4*a*c)^0.5)];
1
第 1 章 非线性方程组与方程组的数值解法
实验 1-1 解非线性方程的二分法(对分区法)
1. 问题: 2. 算例: 求方程 x^3-2x-5=0 的根。 3. 程序清单:
(*输入数据*) f [x_ ]: = x^3-2*x – 5; p = a = 2; q = b =3; n = 8; (*允许最大搜索次数*)
3
实验 1-3 简化的牛顿迭代法
1.问题: 2.算例: 求方程 x^3+2x^2+10x-20=0 的根。 3.程序清单: f[x_]:=x^3+2*x^2+10*x-20; g[a_]:=D[f(a),a] n = 6;
x=N[1,10]; print[“ ”]; print [“x[0]=”,x]
5
λ3=0.125 xk =3.19698 f (xk) =7.69478
λ 4 = 0.0625 xk =1.10349 f (xk) =-0.655587
K=2 时,第 2 次迭代
λ0 =1 xk =4.11507 f (xk) =19.1129
λ1=0.5 xk =2.60928 f (xk) =3.31234
print [“x[0]=”,x0]; print [“x[1]=”,x1]; print [“x[2]=”,x2]; f0 = f[x0]; f1 = f[x1]; f2 = f[x2];
for [i = 1,i ≤ n, i ++, l2 =(x2-x1) /(x1-x0); l= λ
hs2 = 1 + l2;
print[“x[0]=”,x0]; print[“x[1]=”,x1]; f0=f[x0]; f1=f[x1]; for[i=1,i<=n,i++,
x2=x1-f1*(x1-x0)/(f1-f0); f2=f[x2]; print[“x[”,i+1,”]=”,x2]; if [Abs(f2)<=e ,i=n+4] if [Abs(f2)>e ,x0=x1; f0=f1; x1=x2; f1=f2] ] xk=xk1 if[i==n+1,
4. 运行结果: 搜索第 1 次 x= 2.5 f (x)= 5.625 [ 2. , 3. ] 搜索第 2 次 x= 2.25 f (x)= 1.89063 [ 2. , 2.5 ] 搜索第 3 次 x= 2.125 f (x)= 0.345703 [ 2. , 2.25 ] 搜索第 4 次 x= 2.09375 f (x)= -0.00894165 [ 2.0625 , 2.125 ] 搜索第 5 次 x= 2.10938 f (x)= 0.166836 [ 2.09375 , 2.125 ] 搜索第 6 次 x= 2.10156 f (x)= 0.0785623 [ 2.09375 , 2.10938 ] 搜索第 7 次 x= 2.09766 f (x)= 0.0347143 [ 2.09375 , 2.10156 ] 搜索第 8 次 x= 2.0957 f (x)= 0.0128623 [ 2.09375 , 2.09766 ] The root between [ 2 , 3 ] is: 2.09473
print [“The root is : ”,x3]]; 4.运行结果: x[0]=0.5 x[1]=0.6 x[2]=0.56532 The root is:0.567124
8
实验 1-7 解非线性方程组的牛顿迭代法
1.问题: 2.算例: 设
f1[x, y] = x*x + y*y - 5 = 0 f2[x, y] = (x + 1)*y - (3*x + 1) = 0 用牛顿法求在(x0, y0) = (1, 1)附近的解 3.程序清单: Clear[x, y, x0, y0] n = 4; f1[x_, y_] := x*x + y*y - 5; f2[x_, y_] := (x + 1)*y - (3*x + 1);
λ 2 =0.25 xk =1.85638 f (xk) =0.276084
K=3 时,第 3 次迭代
λ0 =1 xk =1.74352
f (xk) =0.0231679
K=4 时,第 4 次迭代
λ0 =1 xk =1.73216
f (xk) =0.000224417
K=5 时,第 5 次迭代
λ0 =1 xk =1.73205
print [“the method have not got a root after” ,n, “steps”]; print [“The root is:”,x2]]; 4.运行结果: x[0]=1. x[1]=1.5 x[2]=1.35443 x[3]=1.36827 x[4]=1.36881 x[5]=1.36881
x0 = 1 // N; y0 = 1 // N;
for [i = 1,i<= n,i ++,
2
实验 1-2 解非线性方程的简单迭代法
1.问题: 2.算例: 求方程 x^3+2x^2+10x-20=0 的根。 3.程序清单:
f [x_]:=x^3+ 2*x2 + 10*x–20 ;
ϕ [x_]:=20/(x^2+2*x+10) ;
N=15; e=10^(-10);
x =N [1,8]; print [“x0=”,x]; for [i=1,i≤n,i++,
4
实验 1-4 下山牛顿迭代法
1.问题: 2.算例: 求方程 x^3/3-x=0 在-0.99 处的根 3.程序清单: (*输入数据*) Clear[x,a,l,xk,xk1] f[x_]:=x^3/3-x; g[a_]:=D[f(a),a]; delta=10^(-7); eps=10^(-7); n=20; x0=-0.99; xk=x0; print[“”]; print[“k=0 时,第 0 次迭代”]; print[“x0=”,xk,”,f(xk)=”, f(xk)]; for[i=1,i<=n,i++,
பைடு நூலகம்
7
实验 1-6 解非线性方程的抛物线法
1.问题: 2.算例: 用抛物线法求解方程 f(x)=x*Exp[x]-1=0。 3.程序清单:
clear[x,a,b,c]; n = 5;
f [x]: = x ∗ Exp[x]-1;
x0 = N[0.5,10]; x1 = N[0.6,10]; x2 = N[0.56532,10];
for[i=1,i<=n,i++, x=[x-f(a)/g(a)]/.a ->x; print[“x[“,i,”]=”,x]; ]
print [“The root is:”, x ];
4、运行结果: x[0]=1.000000000 x[1]=1.411764706 x[2]=1.369336471 x[3]=1.368808189 x[4]=1.36880811 x[5]=1.36880811 x[6]=1.36880811 The root is:1.36880811
print[“k=”,i”时,第”,i”次迭代”]; l=1; xk1=xk-l*f(xk)/g(a) /.a ->xk; print[“l0=1”,”xk=” , xk1,”f(xk)=”, f(xk1)]; for[j=1,Abs(f(xk1))>= Abs(f(xk)),j++ l=1/2*j; xk1=(xk-l*f(xk)/g(a))/.a->xk; print[“l”,”j,”=” ,l//N,”xk=”, xk1,”f(xk)=”, f(xk1)]; ]; if [(Abs(xk1-xk)<=delta)|| (Abs(f(xk1)<=esp)) ,i=n+2 ] xk=xk1 ] print [“The root is:”,xk1]
if [Abs[x-ϕ [x]]<e,i=n+1, x=ϕ [x];
print [“x[“, i ,”]=”,x]; ] ] print[“The root is :”,x];
4.运行结果: X[0]=1.0000000 x[1]=1.53846154 x[2]=1.29501916 x[3]=1.401825309 x[4]=1.354209390 x[5]=1.375298092 x[6]=1.3659297882 x[7]=1.3700860034 x[8]=1.3682410236 x[9]=1.36905981201 x[10]=1.36869639756 x[11]=1.36885768863 x[12]=1.368786102578 x[13]=1.368817874396 x[14]=1.368803773144 x[15]=1.3688100316751 The root is:1.3688100316751
(*定义矩阵*) g1[x_, y_] := Det[{{D[f1[x, y], x], D[f1[x, y], y]}, {D[f2[x, y], x], D[f2[x, y], y]}}]; g1[x, y]; j1[x_, y_] := Det[{{D[f1[x, y], y], f1[x, y]}, {D[f2[x, y], y], f2[x, y]}}]; j2[x_, y_] := Det[{{f1[x, y], D[f1[x, y], x]}, {f2[x, y], D[f2[x, y], x]}}];
4.运行结果: K=0 时,第 0 次迭代
x0 =-0.99 f (xk) =0.666567
K=1 时,第 1 次迭代
λ0 =1 xk =32.5058 f (xk) =11416.4
λ1=0.5 xk =15.7579 f (xk) =1288.53
λ 2 =0.25 xk =7.38396 f (xk) =126.814
f (xk) =2.18003×10−8
The root is: 1.73205
6
实验 1-5 解非线性方程的弦截法
1.问题: 2.算例: 求方程 x^3+2x^2+10x-20=0 的根 3.程序清单:
f[x_]:=x^3+2*x^2+10*x-20; x0=1//N; x1=1.5//N; e=10^(-6); n=12;
x3 = x2 + l3 ∗ x2 - l3 ∗ x1;
f3 = f[x3];
if [Abs [f3]<e,i = n+3]; e= ε if [Abs [f3]>e, x0 = x1;x1 = x2;x2 = x3;f0 = f1;f1 = f2;f2 = f3; λ 2 = λ3 ]
] if [i = = n + 1, print [“the method have not got a root after”, n ,” steps”],