求matlab编程 用二分法和牛顿迭代法求根号a

locoo232022-10-04 11:39:541条回答

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

共1条回复
潇宇航 共回答了16个问题 | 采纳率87.5%
对于求平方根,变成方程模式为f(x)=x^2-a,即求此方程的实根;
下面编写了两个function函数,可以直接调用.
二分法:
function x=sqrt_bisect(a)
f=@(x)x^2-a;
if a0
xb=x;
elseif f(xa)*f(x)>0
xa=x;
else
break
end
end
end
x;
牛顿迭代法:
function x=sqrt_newton(a)
f=@(x)x^2-a;
df=diff(sym('x^2-a'));
if a1e-6
x0=x1;
x1=x0-f(x0)/subs(df,x0);
end
end
x=x1;
调用格式为:
sqrt_bisect(3)
ans =
1.7321
或者
sqrt_newton(2)
ans =
1.4142
1年前

相关推荐

MATLAB编程怎样去掉矩阵里的一行一列形成新矩阵
coffer3211年前1
qzhh240 共回答了19个问题 | 采纳率89.5%
主要两种方法:
(1)利用冒号表达式获得子矩阵
>> A=[ 1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> B=A(1:2,2:3)
B =
2 3
5 6
(2)利用空矩阵
>> C=A;
>> C(:,[1])=[];
>> C([3],:)=[]
C =
2 3
5 6
建议找一本基础的书看一下!
求数学建模高手——线性规划题,如何用MATLAB编程?紧急!
求数学建模高手——线性规划题,如何用MATLAB编程?紧急!
max=1.15*x4A+1.40*x2C+1.25*x3B+1.06*x5D;
x1A+x1D=100000;
-1.06*x1D+x2A+x2C+x2D=0;
-1.15*x1A+x3A+x3B-1.06*x2D+x3D=0;
-1.15*x2A+x4A-1.06*x3D+x4D=0;
-1.15*x3A-1.06*x4D+x5D=0;
x2C
秋童话天1年前1
五月铃 共回答了18个问题 | 采纳率88.9%
您的变量应该只有11个,不是20个,下面是我的编程,您看一下:c=[0 0 0 -1.15 -1.25 -1.40 0 0 0 0 -1.06 ];>> A=[0,0,0,0,0,1,0,0,0,0,0;0,0,0,0,1,0,0,0,0,0,0];>> b=[30000;40000];>> Aeq=[1,0,0,0,0,0,1,0,0,0,0;0,...
关于MATLAB编程的问题,.有重谢!
关于MATLAB编程的问题,.有重谢!

对于这个公式,下面是我的编程,不知道哪里有错误.我让ui 和 ui+k 都等于全体数的均值.
希望能画出 R关于k 的图像
clc
clear
X=[12 5 -6 14 7 -12 4 9 16 3 20 7 -12 5 0 6 14 6 -10 18];
[m,n]=size(X);
D=[];
U=mean(X);
for k=0:(n-1)
for i=1:n
if (i+k)>n
a=0;
else
a=(X(i)-U)*(X(i+k)-U);
end
A=[a];
end
v=var(X);
e=mean(A);
d=e/v;
D=[d];
end
plot(k,D)
初学MATLAB,
fctofc1年前1
迷瞳 共回答了19个问题 | 采纳率100%

clc
clear
X=[12 5 -6 14 7 -12 4 9 16 3 20 7 -12 5 0 6 14 6 -10 18];
[m,n]=size(X);
U=mean(X);
v=var(X);

for k=0:(n-1)
for i=1:n
if (i+k)>n
a(i)=0;
else
a(i)=(X(i)-U)*(X(i+k)-U);
end
end
r(k+1)=mean(a)/v;
end
subplot(211);stem(r);
subplot(212);autocorr(X);title('autocorr函数计算对比');