ฉันมีปัญหากับการเขียนสมการ
r = 25, k= 2, R = 50:25:600, DR = 0.5:0.5:4.0
h= r*[1-cos(asin((sqrt(2*R*DR+DR^2))+r*sin(acos(r-k)/r)/r))]-k
แต่ผลที่ได้คือ: h = 1.9118e+001 +1.7545e+002i
ฉันเพิ่งเริ่มต้นด้วย Matlab ขอบคุณ
ฉันมีปัญหากับการเขียนสมการ
r = 25, k= 2, R = 50:25:600, DR = 0.5:0.5:4.0
h= r*[1-cos(asin((sqrt(2*R*DR+DR^2))+r*sin(acos(r-k)/r)/r))]-k
แต่ผลที่ได้คือ: h = 1.9118e+001 +1.7545e+002i
ฉันเพิ่งเริ่มต้นด้วย Matlab ขอบคุณ
สิ่งที่ฉันได้รับจากสิ่งที่คุณเขียนคือความจริง
??? Error using ==> mtimes
Inner matrix dimensions must agree.
ซึ่งถูกต้องเพราะคุณพยายามคูณเวกเตอร์ 2 แถวด้วยกัน คุณช่วยแสดงรหัสจริงที่คุณใช้ให้เราดูได้ไหม
อย่างไรก็ตาม สมมุติว่าต้องจัดการด้วยวิธีใดวิธีหนึ่ง สำหรับฉันดูเหมือนว่าคุณกำลังให้อาหารบางอย่างกับ asin
ที่มากกว่า 1 มาก นั่นจะทำให้คุณได้ผลลัพธ์ที่ซับซ้อน สิ่งที่คุณส่งไปให้ asin
อาจจะต้องหารด้วย R^2
หรือ DR^2
หรืออะไรทำนองนั้นหรือเปล่า? คุณมีปัญหาที่คล้ายกันในภายหลังด้วยอาร์กิวเมนต์ถึง acos
ฉันยังสงสัยด้วยว่าตัวดำเนินการ *
และ ^
และ /
บางตัวของคุณควรจะเป็นตัวดำเนินการตามองค์ประกอบ .*
, .^
, ./
acos(r-k)
บางทีคุณอาจหมายถึง acos((r-k)/r)
- person Emilio Silva; 09.04.2011
หากคุณกำลังพยายามทำตามที่คุณพูด:
ดังนั้นในสมการแรกฉันใช้ R= 50, DR = 0.5, r= 25, k=2 และฉันต้องได้ h ในสมการที่สอง ฉันใช้ R=75, DR=1.0, r=25, k=2...สำหรับสมการสุดท้าย ฉันใช้ R=600,DR=4.0,r=25,k=2
DR และ R ต้องมีความยาวเท่ากัน... ดังนั้นหาก R ไประหว่าง 50 ถึง 600 โดยเพิ่มขั้นละ 25 ดังนั้น DR ควรเปลี่ยนจาก 0.5 ถึง 12.5 โดยเพิ่มขั้น 0.5 หรือ 0.5 ถึง 4.0 โดยเพิ่มขั้นละ 0.1522...
เมื่อคุณทราบแล้ว ต้องแน่ใจว่าได้เพิ่มจุดก่อนการดำเนินการคูณเมทริกซ์ทุกครั้ง (เช่น * หรือ ^)
แก้ไข: ปรับสูตรเล็กน้อย (คร่อม) เพื่อสะท้อนถึงความสำเร็จในความคิดเห็น
เมื่อคุณบอกว่าคุณต้องการตาราง ฉันคิดว่ามันจะเป็นตาราง R
คูณ DR
(เนื่องจากคุณต้องมีเวกเตอร์ที่มีความยาวต่างกัน) ในการทำเช่นนั้น คุณต้องใช้ R
เป็นเวกเตอร์คอลัมน์ (R'
ด้านล่าง) และคูณด้วย *
(ไม่ใช่ .*
) เมื่อ R
ไม่ปรากฏในคำใดคำหนึ่งคูณด้วย ones(size(R))
(หรือใช้ repmat
) เพื่อให้ DR อยู่ในรูปร่างที่ถูกต้อง หากต้องการยกกำลัง DR
ตามองค์ประกอบ คุณต้องมี DR.^2
ดูเหมือนว่าจะมีวงเล็บเหลี่ยมวางผิดตำแหน่งสำหรับ acos
คุณต้องหารด้วย r
ก่อนรับ acos
แน่นอน จะต้องหารด้วย r
ใน asin
(ไม่ใช่ r^2
เพราะคุณได้นำ sqrt
ไปแล้ว) สุดท้าย การหารด้วย r
ซ้ำซ้อนกับที่เขียนไว้ เนื่องจากคุณคูณด้วย r
ที่ระดับเดิมก่อนหน้านั้น ยังไงก็ตามหากผมทำสิ่งต่อไปนี้:
h= r*(1-cos(asin((sqrt(2*R'*DR+ones(size(R))'*DR.^2)/r)+sin(acos((r-k)/r)))))-k
ฉันได้ตาราง R
x DR
ผลลัพธ์สำหรับ R,DR
ขนาดเล็กนั้นเป็นจริง R,DR
ที่สูงกว่านั้นซับซ้อนเนื่องจากอาร์กิวเมนต์ของ asin
ตัวแรกคือ >1 รายการแรกในตารางคือ 4.56 ตามที่คุณต้องการ