Я довольно новичок в Matlab.Я написал код на C ++ для вычисления длины основания треугольника относительно угла альфа, код работает, как и ожидалось.Теперь я хотел бы выполнить ту же задачу в Matlab и построить результаты.
C ++ code
#include <iostream>
using namespace std;
#include <tgmath.h>
int a = 135;
int b = 125;
double base;
double alphaB;
double alphaC;
double alphaA;
float difference;
#define PI 3.14159265358979323846
int main() {
for(int i = 1; i < 90; i++){
alphaA = i * PI/180;
alphaB = asin((b*sin(alphaA))/a);
alphaC = 180*PI/180 - alphaA - alphaB;
base = (a*sin(alphaC))/(sin(alphaA));
cout << base << endl;
}
return 0;
}
Сценарий Matlab
y = 0:1:90;
z = my(y);
plot(z,y)
function base = my(x)
a = 135; %Side A lenght
b = 125; %Side B lenght
f = x * pi/180;
alphaB = asin((b*sin(f))/a);
alphaC = 180*pi/180 - f - alphaB;
base = (a*sin(alphaC))/(sin(f));
disp(base);
end
, когда я запускаю скрипт Matlabвывод - только одно число, а график - пустой, поэтому я написал другой скрипт отладки, разбирающий уравнение «(a * sin (alpha)) / (sin (f))» на части
y = 1:1:5;
z = my(y);
plot(z,y)
function base = my(x)
a = 135; %Side A lenght
b = 125; %Side B lenght
f = x * pi/180;
alphaB = asin((b*sin(f))/a);
alphaC = 180*pi/180 - f - alphaB;
alphaC2 = sin(alphaC);
sf = sin(f);
aa = a*alphaC2;
test = aa/sf; % division problem
base = aa;
disp(test);
disp(aa);
disp(sf);
end
Получаетсяпроблема в том, что когда дело доходит до деления, при отображении "аа, сф" я получил все выходные, 90 чисел.Когда скрипт нажимает «test = aa / SF», у меня один выход (одно число).Как преодолеть эту проблему?