2016-12-07 19 views
-1

私は2つの方程式を持っています。最初は線、2番目は円、私は交点をプロットしたいと思います。2つの方程式の交点

Y =黄褐色(PHI)* X (XV)^ 2 + y^2 = R^2

'PHI' は角、φ= linspace(PI/30、PI/3,100)であります] 私はこのコードを試してみたが、私はプロットしたい後、私は助けを

clear all 
close all 
clc 
N=10; 
R=70; 
w=40; 
v=10; 
K=100*10^6; 
q=3/4; 



%Geometria szmítások 
phi=asin((R-w)/R); 
teta=acos((v/2)/R); 
Rx=(R+v)-(v*(phi/teta)); 

%Szögek felbontása x darabra 
f1=linspace(phi,teta,N); 
f2=linspace(phi,teta,N); 
%Külső ív felbontása 
sugar=linspace(Rx,R,N); 

%Belső ív közelítése 
x1=R*cos(f1); 
y1=R*sin(f1); 

syms valt 
egyenlet=(valt-v)^2+(valt*tan(asin((R-w)/R)))^2-R^2==0; 
S=solve(egyenlet,valt); 
k=max(S) 

%küls ív közelítése 
x2=k; 
y2=k*tan(phi); 

%%%%%Geometria kirajzolása 
plot(x1,y1) 
hold on 
plot(double(x2),double(y2)) 
hold on 
%axis([0,100,0,100]) 

for k=1:(N-1) 
    h(k)=sqrt(((((x2(k+1)+x2(k))/2)-((x1(k+1)+x1(k))/2))^2)+((((y2(k+1)+y2(k))/2)-((y1(k+1)+y1(k))/2))^2)); 
end 

%terület számítása 
for j=1:(N-1) 
    u=[x2(j);x2(j+1);x1(j+1);x1(j);x2(j)]; 
    uv=[y2(j);y2(j+1);y1(j+1);y1(j);y2(j)]; 
    A(j)=polyarea(u,uv); 
end 

%az elemi forgácsvastagság "fogásmélysége" 
whullam=A./h; 

%az elemi darabokhoz tartozó szögek 
for n=1:(N-1) 
    %xhosz(n)=((x2(n+1)+x2(n))/2)-((x1(n+1)+x1(n))/2); 
    %yhosz(n)=(((y2(n+1)+y2(n))/2)-((y1(n+1)+y1(n))/2)); 
beta(n)=atan((((y2(n+1)+y2(n))/2)-((y1(n+1)+y1(n))/2))/(((x2(n+1)+x2(n))/2)-((x1(n+1)+x1(n))/2))); 
end 

%erő meghatározása 

Fx=sum(K.*h.^q.*whullam.*cos(beta)); 
Fy=sum(K.*h.^q.*whullam.*sin(beta)); 
F=[Fx;Fy]; 

感謝「『ライン』でプロットを使用してエラーが 非数値データがサポートされていません」 がこのメッセージを持って!

+0

あなたはおそらく、プロットする前に 'double'(彼らが象徴されている)として' x2'と 'y2'をキャストする必要があります:'プロット(ダブル( x2)、double(y2)) ' – Suever

+0

私はそれを試して、今このエラーを受け取ります インデックスが行列の次元を超えています。 sym/subsref(行805)のエラー R_tilde =組み込み( 'subsref'、L_tilde、Idx); – knightom

+1

問題を引き起こしている行は何ですか。また、コードを更新して実行できるようにしてください。多くの変数宣言がありません – Suever

答えて

0

あなたとはまったく異なるコードを作成しました。しかし、それは私があなたから質問したことを実行します。あなたは円と線を持ち、両方の交差点を取得したいと考えています。私は以下のコードを提供しました。

close all;clear;clc; 

theta = linspace(0, 2*pi, 360); 
m = 1; % Slope of the line. since tan(45) = 1 for y = x; 
b = 0; % Y-interception 

% To easiest way to plot a circle, you can plot a cosine vs sine 
gt1 = cos(theta); 
gt2 = sin(theta); 

figure(1) 
plot(gt1, gt2, 'r', 'linewidth', 1.5) 
axis('equal') 
grid minor 

figure(2) 
refline(m, b); % Defining a reference line 
hold on 
plot(gt1, gt2, 'r', 'linewidth', 1.5) 
hold off 
grid minor 
axis([0 1.1 0 1.1]) % To get the top right quarter of the circle 

そして、その結果は次のようになります。

result

関連する問題