2014-10-28 2 views
0

Уравнение:Как построить нелинейное уравнение в MATLAB?

0 = x*114 - x*log3(x) - 20.28*y 

У меня есть = 10^3, 10^6, 10^9, 10^12, 10^15, ..... и выше упомянутого уравнения. Как решить (т. Е. Получить значения x для разных y) и построить это уравнение в MATLAB?

+0

Если у вас есть символическая панель инструментов, похоже, вы можете использовать 'solve' для решения уравнения для' x'. Если нет, вы можете решить его для 'y' и построить y для широкого диапазона значений' x' и определить решения путем наблюдения – Trogdor

+0

solve ('0 = x * 114 - x * (log10 (x)/log10 (3)) - 20.27 * (10^3) ') дает ошибку: не может отличить уравнение [numeric :: fsolve] И я не уверен, что будет диапазоном и интервалом для x для решения уравнения для y @Trogdor – Vijay13

+1

Чтение [docs] (http://www.mathworks.com/help/symbolic/solve.html#bue1f92-1), используйте 'sym x;' 'eqn = ....;' 'sol = solve (eqn, х); ' – Trogdor

ответ

1

Предполагая, что решение является уникальным, одним из способов решить уравнение численно:

y = 10.^(3:3:15); 
opts = optimset('TolFun', 1e-9, 'TolX', 1e-9, 'MaxIter', 1e6, 'MaxFunEvals', 1e6); 
for ii = 1 : length(y); 
    fcost = @(x)(x*114 - x*log10(x)/log10(3) - 20.28*y(ii)).^2; 
    xopt(ii) = fminsearch(fcost, y(ii), opts); 
    fprintf(1, 'y = %-5g : x = %-17.15g : f(xopt) = %-17.15g\n', ... 
    y(ii), xopt(ii), fcost(xopt(ii))); 
end 

% Plot the answers on a log-log scale. 
loglog(xopt, y, 'k*'); 

выше производит следующий вывод, таким образом, мы можем видеть, что решения являются действительными.

y = 1000 : x = 185.637624348601 : f(xopt) = 6.37079420013969e-17 
y = 1e+06 : x = 197078.905034998 : f(xopt) = 8.88178419700125e-16 
y = 1e+09 : x = 210030727.535742 : f(xopt) = 5.82076609134674e-11 
y = 1e+12 : x = 224814576366.276 : f(xopt) = 1.52587890625e-05 
y = 1e+15 : x = 241850436303022 : f(xopt) = 0     

Возможно, это будет лучший символический способ сделать это, но выше будет работать. Я только догадался в начальной точке поиска, установив его равным y. Если вам нужно больше точности в решении, посмотрите на help optimset и help fminsearch. Есть аргументы, которые вы можете передать в том, что контролируют точность решения и когда поиск прекратится.

Смежные вопросы