Как преобразовать это уравнение в октавный код и построить - PullRequest
0 голосов
/ 11 мая 2019

У меня есть уравнение, которое я создал на веб-сайте Desmos

equation

Я использовал приведенный ниже код, чтобы попытаться воссоздать его в Octave.Но когда я готовлю сюжет, получается иначе.Как я могу исправить код в Octave ( без изменения основного уравнения, если возможно ), чтобы он выглядел как изображение Desmos?

x = linspace(0,1,20);
y = linspace(0,1,20);
S=[13.2];

T=1.12;
for zz=1:1:length(S)
  eq1=exp(S(1,zz)*T*log(x))+exp(S(1,zz)*T*log(y));
  hold on
  plot(x,eq1)
  zz
end

Incorrect image / equation

PS: я использую Octave 4.2.2

Ответы [ 2 ]

1 голос
/ 11 мая 2019

enter image description here

 S = 13.2;
 T = 1.12;
 f = @(x)exp(log(1-exp(S*T*log(x)))./(S*T));
 fplot(f, [0, 1])
1 голос
/ 11 мая 2019

Desmos.com строит не график (x, eq1), а (x, y) с ограничением, что x, y удовлетворяют данному уравнению.Таким образом, вы решаете для y для каждого значения x и строите пары (x, y).
Поскольку log (x), log (y) существуют, x и y> 0 (в противном случае вам придется построить график)для x <0). </p>

clear; clc;
x = linspace(0,1,150);

S = 13.2;
T = 1.12;

y = zeros(size(x));
for i = 1:length(x)
  y(i) = (1-exp(S*T*log(x(i))))^(1/S/T);
end
plot(x,y)  

Примечания:
1) Я предполагаю, что под log (x) вы подразумеваете ln (x) (логарифм с использованием основания e).
2) Iиспользовалась более плотная дискретизация со 150 точками, чтобы построенная кривая выглядела более гладкой.
3) Математически linspace(0,1,150) не должно работать, так как log (x = 0) не определено.Однако для Matlab log(0) = -inf это означает, что exp(-inf) = 0.Вот почему не возникает ошибка времени выполнения.
4) Кстати, приведенное уравнение можно упростить до x ^ (ST) + y ^ (ST) = 1 с ограничениями x, y> 0.

...