求用割线法求方程x的3次方-2x-5=0在x0=2附近的根,取x0=2,x1-=2.2,计算到4位有效数字的C语言程序

justin晓然2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
99freebird 共回答了25个问题 | 采纳率84%
#include
#include
float ff(float x)
{
return x*(x*x-2)-5;
}
float Secant(float x0,float x1)
{
return (x1 - (ff(x1)*(x1-x0))/(ff(x1)-ff(x0)));
}
void main()
{
int number,k=2;
float x0=2,x1=2.2,x2;
printf("x[0] = %.4f,x[1] = %.4f,",x0,x1);
while (1)
{
if (fabs(x0-x1)
1年前

相关推荐

分别用牛顿法和割线法求解方程 x^3-6x^2+9x-2=0在区间[3,4]上的近似根.要求满足精度|x*-xk|
763097951年前1
uu一只不色的狼 共回答了17个问题 | 采纳率94.1%
%
clc; clear all;
global fnq dfnq
fnq = @(x) x^3 - 6*x^2 + 9*x - 2;
dfnq = @(x) 3*x^2 - 12*x + 9;
tol = (1/2)*10^-4;x0 = 3.5;gmax = 1e3;x01 = 3;x02 = 4;[k,xk,yk,piancha]=newtonqx(x0,tol,gmax);
fprintf('n牛顿法:%.5fn',xk);
[k,xk,yk,piancha]=gexian(x01,x02,tol,gmax);
fprintf('n割线法:%.5fn',xk);% 牛顿法
function [k,xk,yk,piancha]=newtonqx(x0,tol,gmax)
global fnq dfnqx(1)=x0;for i=1:gmax
x(i+1)=x(i)-fnq(x(i))/(dfnq(x(i)+eps));
piancha=abs(x(i+1)-x(i));i=i+1;
xk=x(i);yk=fnq(x(i));
[(i-1) xk yk piancha];
if(pianchagmaxdisp('超过最大迭代次数')k=i-1;xk=x(i);yk=fnq(x(i));
[i-1 xk yk piancha];return;end% 割线法function [k,xk,yk,piancha]=gexian(x01,x02,tol,gmax)
global fnq dfnq
x(1)=x01;x(2)=x02;
for i=2:gmax
u(i)=fnq(x(i))*(x(i)-x(i-1));
v(i)=fnq(x(i))-fnq(x(i-1));
x(i+1)=x(i)-u(i)/(v(i));
piancha=abs(x(i+1)-x(i));i=i+1;xk=x(i);yk=fnq(x(i));
if(piancha
100分.割线法迭代求根的收敛阶为什么是1.618?求证明.
100分.割线法迭代求根的收敛阶为什么是1.618?求证明.
用割线法迭代公式求方程根时(公式为 x_{n+1} = x_n - f[x_n]( x_n - x_{n-1} ) / (f[x_n]-f[x_{n-1} ) 就是牛顿法用差商代替微分之后的表达式),书上其收敛阶是(1+根号5)/2=1.618,比牛顿法略慢而比二分法快,并且不用算函数的微分表达式所以是复杂函数求根的常用方法.但是我查阅了很多书都是直接给出这个收敛阶而没有证明,想问问看大家能帮我解答这个疑惑不.
另,用抛物线法插值求根迭代的收敛阶是1.839,可以的话一并帮我解答了吧,呵呵.
和光同尘之阿珂1年前1
wendywinter 共回答了16个问题 | 采纳率100%
这个其实就是牛顿法的改进
( x_n - x_{n-1} ) / (f[x_n]-f[x_{n-1} )相当于Δx/Δy,也就是牛顿法的1/f'(x)
将牛顿法x(n+1) = x(n) - f(x(n)) / f'(x(n))
中的 f'(x(n))用Δy/Δx代替,然后用相邻的已经计算的两个点代进去就是这个公式了.

大家在问