私はmatlabで方程式を解きたいです。
100+a/2=173*cos(b)
sqrt(3)*a/2=173*sin(b)
コードは次のようになります。
[a,b]=solve('100+a/2=173*cos(b)','sqrt(3)*a/2=173*sin(b)','a','b')
ただし、100 を変数として取りたい場合は、次のようにします。
for k=1:100
[a,b]=solve('k+a/2=173*cos(b)','sqrt(3)*a/2=173*sin(b)','a','b')
end
エラーになるのですが、どうすればいいですか?
degree=140/1000000;
p=42164000;
a=6378136.5;
b=6356751.8;
x_1=0;
y_1=p;
z_1=0;
for i=451:550
for j=451:550
alpha=(1145-i)*degree;
beta=(1145-j)*degree;
x_2=p/cos(alpha)*tan(beta);
y_2=0;
z_2=p*tan(alpha);
syms x y z x_1 x_2 y_1 y_2 z_1 z_2 a b
eq = [(x-x_1)*(y2-y_1)-(x_2-x_1)*(y-y_1),(x-x_1)*(z_2-z_1)-(x_2-x_1)*(z-z_1), b^2*(x^2+y^2)+a^2*(y^2)-a^2*b^2 ];
sol = solve(eq(1),x,eq(2),y, eq(3),z);
sol.x
sol.y
sol.z
end
end
式の値を取得しましたが、x、y、z の数値を取得するにはどうすればよいですか?
[['x(1)=';'x(2)='],num2str(double(sol.x))]
動作しない、ショー??? ==> mupadmex の使用エラー MuPAD コマンドのエラー: DOUBLE は入力式を double 配列に変換できません。
入力式にシンボリック変数が含まれている場合は、代わりに VPA 関数を使用してください。
エラー ==> sym.sym>sym.double at 927 Xstr = mupadmex('mllib::double', Ss, 0);
エラー ==> f2 at 38 [['x(1)=';'x(2)='],num2str(double(sol.x))]