用穆勒法求根

33次浏览(最近30天)
shiv白肢野牛
shiv白肢野牛 2021年7月25日11:46
评论: 沃尔特罗伯森 2021年8月2日7:44
只有一个根正在显示假设f(x)= x ^ 2 + 1只有-i根显示不是+ i
这是Muller方法的程序
函数Shik3.
%t2 = 1e-6;
p0 = 10;
P1 = 20;
p2 = 30;
托尔= 10 ^ 9;
n0 = 100;
格式;
H1 = p1 - p0;
H2 = P2 - P1;
delta1 =(f(p1) - f(p0))/ h1;
delta2 =(f(p2) - f(p1))/ h2;
D =(Delta2 - Delta1)/(H2 + H1);
我= 3;
我<= n0
b = DELTA2 + h2*d;
d =(b。^ 2 - 4 * f(p2)。* d)。^(1/2);
如果abs(b-d)
E = B + D;
别的
E = b - D;
结尾
h = -2 * f(p2)/ e;
p = p2 + h;
如果abs(h)
P.
DISP(P)
休息
结尾
p0 = p1;
p1, p2;
p2 = p;
H1 = p1 - p0;
H2 = P2 - P1;
delta1 =(f(p1) - f(p0))/ h1;
delta2 =(f(p2) - f(p1))/ h2;
D =(Delta2 - Delta1)/(H2 + H1);
I = I + 1;
DISP(P)
%DISP([IMAV(P)T2])
%图(T2,Real(P))
结尾
如果我> N0.
formatspec = string(“N0迭代后的方法失败,N0 =%d \ n');
流(formatSpec N0);
结尾
函数y = f (x)
y = x ^ 2 + 1;
结尾
结尾
2评论
shiv白肢野牛
shiv白肢野牛 在2021年7月25日在13:07
rining程序只显示一个根

登录评论。

答案(2)

Chunru.
Chunru. 在2021年7月25日13:40
穆勒法被认为是求实解的方法。您的代码试图找到复杂的解决方案。我想知道它是否还有其他副作用。
Muller的方法基于SECANT方法(或以类似的方式)迭代地找到解决方案。它无法保证找到功能的所有解决方案。万博 尤文图斯它只是在指定的时间间隔内找到一个解决方案(通常是真实的)。
对于您的代码,您可以通过更改以下行的符号来找到另一种解决方案
%d =(b。^ 2 - 4 * f(p2)。* d)。^(1/2);
d = - (b。^ 2 - 4 * f(p2)。* d)。^(1/2);

沃尔特罗伯森
沃尔特罗伯森 在2021年8月1日22:55
你的计划只有 尝试 找到一个根。你有一段时间循环,但是循环只是处理一个root。
您有几个选项:
  1. 当你在解一个实值系数的多项式时,所有的虚根必须以复共轭的形式出现。找到一个根之后,取它的共轭复数来检验它是否有效
  2. 重写代码以尝试几个不同的初始猜测,并继续尝试猜测,直到达到理智限制,或者您已发现您认为您应该拥有的许多独特的根源
  3. 重写您的代码以处理猜测向量,并不断迭代,直到达到完整性限制或有足够的惟一根达到容忍范围。注意,如果你最初没有尝试足够多的不同元素,那么你就不能确定足够多的元素会导致独特根。
  4. 使用完全不同的算法,这样的符号方法
3评论
沃尔特罗伯森
沃尔特罗伯森 2021年8月2日7:44
这看起来像一个家庭作业问题,所以你应该写代码。

登录评论。

标签

s manbetx 845


释放

R2021A

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!