用牛顿法求a的立方根,精度要求为0.00001。 %用牛顿迭代法求a的立方根 %相当于求x^3-a=0方程的根 a=input('求a的立方根,请输入a'); x=a;i=0;m=100; x1=x-(x^3-a)/(3*x^2); while abs(x-x1)>1e-5 &【1 】 x=x1; i=i+1; x1=【2】 ; end if abs(x1-x)<=1e-5 disp(['迭代',num2str(i),'次,根为:',num2str(x1)]) else disp('迭代发散') end
举一反三
- 求函数 f(x)=3*x1^2 + 2*x1*x2 + x2^2 − 4*x1 + 5*x2. 时,输入代码 >>fun = @(x)3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2); >>x0 = [1,1]; >>[x,fval] = fminunc(fun,x0); 其中fun的作用是:
- 下列程序用迭代法求方程3x3-2x2+5x-7=0在1附近的一个根,精确为10-6。牛顿迭代公式为x=x-f(x)/f'(x),函数Fx求f(x),函数fx求f'(x)。请完善程序。 #include[iostream] #include[cmath] using namespace std; double _____(1)______(double x) { return 3*x*x*x-2*x*x+5*x-7; } double fx(double x) { return _______(2)_______; } int main() { double x1,x2=1; do{ x1=x2; x2=x1-Fx(x1)/fx(x2); }while(______(3)_______); cout[<"方程的根为"<<x2<<endl; system("pause"); return 0;<br] }
- 求函数 f(x)=3*x1^2 + 2*x1*x2 + x2^2 − 4*x1 + 5*x2. 时,输入代码 >>fun = @(x)3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2); >>x0 = [1,1]; >>[x,fval] = fminunc(fun,x0); 到matlab上运行一下,得到的结果,x是:
- 设A={x|-1<x<2},B={x|1<x<3},求A∪B. A: {x|-1<x<2} B: {x|-1<x<1} C: {x|-1<x<3} D: {x|2<x<3}
- 求方程组的解,取初值为(1,1,1)。[img=250x164]180333307ab8fde.jpg[/img] A: f=@(x) [x(1)^3+x(2)-x(3)-5; 2*x(1)+3*x(2)^2-6; x(1)+x(2)+x(3)-3];x=fsolve(f,[1,1,1],optimset('Display','off')) B: x=fsolve(@(x) [x(1)^3+x(2)-x(3)-5; 2*x(1)+3*x(2)^2-6; x(1)+x(2)+x(3)-3],[1,1,1]) C: f=@(x) [x(1)^3+x(2)-x(3)-5; 2*x(1)+3*x(2)^2-6; x(1)+x(2)+x(3)-3];x=fzero(f,[1,1,1]) D: x=fzero(@(x) [x(1)^3+x(2)-x(3)-5; 2*x(1)+3*x(2)^2-6; x(1)+x(2)+x(3)-3],[1,1,1])