В настоящее время я работаю над домашним заданием, которое просит меня оценить значение с использованием метода ложной позиции. Я чувствую, что у меня почти все есть, но меня подвешивают на моем заявлении if. Поэтому я должен определить положительный реальный корень функции: ln (x^2) = 0,7, используя метод ложных постов с 3 итерациями, xl = 0,5 и xu = 2. Я приложил правильные ответы внизу, чтобы помочь мне лучше объяснить мои вопросы. У меня есть три конкретных вопроса, в которых мне нужна помощь.Matlab False-Position Method
1). Во-первых, в третьей итерации для значения Xl мой код по-прежнему рассматривает его как 1.625 вместо правильного 1.25. Я не понимаю, почему он делает это, поскольку это должно быть предотвращено. Он правильно меняет это значение на второй итерации, а не на третье.
2). Мне также нужна помощь в поиске ошибки. Эта часть я довольно застрял. Я знаю уравнение, чтобы найти ошибку, но мой вопрос заключается в том, как отслеживать, что такое xr_new и xr_old. Я не уверен, хочу ли я добавить somecind сравнения, чтобы увидеть, изменилось ли оно до вычисления или чего.
3). Я также хотел бы вывести мою ценность и построить таблицу, как и предоставленное решение. Мой предыдущий опыт работы с таблицей жестко кодирует значения непосредственно в ней, и мне сложно создавать таблицу, когда значения найдены. Я знаю, что мне нужна таблица в цикле for, и я создаю ее по одной ячейке за раз, но просто не имею опыта в этом поле, чтобы начать.
Надеюсь, это не слишком помогает попросить, чтобы у меня были передовые навыки работы с матала, и это один из самых сложных вопросов, которые мне пришлось выполнить. Любая помощь вообще очень ценится.
clc; clear;
f= @(x) log(x.^2) - 0.7;
x = -3: .005 : 3;
figure(1)
grid on
hold on
plot (x,f(x))
% bisection method with 3 iterations
xl = 0.5
xu = 2
%Table = table(iteration, xl , f(xl), xu, f(xu), xr, f(xr), Ea)
for i = 1:1:3
F_xl = f(xl)
F_xu = f(xu)
xr = .5*(xl+xu)
F_xr = f(xr)
if ((F_xu*F_xl) < 0)
xl = xr
else
xu = xr
end
%Error = abs(xr_new-xr_old)/xr_new
end
Я понятия не имею, почему итерации линия = (1: 3) '; не входит в код. Добавьте эту строку при попытке этого кода. – nahomyaja
Большое вам спасибо! Я должен был подумать, чтобы начать xl, xu и xr в виде трех пустых пространств. – jake
Добро пожаловать. Надеюсь, вы поняли, что делается в коде. Я не много объяснял, так как вы сказали, что являетесь опытным программистом MATLAB. – nahomyaja