牛顿拉富生方法

148(30天)
Durgga Rajendren
Durgga Rajendren 2011年4月19日
回答: kalyan米2022年2月15日
鉴于f (x) = x ^ 3 - 8 * x ^ 2 - 200 * x + 1000
定位最大的f (x) x (-10, 10)。最大必须位于通过导数f (x)的根源。使用牛顿拉富生方法执行根发现。
问题要求我们选择最初想买自己看后f (x)图形。解决方案必须有0.01%的精度。然后,情节的f (x)和根必须b在相同的图。
我有牛顿拉富生方法的功能,但我觉得我缺少一个重要的句子,因为我不能得到迭代印在命令窗口。另外,我不知道如何绘制f (x)和根。我用谷歌搜索了几个小时但是毫无帮助。
这是我的功能:
函数根= newraph (f, df、习、精密)
%评论的输入和输出
%计算f (xi)和f (xi)
貌似我= f (xi);
dfxi = df (xi);
%为牛顿拉富生方法迭代的开始
abs有限公司(fxi) >精度
%计算新的估计根,x_i_ + _1
ξ= xi-fxi / dfxi;
貌似我= f (xi);%计算f (x_i_ + _1)
dfxi = df (xi);%计算f ' (x_i_ + _1)
结束
%最后xr值是根
根= xi;
我希望有人能帮我解决这个错误。感谢任何帮助。谢谢:)

答案(3)

马特Tearle
马特Tearle 2011年4月19日
  1. 请代码更可读的格式
  2. 你为什么想显示迭代?但无论如何,只是添加一个disp后,在你的循环语句更新。(或者只是离开分号)。
  3. 绘制功能,使一个向量x的值在[10]-10年试一试linspace),然后在这些x值评估函数。如果f是一个函数处理,您可以简单地评估f (x)


kalyan米
kalyan米 2022年2月15日
函数 []= Newton_Raphson (f, df, x0)
输入% f和df是内联函数
%,df的dirivative f
麦克斯特= 100;
x = 0(1,麦克斯特);
x (1) = x0;
我= 1:麦克斯特
如果 abs (df (x (i))) < 10 ^ -15
流( 的导数为零在x = % f \ n ' x(我))
打破
结束
(i + 1) = x (i) - f (x (i)) / df (x (i));
呃= abs (x - x (i + 1)(我));
如果 犯错< 10 ^ 6
流( ' \ n迭代的数量是% d函数的根是x = % f \ n ' 我x (i + 1))
打破
结束
结束
如果 我= =麦克斯特
流( 后的牛顿-拉富生方法不收敛迭代\ n % d ' ,我)
结束
如果 犯错< 10 ^ 7
tt = 1:0.001:5;
y = f (tt);
情节(tt, y, “k” x (i + 1), 0, ‘*’ )
网格
传奇( “函数” , “近似根” )
结束
结束
谐波
x = (45 90 135 180 225 270 315 360);
y = [4 3.8 -1.5 2.4 - 2 0 2.8 - 3.4)
x = x(π/ 180)*
信谊 t
T = 2π*;
w = 2 *π/ T;
h = 2; %的激素的数量
a0 = 2 *意味着(y);
HS = a0/2;
i = 1: h
(我)= 2 *意味着(y。* cos(我* w * x));
b (i) = 2 *意味着(y。* sin(我* w * x));
h = h +(我)* cos(我* w * t) + b(我)* sin(我* w * t);
结束
HS = vpa (HS, 4);
disp (HS)
情节(x, y, ‘*’ )
持有
t = linspace (x (1) x(结束),1000);
日元= eval (HS);
情节(t, y1, “r” )
函数 []= Gauss_Seidal22 (A, B)
[m, n] =大小(一个);
f = 0;
% % %对角占优
j = 1: m
如果 (和(abs ((j,:))) abs ((j,))) > abs ((j, j))
f = 1;
流( “系统不是对角占优\ n” )
结束
结束
如果 f ~ = 1
流( “给定的系统是对角占优\ n” )
% Gauss-Seidal迭代法
托尔= 1 e-6;
麦克斯特= 100;
x = 0 (n, 1); %初始值设为一个列向量
k = 1:麦克斯特
xold = x;
i = 1: n
Num = B(我)——(我,1:张)* x(1:张)——(我+ 1:n) * x (i + 1: n);
x (i) = Num /(我);
结束
呃= abs (x-xold);
如果 犯错<托尔
流( “Gauss-Seidal方法收敛\ n” )
打破
结束
结束
流( ' % d迭代需要得到\ n x = ' ,k)
流( “\ t \ t % f \ n” ,x)
结束
结束

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!