# Trying to answer a math problem using newton's method but having problem in the function.

2 次查看（过去 30 天）
This is the last function when newton's method is applied:
I used z=log(x) in my function to make it easier to understand:
clc
x=0.25;
y=0;
while (y-x)<10^-4
z=log10(x);
y = x-((((x ^ 2)z-(x ^ 0.5)-20)2.x ^0.5)/(-1+4.x ^ (3/2)z+2.x ^ (3/2)))
Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or other syntax error. To construct matrices, use brackets instead of parentheses.
x=y;
end

### 采纳的回答

Alan Stevens 2023-3-17
Matlab doesn't like implied multiplication
(x ^ 2)z
should be
(x ^ 2)*z
etc.
Also, in Matlab
log(x)
is ln(x)

### 更多回答（2 个）

Cris LaPierre 2023-3-17
You need to include the multiplication operator when coding your equation. Also, it is '*', not '.'. Nothing is inferred.
I think your conditional will be problematic, since the last line of your loop sets x equal to y.
x=0.25;
y=0;
while (y-x)<10^-4
z=log10(x);
y = x-((((x ^ 2)*z-(x ^ 0.5)-20)*2*x ^0.5)/(-1+4*x ^ (3/2)*z+2*x ^ (3/2)))
x=y;
end
##### 1 个评论显示 -1更早的评论隐藏 -1更早的评论
Cris LaPierre 2023-3-17

+1 about log10 vs log for natural ln.
Also wanted to point out that you have created an infinite loop. Since x=y, (y-x) is 0, which is <1e-4. Since your condition will always be true, your loop will never end.
Just changing the < to > will prevent the infinite loop, but won't fix the issue that y=x. Consider creating a third variable to prevent this.
Also consider the case that the difference of (y-x) may be positive or negative. You may want your condition to compare to the absolute value of this difference.

Voss 2023-3-17
Multiplication is * or .* but never . as in 4.x and never implicit as in (x^2)z
log10 is base-10 logarithm. log is natural logarithm.
z = log(x);
y = x-((((x^2)*z-(x^0.5)-20)*2*x^0.5)/(-1+4*x^(3/2)*z+2*x^(3/2)));

### 类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

R2022b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by