[英]MATLAB help required function root
I have made an program, 我做了一个程序
function bisection;
x1=input('enter the first value=')
x2=input('enter the second value=')
%f3=[];
for x=1:20
%x=1;
x3=(x1+x2)/2;
while x3-x1 >= 0.001
f3(x)=x3^3 + x3^2 - 3*x3 - 3;
f1(x)=x1^3 + x1^2 - 3*x1 - 3;
if ((f3(x)*f1(x)) < 0)
x2=x3;
else
x1=x3;
end
break
end
format long
f3'
disp('The root is found to be =');
x3
end
. 。 .
。 .
。 .
。 .
。 program calculate function of interval (x1, x2) given by user,
程序计算用户给定的间隔(x1,x2)的函数,
my program compile and execute but little stupid repetition until for loop complete, i want to stop further printing loop when desired value is achieved with while condition is used. 我的程序可以编译和执行,但是很少重复执行愚蠢的重复操作,直到循环完成为止,我想在使用条件时达到所需值时停止进一步的打印循环。
The Bisection method is implemented in the following method. 二分法是通过以下方法实现的。 The function to be analyzed, as well as the interval borders are passed as parameters.
将要分析的功能以及间隔边界作为参数传递。
function bisection(f, x1, x2)
if f(x1)*f(x2) < 0 % check precondition sign(f(x1)*f(x2)) = -1
while abs(x2-x1) >= 0.001
x3=(x1+x2)/2;
if ((f(x1)*f(x3)) < 0)
x2 = x3;
elseif ((f(x2)*f(x3)) < 0)
x1 = x3;
else
break
end
end
fprintf('The root is found to be = %.3f\n', x3);
else
fprintf('f(x1) and f(x2) must have opposite signs!\n')
end
Runner part of your root finding task. 寻根任务的亚军部分。
format long
f = @(x) x^3 + x^2 - 3*x - 3;
x1=input('enter the first value=');
x2=input('enter the second value=');
bisection(f, x1, x2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.