MATLAB只显示小数点后4位数字值。(MATLAB r2020a)
48视图(30天)
显示旧的评论
Natthaphat G.Mahtani
2021年8月29日
我创建了两个函数称为“牛顿”和“fjacob”使用牛顿法解非线性方程。
当我类型(颗xsolution, Xk, Jk, IFLAG IterationUsed] =牛顿(@fjacob (8; 5), 1 e-8, 15)在命令窗口中,
结果只显示小数点后4位(见附件图片),即使我将格式“长”。
%——牛顿——%
函数[xsolution, Xk,颗、Jk IFLAG, IterationUsed] =牛顿(x0, FunctionNameε,IterationMax)
x =符号(“x”[1,2])”;
IFLAG =“收敛失败”;
f [J] = FunctionName (x);
Xk = x0。';
Jk = [];
IterationUsed = 0;
xsol = x0;
iter = [0];
为我= 1:IterationMax
fsub =潜艇(f, x, xsol);
Jsub =潜艇(J, x, xsol);
颗(我)= fsub。';
Jk = (Jk; Jsub);
s =发票(Jsub) * fsub;
x_new = xsol + s;
Xk = [Xk; x_new '];
IterationUsed = IterationUsed + 1;
iter (i + 1) =我;
如果规范(年代,正)<ε
xsolution = x_new;
IFLAG =“xsolution收敛”;
打破
结束
如果我= = IterationMax;打破,结束
xsol = vpa (x_new);
结束
结束
%——fjacob %
函数f [J] = fjacob (x)
f = [x (1) ^ 2 + (2) ^ 2 - 1;5 * x (1) ^ 2 - x (2) - 2);
雅可比矩阵J = (f (x);
结束
0评论
接受的答案
明星黾
2021年8月29日
13个评论
明星黾
2021年8月29日
正如我提到的,我不能运行发布代码(因为我没有任何参数),所以我不能确定问题是什么。我只是表明一种可能的解决方案。
另外:
格式“长”
(引号)的命令形式将不会工作,然而
格式长
(没有引号)
或函数形式
格式(多头)
(引用)。
我不确定如果实际上是问题,然而。
。
Natthaphat G.Mahtani
2021年8月29日
这是我更新后的“牛顿”代码:
函数[xsolution, Xk,颗、Jk IFLAG, IterationUsed] =牛顿(x0, FunctionNameε,IterationMax)
x =符号(“x”[1,2])”;
IFLAG =“收敛失败”;
f [J] = FunctionName (x);
Xk = x0。';
IterationUsed = 0;
xsol = x0;
iter = [0];
为我= 1:IterationMax
fsub =潜艇(f, x, xsol);
Jsub =潜艇(J, x, xsol);
颗(我)= fsub。';
Jk (2 * i-1:2 *我,:)= Jsub;
s = -Jsub \ fsub;
x_new = xsol + s;
:Xk (i + 1) = x_new。”;
IterationUsed = IterationUsed + 1;
iter (i + 1) =我;
如果规范(年代,正)<ε
xsolution = x_new;
IFLAG =“xsolution收敛”;
打破
结束
如果我= = IterationMax;打破,结束
xsol = vpa (x_new);
结束
结束
Natthaphat G.Mahtani
2021年8月29日
这是“fjacob”代码
函数f [J] = fjacob (x)
f = [x (1) ^ 2 + (2) ^ 2 - 1;5 * x (1) ^ 2 - x (2) - 2);
雅可比矩阵J = (f (x);
结束
Natthaphat G.Mahtani
2021年8月29日
你不需要运行它。只要输入[xsolution, Xk,颗Jk, IFLAG, IterationUsed] =牛顿(@fjacob (8; 5), 1 e-8, 15)到命令窗口。
明星黾
2021年8月29日
我刚刚做,得到预期的结果,完全精确
[xsolution, Xk,颗、Jk IFLAG, IterationUsed] =牛顿(@fjacob (8; 5), 1 e-8, 15)
xsolution =
Xk =
颗=
Jk =
IFLAG =“xsolution收敛”
IterationUsed = 8
%——牛顿——%
函数[xsolution, Xk,颗、Jk IFLAG, IterationUsed] =牛顿(x0, FunctionNameε,IterationMax)
x =符号(“x”[1,2])”;
IFLAG =“收敛失败”;
f [J] = FunctionName (x);
Xk = x0。';
Jk = [];
IterationUsed = 0;
xsol = x0;
iter = [0];
为我= 1:IterationMax
fsub =潜艇(f, x, xsol);
Jsub =潜艇(J, x, xsol);
颗(我)= fsub。';
Jk = (Jk; Jsub);
s =发票(Jsub) * fsub;
x_new = xsol + s;
Xk = [Xk; x_new '];
IterationUsed = IterationUsed + 1;
iter (i + 1) =我;
如果规范(年代,正)<ε
xsolution = x_new;
IFLAG =“xsolution收敛”;
打破
结束
如果我= = IterationMax;打破,结束
xsol = vpa (x_new);
Xk = vpa (Xk);
结束
结束
%——fjacob %
函数f [J] = fjacob (x)
f = [x (1) ^ 2 + (2) ^ 2 - 1;5 * x (1) ^ 2 - x (2) - 2);
雅可比矩阵J = (f (x);
结束
因为我没有访问你的电脑,看看问题是,这可能是你需要解决的事情。对我的建议
数字
和
格式
从这里是最好的我能做的。
我补充说:
Xk = vpa (Xk);
但是没有其他变化。只有受影响的格式输出,什么都没有。
。
Natthaphat G.Mahtani
2021年8月30日
正如我前面所提到的,
我在命令窗口中输入数字,它返回32
格式设置为长。
我已经卸载和安装r2021a但问题仍然存在。
我该如何修复它?
明星黾
2021年8月30日
”
我该如何修复它?
”
格式长
[xsolution, Xk,颗、Jk IFLAG, IterationUsed] =牛顿(@fjacob (8; 5), 1 e-8, 15)
xsolution =
Xk =
颗=
Jk =
IFLAG =“xsolution收敛”
IterationUsed =
8
xsolution =双(xsolution)
xsolution =
2×1
0.732260195229901 - 0.681024967590665
Xk =双(Xk)
Xk =
9×2
8.000000000000000 5.000000000000000 4.056372549019608 2.509803921568627 2.110076410041546 1.321768978064554 1.188938852687405 0.825405979306453 0.820914046228528 0.692288065630997 0.737056992686961 0.681105025200372 0.732275804664860 0.681024971693328 0.732260195396269 0.681024967590665 0.732260195229901 0.681024967590665
颗=双(颗)
颗=
8×2
1.0 e + 2 * 0.880000000000000 3.130000000000000 0.217532739811611 0.777609873606305 0.051994956875876 0.189403433030045 0.010948706261045 0.042424719978418 0.001531626371104 0.006772112908455 0.000071570658219 0.000351600271434 0.000000228661675 0.000001142987945 0.000000000002436 0.000000000012182
Jk =双(Jk)
Jk =
16×2
16.000000000000000 10.000000000000000 80.000000000000000 -1.000000000000000 8.112745098039216 5.019607843137255 40.563725490196077 -1.000000000000000 4.220152820083093 2.643537956129108 21.100764100415464 -1.000000000000000 2.377877705374811 1.650811958612906 11.889388526874054 -1.000000000000000 1.641828092457056 1.384576131261993 8.209140462285278 -1.000000000000000
%——牛顿——%
函数[xsolution, Xk,颗、Jk IFLAG, IterationUsed] =牛顿(x0, FunctionNameε,IterationMax)
x =符号(“x”[1,2])”;
IFLAG =“收敛失败”;
f [J] = FunctionName (x);
Xk = x0。';
Jk = [];
IterationUsed = 0;
xsol = x0;
iter = [0];
为我= 1:IterationMax
fsub =潜艇(f, x, xsol);
Jsub =潜艇(J, x, xsol);
颗(我)= fsub。';
Jk = (Jk; Jsub);
s =发票(Jsub) * fsub;
x_new = xsol + s;
Xk = [Xk; x_new '];
IterationUsed = IterationUsed + 1;
iter (i + 1) =我;
如果规范(年代,正)<ε
xsolution = x_new;
IFLAG =“xsolution收敛”;
打破
结束
如果我= = IterationMax;打破,结束
xsol = vpa (x_new);
Xk = vpa (Xk);
Jk = vpa (Jk);
结束
结束
%——fjacob %
函数f [J] = fjacob (x)
f = [x (1) ^ 2 + (2) ^ 2 - 1;5 * x (1) ^ 2 - x (2) - 2);
雅可比矩阵J = (f (x);
结束
。
Natthaphat G.Mahtani
2021年8月30日
编辑:Natthaphat G.Mahtani
2021年8月30日
我创建了另一个代码来解决相同的问题。然而,这一次我不使用功能(无符号替换)。我跑的代码,结果我在寻找什么。这告诉我什么问题?
清晰;clc;
x0 = (8; 5);ε= 1 e-8;IterationMax = 100;
x =符号(“x”[1,2])”;
xsol = x0;
Xk = x0。';
iter = [0];
IterationUsed = 0;
为我= 1:IterationMax
f = [xsol (1) ^ 2 + xsol (2) ^ 2 - 1;5 * xsol (1) ^ 2 - xsol (2) - 2);
J = (2 * xsol (1) 2 * xsol (2); 10 * xsol (1) 1];
fsub = f;
Jsub = J;
颗(我)= fsub。';
Jk (2 * i-1:2 *我,:)= Jsub;
% Jk = (Jk; Jsub);
s = -Jsub \ fsub;
x_new = xsol + s;
:Xk (i + 1) = x_new。”;
% Xk = [Xk; x_new '];
IterationUsed = IterationUsed + 1;
iter (i + 1) =我;
如果规范(年代,正)<ε
xsolution = vpa (x_new);
IFLAG =“收敛于xsolution”
打破
结束
如果我= = IterationMax
IFLAG =不收敛的
打破,结束
xsol =双(x_new);
Xk =双(Xk);
结束
颗=双([颗;f。');
迭代= iter。”;x1 = Xk (: 1);x2 = Xk (:, 2);f1 =颗(:1);f2 =颗(:,2);
T =表(迭代,x1, x2, f1, f2)
明星黾
2021年8月30日
”
这告诉我什么问题?
”
的
潜艇
电话所以没有出现在这个版本,所以他们可能是问题的一部分。除此之外,我真的不知道,因为我在这里无法复制错误或我自己的电脑上。有必要通过前面的代码(截断误差),看看是否可以分离出错误。我不能这样做。
。
更多的答案(0)
另请参阅
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
Puoi传递selezionare联合国sito web dal seguente elenco:
来ottenere le migliori prestazioni del sito
每ottenere le migliori prestazioni del sito seleziona il sito cinese(在inglese cinese o)。我提MathWorks每gli altri paesi非园子ottimizzati每essere visitati geografica dalla图阿区域。