Finding an angle in a trigonometric function using 2 equations

Hello everybody,
I am trying to find beta angle in the eqns. below. I tried "vpasolve, linsolve, solve" but none of them seem to work.
syms M gamma
M=7.0;
gamma=1.3;
x=0:(0.01):2;
dy=((2.25+4*x-x.^2).^(-1/2)).*(2-x);
beta = solve(dy==2/cotd(beta)*((M.^2*sin(beta.^2)-1)/(M.^2*(gamma+cos(beta)^2)+2)), beta)
pressureratio= 1+(2*gamma)/(gamma+1)*((M*sind(beta)).^2-1)
I always end up getting a different error message. Is there a way to find beta?

2 件のコメント

Dyuman Joshi
Dyuman Joshi 2024 年 3 月 23 日
You have not provided M and gamma values.
Also, gamma is a inbuilt function in MATLAB. Best to not name variables (or scripts for that matter) using function names. You could use k instead.
"I tried "vpasolve, linsolve, solve" but none of them seem to work."
In order to use solve or vpasolve, you need to specify the variable (to solve for) as a symbolic variable. See - syms. And you need to solve for each equation separately.
Also, as this equation is clearly non-linear, linsolve will not work here.
ERCAN UMUT
ERCAN UMUT 2024 年 3 月 23 日
編集済み: ERCAN UMUT 2024 年 3 月 23 日
Oh, sorry about the insufficient information. Of course I specified gamma and used sym. I thought these equations would be enough to explain the problem I have. I updated the first message.
Yes, problem is non-linear and I wanted to solve it without any numerical scheme. Is it possible?

サインインしてコメントする。

回答 (1 件)

Dyuman Joshi
Dyuman Joshi 2024 年 3 月 23 日
As you are solving for beta, you have to define beta as a symbolic variable.
Also, I have reduced the step size in x, as the variation for smaller values of x (and thus dy) is minute.
syms beta
M=7.0;
k=1.3;
x=0:(0.1):2;
dy=((2.25+4*x-x.^2).^(-1/2)).*(2-x);
n = numel(x);
%Pre-allocate output variable
out = zeros(1,n);
%Svoling equations separately
for r = 1:n
eqn = dy(r)==2/cotd(beta)*((M.^2*sin(beta.^2)-1)/(M.^2*(k+cos(beta)^2)+2));
out(r) = vpasolve(eqn, beta);
end
out
out = 1x21
-227.2711 -226.9536 -226.9409 -226.9413 -226.9416 -226.9418 -226.9420 -226.9421 -226.9423 -226.9424 -226.9425 -226.9426 -226.9427 -226.9428 -226.9429 -226.9430 -226.9430 -226.9431 -226.9432 -226.9433 -226.9434
pressureratio = 1+(2*k)/(k+1)*((M*sind(out)).^2-1)
pressureratio = 1x21
29.7585 29.4524 29.4402 29.4406 29.4408 29.4410 29.4412 29.4414 29.4415 29.4416 29.4417 29.4418 29.4419 29.4420 29.4421 29.4422 29.4422 29.4423 29.4424 29.4425 29.4425

3 件のコメント

While you might be on the correct path, I think you are trying to solve a HIGHLY flawed question.
Look at this one line:
syms beta
M=7.0;
k=1.3;
% Note I have just renamed the left hand side here.
% This was done purely for display purposes.
dyr = 2/cotd(beta)*((M.^2*sin(beta.^2)-1)/(M.^2*(k+cos(beta)^2)+2))
dyr = 
Do you see any almost certain problems in that line?
First, we see beta used inside both the sine and cosine functions, that STRONGLY implies beta has units of radians. However, then we look at the cotangent call. Use of cotd implies beta has units of degrees. You cannot have things both ways.
Next, I STRONGLY fear that a mistanke has also been made in another place, given the sloppiness in the use of degrees versus radians. First, I see sin(beta.^2), but then I see cos(beta).^2.
I think it most likely that ONE of those terms has the square placed in the wrong position.
Given the above errors, I would suggest a correct answer is impossible until the issues with the formulas have been corrected. First, I would just go all the way with radians or degrees. Below I'll assume radians, as it makes the formulas simpler to read. Since you are solving for beta in the end, you can always correct to degrees at the very end.
As well, I'll assume it is more likely that sin(beta) was squared, and the square is not inside the sine function. The former will be far more common. So I THINK this is what you may have wanted to write:
dyr = 2/cot(beta)*((M.^2*sin(beta).^2-1)/(M.^2*(k+cos(beta)^2)+2))
dyr = 
Can you solve that expression directly using solve now? You might actually be able to do so now. Since the true form of that expression is unknown, here just a wild guess on my part, I cannot take things any further.
ERCAN UMUT
ERCAN UMUT 2024 年 3 月 23 日
You are right and I am so sorry about the sloppiness. I had spent so much time with the code I wrote them again and again, and When I had the time I wanted post it in here so I wrote them again in a hurry which was not correct form of the equation. So sorry about that.
Your assumption is kinda correct, because MATLAB was giving error in the usage of * and ^ so I had to put a dot in front of them and when I made the changes I probably did some copy paste errors. The equation can be seen in the figure below.
I would really appreciate the help. Thank you again.
ERCAN UMUT
ERCAN UMUT 2024 年 3 月 23 日
編集済み: ERCAN UMUT 2024 年 3 月 23 日
Thank you so much for the answer. I used the code after fixing the equation. It looks like it works but I will be able to check it tomorrow.
Thank you again.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

製品

リリース

R2023a

質問済み:

2024 年 3 月 23 日

編集済み:

2024 年 3 月 23 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by