求解关于x的方程。 10
【求解答案】本题有一个特解x=0,由于函数为tan类三角函数,故有n个数值解,其中几个数值解为x=-1.4090937, x=-2.6725884,。。。
【求解方法与思路】该非线性一元一次方程。用现有的方法,无法计算得到解析解。但可以用数值分析的方法来求解得到。一般可以用牛顿迭代法。
第一步,令y=f(x),即
y=x^4*tan(x^4)+x^4*tan(x^6)+4*x^2+4*tan(x^2)+8*x^2*tan(x^4)+12*x^2*tan(x^2)-4*x^3*tan(x)-4*x^3*tan(x^5)-8*x*tan(x)-8*x^3*tan(x^3)-8*x*tan(x^3)
第二步,求该函数的导函数。即
dy=y'=8*x-8*tan(x^3)-8*tan(x)+24*x*tan(x^2)-12*x^2*tan(x)+16*x*tan(x^4)+24*x^3*(tan(x^2)^2+1)-24*x^3*(tan(x^3)^2 + 1)-24*x^5*(tan(x^3)^2+1)+32*x^5*(tan(x^4)^2+1)+4*x^7*(tan(x^4)^2+1)-20*x^7*(tan(x^5)^2 + 1)+6*x^9*(tan(x^6)^2 + 1)-8*x*(tan(x)^2 + 1)-24*x^2*tan(x^3)-12*x^2*tan(x^5)+4*x^3*tan(x^4)+4*x^3*tan(x^6)+8*x*(tan(x^2)^2+1)-4*x^3*(tan(x)^2+1)
第三步,运用下列迭代式,进行迭代计算。
这里,f(x0)——函数在x=x0处的值,f'(x0)——导函数在x=x0处的值
当x(n+1)与x(n)的差值小于给定的误差,如eps=1e-6=0.000001
【计算过程】解:
取x0=-1.35,f(-1.35)=-200,f'(-1.35)=2788.3,x=-1.278118
取x0=-1.278118,f(-1.278118)=-386.29,f'(-1.278118)=-14557,x=-1.304655
取x0=-1.304655,f(-1.304655)=-235.59,f'(-1.304655)=-4102.5,x=-1.362082
取x0=-1.362082 ,f(-1.362082)=-573.34,f'(-1.362082)=300812.1,x=-1.360176
。。。。。。
取x0=-1.409093716,f(-1.409093716)=-0.000175696,f'(-1.409093716)=-190889.79,x=-1.409093717
取x0=-1.409093717,f(-1.409093717)=-8.808695995e-10,f'(-1.409093717)=-190890.24,x=-1.409093717
Δ=1e-11
同理,用方法可以得到更多的解。
【matlab解】
x0=-1.35; %初始值
tol = 1.0e-10; %误差值
x = newton(x0,tol); %牛顿迭代法函数
y = fun(x); %计算值,该值越接近零。计算精度愈高。
str=['f(x)=x^4*tan(x)^4+x^4*tan(x)^6+4*(x)^2+4*tan(x)^2+8*(x)^2*tan(x)^4+12*x^2*tan(x)^2-4*x^3*tan(x)-4*x^3*tan(x)^5-8*x*tan(x)-8*x^3*tan(x)^3-8*x*tan(x)^3'];
fprintf('%s\n',str); %显示函数式
str=['x=',num2str(x),';y=',num2str(y)];
fprintf('%s\n',str); %显示计算值
计算结果