หรือติดข้อไหนทำไม่ได้ก็ post ได้จะพยายามช่วยครับ
Saturday, August 1, 2009
Integrate series part 6: Partial Fractions
บทนี้จะเกี่ยวกับเวลาที่ expression ที่จะ integrate เป็นเศษส่วนที่ข้างล่างมีกำลังมากกว่าเช่น
(2x^2-2x-1)/(x^3-x^2)
วิธีนั้นง่ายนิดเดียว โดยมีขั้นตอนที่เรียกว่า partial fraction decomposition
เป้าหมายคือแตกเศษส่วนให้เป็นหลายๆชิ้นเพื่อให้ integrate ได้ง่าย
step 1: factor ส่วนข้างล่างให้ได้มากที่สุด
x^3-x^2 = x^2(x-1)
step 2: แยกแต่ละ factor ออกโดยถ้าเป็นกำลังหนึ่งให้ใส่ข้างบนเป็น A,B,C ถ้าเป็น กำลังสองให้เป็น Ax+B, Cx+D
เป้าหมายคือต้องการจะหาค่าคงที่ A B C D
ในที่นี้ก็จะเป็น
(Ax+B)/x^2 + C/(x-1)
step 3: เทียบสมการตั้งต้น
(Ax+B)/x^2 + C/(x-1) = (2x^2-2x-1)/(x^3-x^2)
step 4: คูณไขว้ให้ส่วนด้านตั้งต้นหายไป
(x^3-x^2)(Ax+B)/x^2 + (x^3-x^2) C/(x-1) = (x^3-x^2)(2x^2-2x-1)/(x^3-x^2)
ตัดเศษส่วนออกก็จะเหลือ
(Ax+B)(x-1) + (x^2)C = 2x^2-2x-1
step 5: แทนค่า x เป็นอะไรก็ได้ออกมาตามจำนวนค่าคงที่ (3 ค่า เพราะมี A B และ C) แล้ว solve equations simultaneously แต่ถ้าแทนให้ solve ค่า A B C ออกมาได้เลยก็ไม่ต้องมา solve equations เช่น
ถ้าแทน x = 0 ก็จะเหลือ
-B = -1
B = 1
แทน x = 1
C = 2-2-1
C= -1
แทน x = 2 โดย แทนค่า B และ C ที่หาได้ด้วย
(2A+1)(2-1) + 4(-1) = 8-4-1
2A-3=3
A = 3
step 6: แทนค่าคงที่ทั้งหมดในสมการ
(3x+1)/x^2 + -1/(x-1)
step สุดท้าย: integrate
∫3/x + 1/x^2 - 1/(x-1) dx
3ln|x| - x^(-1) - ln|x-1| +C
ง่ายมากมายคับพี่น้อง ข้อนี้ถ้าออกสอบควรอย่างยิ่งแก่การทำก่อนเพื่อเก็บคะแนน
Labels:
calculus
Integrate series part 5: TRIGONOMETRIC INTEGRAL (cont'd)
part นี้จะเป็นเหมือนบทที่แล้วแต่เปลี่ยนจาก sin cos เป็น tan sec
หลักก็ยังคงใช้ sub u เหมือนเดิม
สุตร: (secx)^2=(tanx)^2 + 1
∫tanx = ln|secx|+C
∫secx = ln|secx+tanx| +C
∫(tanx)^m (secx)^n dx
ในกรณีที่ m เป็นเลขคี่ให้เปลี่ยน tan เป็น sec โดย tan ตัวสุดท้ายคูณ sec ไว้ sub u
ในกรณีที่ n เป็นเลขคู่ให้เปลี่ยน sec เป็น tan โดยเหลือไว้หนึ่ง sec^2 เพื่อไว้ sub u
ในกรณีที่ไม่ตรงกับ condition ข้างบนให้เปลี่ยนยังไงก็ได้ให้ใช้สูตร integrateได้
∫(tanx)^4 dx = ∫(tanx)^2(tanx)^2
ข้อนี้ไม่ตรงกับ condition ใดเลยเลยต้องเปลี่ยน tan เพื่อให้ใช้สูตร integrate ได้
=∫(tanx)^2((secx)^2-1)dx
=∫(tanx)^2(secx)^2 - (tanx)^2 dx
ก้อนหน้าตรงกับ condition แรกเพราะกำลัง sec เป็นคู่ ก้อนหลังไม่ตรงต้องเปลี่ยนอีกรอบ
=∫(tanx)^2(secx)^2 - ((secx)^2-1) dx
sub u ให้ tanx เป็น u ข้างหลัง integrate
=∫u^2 du - ∫(secx)^2 -1 dx
=(u^3)/3 - tanx + x +C
=(tanx)^3/3 - tanx + x +C
อีกตัวอย่าง
∫tanx(secx)^1.5 dx
ข้อนี้ถึงแม้ว่าจะตรงกับ condition แรกแต่ไม่สามารถเปลี่ยนได้เพราะ tan เป็นกำลังหนึ่งเท่านั้น ถ้าดูให้ดีข้อนี้ง่ายมากแค่ sub u โดย u เป็น secx^0.5 ก็ได้ละ
คำตอบ 2/3(secx)^1.5 +C
หลักก็คือว่าเหมือน sub u ทั่วไปคือต้องดูให้ออกว่าเปลี่ยนตัวไหนแล้วเหลือตัวไหนไว้จะได้เป็น du ได้เปล่า
ถ้าดูออกสูตรก็ไม่ต้องจำแล้วว
Labels:
calculus
Monday, July 27, 2009
Integrate series part 4: TRIGONOMETRIC INTEGRAL
จากบทที่สอน sub u ไปจะเห็นได้ว่าถ้าเราอยากหา ∫(sinx)^2 cosx dx เราก็ sub u ให้ sinx เป็น u ก็จะได้คำตอบออกมา
แต่ในกรณีที่ expression มันมีกำลังเยอะขึ้นเช่น ∫(sinx)^2 (cosx)^3 dx หรือ ∫(sin2x)^4(cos2x)^4 dx แค่ sub u ธรรมดาจะไม่ได้แล้วจึงมี guideline ในการ integrate trigonometric expression ให้
สูตรที่ควรรู้
(cosx)^2+(sinx)^2 = 1
(cosx)^2 = (1+cos(2x))/2
(sinx)^2 = (1-cos(2x))/2 -----2 สูตรหลังจำว่า cos เหมือนกันเลยเป็นบวก sin ไม่เหมือนเป็นลบ
วิธี
1. ดูว่าตัวไหนมีกำลังเป็นเลขคี่ให้เปลี่ยนเป็นอีกตัวโดยใช้สูตรแรกเช่น
∫(sinx)^2 (cosx)^3 dx ---- cos มีกำลังเลขคี่ดังนั้นเปลี่ยน
(cosx)^3 = (1-(sinx)^2) (cosx) ---เหลือไว้หนึ่งตัวเพื่อให้ sub u
= ∫(sinx)^2 (1-(sinx)^2) (cosx) dx
2. ทีนี้ก็สามารถ sub u ธรรมดาได้แล้ว
u = sinx, du = cosx dx
= ∫u^2(1-u^2)du
= u^3/3 - u^5/5 +C
1/3(sinx)^3 - 1/5(sinx)^5 +C
ในกรณีที่ทั้งคู่เป็นกำลังคู่ให้เปลี่ยนทั้งหมดโดยใช้ 2 สูตรล่างเช่น
∫(sin2x)^4(cos2x)^4 dx
= ∫((1-cos4x)/2)^2 ((1+cos4x)/2)^2 dx
= 1/16 ∫(1-cos4x)^2 (1+cos4x)^2 dx ---(a-b)(a+b) = a^2-b^2
= 1/16 ∫(1-(cos4x)^2)^2 dx --- กระจายออกมาได้
= 1/16 ∫1-2(cos4x)^2+(cos4x)^4 dx
= 1/16x + 1/16∫-2(cos4x)^2+(cos4x)^4 dx ---cos 2 ตัวที่ติดกำลังคู่อยู่ก็ต้องใช้สูตรเพื่อลดกำลังอีกครั้ง(และสองครั้งสำหรับกำลัง 4) จนได้ผลลัพธ์ในท้าย
ทำต่อจะได้คำตอบ = 1/16(3x/8-1/16(sin8x)+1/128(sin16x) +C
Labels:
calculus
Thursday, July 23, 2009
Integrate series part 3: BY PART
การ integrate by part เป็นวิธีที่ใช้เวลามี 2 expression มาคูณกัน ส่วนใหญ่ expression จะเป็นระหว่างประเภทต่อไปนี้
Logarithmic (ln, log)
Inverse Trigon (inverse ของ sin cos tan)
Algebraic(2x^2 เป็นต้น)
Trigonometric (sin cos tan)
Exponential (e^x, 4^2x)
1. มีสูตรที่ต้องจำ
2. ทำยาววว
3. ไม่รู้จะแทนตัวไหนในสูตร
เพราะงั้นถ้าแก้ทั้ง 3 ข้อนี้ได้ by part ก็ง่ายนิดเดียว
สูตร ∫u dv = uv - ∫v du
- ท่องครับ จำสูตรไม่ได้เท่ากับจบ
วิธีทำ
1. กำหนด u และ dv
ดูตาม list ข้างบนแล้วดูว่า
อันไหนมาก่อนให้เป็น u อันหลังเป็น dv
เช่น ∫x^2(e^2x) dx ในที่นี้ x^2 เป็น algebraic มาก่อน e^2x ซึ่งเป็น exponential
เพราะฉะนั้น x^2 เป็น u, e^2x dx เป็น dv
2. หา du และ v
du = diff(x^2) = 2x dx
v = ∫dv = ∫e^2x dx = 0.5e^2x
3. แทนทั้ง 3 ตัวลงในสูตร
(x^2)(0.5e^2x) - ∫(0.5e^2x)2x dx
ในที่นี้ integral ข้างหลังยังต้องทำ by part อีก
รอบเพราะ integrate แบบธรรมดาไม่ได้
**คำตอบสุดท้ายอย่าลืม + C
อีกหนึ่งตัวอย่าง
∫ln(x^2) dx
∫u dv = uv - ∫v du
1. u = ln(x^2) ***ln(x^2) ถือเป็นหนึ่ง expressionนะ !
dv = dx
2. du = diff(ln(x^2)) = 2x/(x^2) = 2/x dx***chain rule ลืมรึยัง
v = ∫ dx = x
3.ln(x^2)x - ∫ x(2/x) dx
= xln(x^2) - 2x +C
สูตรลัด!!
ใช้ได้กับเฉพาะกรณีที่ต้องทำ by part หลายๆรอบเช่น ข้อแรก
ตัวอย่าง ∫(x^3+2x)e^2x dx
1. วาดตารางขึ้นมา
ให้ u อยู่ฝั่งซ้าย diff แล้วเขียนบรรทัดล่างลงมาเรื่อยๆจนเป็น 0 *** ถ้าไม่เป็น 0 แสดงว่าวิธีนี้ใช้ไม่ได้
ให้ dv อยู่ฝั่งขวา integrate เรื่อยจนถึงบรรทัดที่ข้างซ้ายเป็น 0
2. วาดลูกศรเหมือนรูปข้างล่าง
3. ลูกศรแต่ละอันให้เขียนกำกับบวกลบสลับกัน
4. หัวกับท้ายลูกศร เอามาคูณกัน เครื่องหมายบนลูกศรคือ เครื่องหมายที่ใช้ทำกับตัวต่อไป
แค่นี้ integrate by part ก็ไม่ยากอีกต่อไป !!!
Labels:
calculus
Computer Programming (C language) – Guide to Loop
เนื่องจากมีหลายคนชอบถามและมักจะงงกับการทำงานของ loop กันมาก โดยเฉพาะ loop ซ้อน loop เลยเขียนบทความนี้ขึ้นมา
- Loop เป็นฟังก์ชั่นที่มีประโยชน์มากในการคำนวณที่ต้องใช้สมการซ้ำๆ เช่น while, for, do...while
- ส่วนประกอบสำคัญของ loop
1. initial
2. condition
3. increment or decrement
รูปแบบทั่วไปของ loop
for(initial;condition;increment or decrement){
statement
}
initial
while(condition){
statement
increment or decrement
}
initial
do{
statement
increment or decrement
}while(condition);
- วิธีการเขียนโปรแกรมโดยใช้ loop
1. เขียน flow chart ของโปรแกรม วิธีนี้จะทำให้เราเข้าใจได้เร็ว และผิดพลาดน้อย แต่ช้า เหมาะสำหรับผู้เริ่มต้น
2. คิดโปรแกรมที่จะเขียนแล้วเขียนในรูปของภาษาซีเลย วิธีนี้อาจจะยากสำหรับผู้เริ่มต้น และโปรแกรมที่ซับซ้อน
เมื่อเขียนโปรแกรมเสร็จแล้วควรเช็คว่าโปรแกรมเราถูกต้องหรือไม่ โดยการสมมติค่าขึ้นมาและไล่ทำตามคำสั่งที่เราเขียนทีละบรรทัดๆ การตรวจสอบแบบนี้ทำให้เราสังเกตเห็นข้อผิดพลาดของโปรแกรมได้ง่ายว่าขาดตกจุดไหน
โปรแกรมที่แนะนำในการฝึกเขียน
1. user ใส่เลข 3 ค่า จงแสดงผลค่าที่มากที่สุด
2. user ใส่เลข 3 ค่า จงแสดงผลการเรียงลำดับจากน้อยไปมาก
3. program คำนวณเลขยกกำลัง โดย user ใส่ทั้งเลขฐาน และเลขยกกำลัง เช่น
ใส่เลขฐาน 3 กับเลขยกกำลัง 4 โปรแกรมจะแสดงผล 81
4. (ยากมากๆ) program ที่สามารถบอกได้ว่าเลขจำนวนเต็มที่ user ใส่เข้าไป 1 จำนวนเป็นจำนวนเฉพาะหรือไม่ เช่น
ใส่เลข 5 แสดงผลว่า 5 เป็นจำนวนเฉพาะ // เพราะ 5 มีตัวประกอบเพียง 2 ตัว ได้แก่ 1 และ 5
ใส่เลข 12 แสดงผลว่า 12 ไม่เป็นจำนวนเฉพาะ //เพราะ 12 มีตัวประกอบ 1 2 3 4 6 12
5. (ยาก) user ใส่เลขจำนวนเต็ม ให้แสดงผลเป็นรูปปิรามิด เช่น
ใส่เลข 4 โปรแกรมจะแสดงผล
1
1 2
1 2 3
1 2 3 4
6. (ยาก) user ใส่เลขจำนวนเต็ม ให้แสดงผลเป็นรูปปิรามิด เช่น
ใส่เลข 4 โปรแกรมจะแสดงผล
1
2 1
3 2 1
4 3 2 1
แนะนำการเขียนแต่ละข้อ (บางข้ออาจทำได้หลายวิธี)
*****SPOILER ALERT***** (ลากแถบสีเพื่อดู)
1. ใช้ if + ระวังเรื่องตัวเลขซ้ำ 2 หรือ 3 ตัว เช่น ใส่ค่า 12 14 12 หรือ 6 6 6
2. ใช้ if ในการเปรียบเทียบทั้ง 3 ค่า
3. ใช้ loop function โดย condition เป็นเลขยกกำลัง
4. (ยากมากๆ) ใช้ if และ loop ซ้อน loop (มี initial เริ่มที่ 2 ถึง n-1 [n=เลขที่ user ใส่])
5. (ยาก) loop ซ้อน loop (loop นอกกำหนดว่ามีกี่บรรทัด ส่วน loop ในกำหนดว่าแต่ละบรรทัดให้แสดงผลเลขอะไรบ้าง)
สำหรับโปรแกรมในข้อ 5:
int x,i,j;
scanf("%d",&x);
for(i=1;i<=x;i++){
for(j=1;j<=i;j++)
printf("%d ",j);
printf("\n");
}
6. (ยาก) คล้ายข้อ 5 แต่เปลี่ยนตัวอะไรนิดหน่อย
สำหรับโปรแกรมในข้อ 6
int x,i,j;
scanf("%d",&x);
for(i=1;i<=x;i++){
for(j=1;j<=i;j++)
printf("%d ",j);
printf("\n");
}
*************** จบ Guide to Loop ***************
- Loop เป็นฟังก์ชั่นที่มีประโยชน์มากในการคำนวณที่ต้องใช้สมการซ้ำๆ เช่น while, for, do...while
- ส่วนประกอบสำคัญของ loop
1. initial
2. condition
3. increment or decrement
รูปแบบทั่วไปของ loop
for(initial;condition;increment or decrement){
statement
}
initial
while(condition){
statement
increment or decrement
}
initial
do{
statement
increment or decrement
}while(condition);
- วิธีการเขียนโปรแกรมโดยใช้ loop
1. เขียน flow chart ของโปรแกรม วิธีนี้จะทำให้เราเข้าใจได้เร็ว และผิดพลาดน้อย แต่ช้า เหมาะสำหรับผู้เริ่มต้น
2. คิดโปรแกรมที่จะเขียนแล้วเขียนในรูปของภาษาซีเลย วิธีนี้อาจจะยากสำหรับผู้เริ่มต้น และโปรแกรมที่ซับซ้อน
เมื่อเขียนโปรแกรมเสร็จแล้วควรเช็คว่าโปรแกรมเราถูกต้องหรือไม่ โดยการสมมติค่าขึ้นมาและไล่ทำตามคำสั่งที่เราเขียนทีละบรรทัดๆ การตรวจสอบแบบนี้ทำให้เราสังเกตเห็นข้อผิดพลาดของโปรแกรมได้ง่ายว่าขาดตกจุดไหน
โปรแกรมที่แนะนำในการฝึกเขียน
1. user ใส่เลข 3 ค่า จงแสดงผลค่าที่มากที่สุด
2. user ใส่เลข 3 ค่า จงแสดงผลการเรียงลำดับจากน้อยไปมาก
3. program คำนวณเลขยกกำลัง โดย user ใส่ทั้งเลขฐาน และเลขยกกำลัง เช่น
ใส่เลขฐาน 3 กับเลขยกกำลัง 4 โปรแกรมจะแสดงผล 81
4. (ยากมากๆ) program ที่สามารถบอกได้ว่าเลขจำนวนเต็มที่ user ใส่เข้าไป 1 จำนวนเป็นจำนวนเฉพาะหรือไม่ เช่น
ใส่เลข 5 แสดงผลว่า 5 เป็นจำนวนเฉพาะ // เพราะ 5 มีตัวประกอบเพียง 2 ตัว ได้แก่ 1 และ 5
ใส่เลข 12 แสดงผลว่า 12 ไม่เป็นจำนวนเฉพาะ //เพราะ 12 มีตัวประกอบ 1 2 3 4 6 12
5. (ยาก) user ใส่เลขจำนวนเต็ม ให้แสดงผลเป็นรูปปิรามิด เช่น
ใส่เลข 4 โปรแกรมจะแสดงผล
1
1 2
1 2 3
1 2 3 4
6. (ยาก) user ใส่เลขจำนวนเต็ม ให้แสดงผลเป็นรูปปิรามิด เช่น
ใส่เลข 4 โปรแกรมจะแสดงผล
1
2 1
3 2 1
4 3 2 1
แนะนำการเขียนแต่ละข้อ (บางข้ออาจทำได้หลายวิธี)
*****SPOILER ALERT***** (ลากแถบสีเพื่อดู)
1. ใช้ if + ระวังเรื่องตัวเลขซ้ำ 2 หรือ 3 ตัว เช่น ใส่ค่า 12 14 12 หรือ 6 6 6
2. ใช้ if ในการเปรียบเทียบทั้ง 3 ค่า
3. ใช้ loop function โดย condition เป็นเลขยกกำลัง
4. (ยากมากๆ) ใช้ if และ loop ซ้อน loop (มี initial เริ่มที่ 2 ถึง n-1 [n=เลขที่ user ใส่])
5. (ยาก) loop ซ้อน loop (loop นอกกำหนดว่ามีกี่บรรทัด ส่วน loop ในกำหนดว่าแต่ละบรรทัดให้แสดงผลเลขอะไรบ้าง)
สำหรับโปรแกรมในข้อ 5:
int x,i,j;
scanf("%d",&x);
for(i=1;i<=x;i++){
for(j=1;j<=i;j++)
printf("%d ",j);
printf("\n");
}
6. (ยาก) คล้ายข้อ 5 แต่เปลี่ยนตัวอะไรนิดหน่อย
สำหรับโปรแกรมในข้อ 6
int x,i,j;
scanf("%d",&x);
for(i=1;i<=x;i++){
for(j=1;j<=i;j++)
printf("%d ",j);
printf("\n");
}
*************** จบ Guide to Loop ***************
Labels:
c language
Integrate series part 2: SUB U
ทำไมต้อง sub u ? sub u มีไว้เพื่อเวลา expression ที่จะ integrate ไม่ตรงกับสูตร basic เช่น
sin(2x) , sqrt(x+5) , (ln x)/x เป็นต้น
sub u ทำยังไง
1. ∫2xsin(x^2) dx
-ให้ u = x^2
-du (diff u)= 2x dx (diff x^2)
-dx=du/2x
2. แทน x และ dx ด้วย u และ du ได้ ∫2xsin(u) (du/2x) = ∫sin(u) du
3. integrate ธรรมดาตามสูตรจะได้ -cos(u)+C
4. แทน u กลับด้วย x ได้ -cos(x^2)+C
sub ตัวไหนเป็น u ?
1. หาตัวที่ dif ออกมาแล้วอยู่ในสูตรเช่น
sqrt(x+5) dx
(1/x)ln(x) dx
cos(x)sin(x) dx
x(x^2-1)^3 dx
สังเกตว่าถ้า diff ตัวสีแดงจะได้ตัวสีฟ้าและถ้าแทนแดงด้วย u ฟ้าจะเป็น du หมด
2. ในกรณีที่ diff ออกมาแล้วไม่ตรงเช่น x(x^2-1)^3 dx เพราะ dif (x^2-1) ได้ 2x ไม่ใช่ x
เราสามารถคูณทำงี้ได้
0.5∫2x(x^2-1)^3 dx
คือคูณเลขที่ต้องการเข้าไปแล้วหารออกข้างหน้าเครื่องหมาย ∫
3. อย่าลืม! ว่า dif บางทีต้องใช้ chain rule ด้วยเช่น
∫cos(2x)sin(2x) dx
dif sin(2x) ได้ 2cos(2x) เพราะงั้นต้องทำตาม ข้อ 2 ด้วย
u=sin(2x)
du = 2cos(2x) dx
0.5∫u du
0.25u^2 = 0.25(sin2x)^2 +C
*** สูตรลัด
สังเกตได้ว่าหากในวงเล็บของ sin cos และ polynomial function เช่น (..x+...)^(..) เป็น x กำลังหนึ่งเช่น
sin(0.25x), cos(3x), (2x+1)^0.5 สามารถ integrate เหมือนธรรมดาแล้วหารผลลัพด้วยเลข coefficient ของ x
∫sin(0.25x) dx ได้ -1/0.25 (cos(0.25x))+C
∫cos(3x) dx ได้ 1/3 (sin(3x))+C
∫(2x+1)^0.5 dx ได้ 1/2 (2/3)(2x+1)^(3/2) +C
∫e^(4x) dx ได้ 1/4 e^(4x) +C
ย้ำว่า x เป็นกำลังหนึ่งถึงทำวิธีนี้ได้เท่านั้น
ถูกชัว รับประกันความถูกโดย พี่แชมป์ A Calculus1 555+
Labels:
calculus
Wednesday, July 22, 2009
Computer Programming (C language) – Basic
การทำงานของโปรแกรมที่ต้องเข้าใจ
- โปรแกรมจะทำงานจากบรรทัดบนไปล่างทีละบรรทัด
- คำสั่งทั่วไปจะต้องจบด้วยเครื่องหมาย ; ทุกครั้ง เช่น
int a,b,c; scanf(“%d %d”,&a,&b); //ถึงแม้จะอยู่บรรทัดเดียวแต่เนื่องจากมี ; สองครั้ง จึงถือว่ามี 2 คำสั่ง
- คำสั่ง scanf อย่าลืม & เมื่อประกาศตัวแปร
- คำสั่งคำนวณที่เป็นสมการ โปรแกรมจะทำงานโดยคิดจากขวามือเครื่องหมาย = ส่งคำตอบที่ได้ไปให้ตัวแปรหน้าเครื่องหมาย = เช่น
a=5; // a=5
a=a*a; // a=5*5 ดังนั้นตอนนี้ a=25
- คำสั่งคำนวณประเภท increment, decrement
i++; // เหมือนกับเขียนคำสั่ง i=i+1;
i--; // เหมือนกับเขียนคำสั่ง i=i-1;
เช่น
b=5; //b=5
b++; //b=6
- คำสั่งประเภทฟังก์ชั่นปรกติ เช่น if, switch หรือประเภท loop เช่น while, for, do…while จะต้องมีเครื่องหมาย { } เปิดและปิดถ้าคำสั่งในฟังก์ชั่นมีตั้งแต่ 2 คำสั่งขึ้นไป แต่ถ้าหลังคำสั่งประเภทฟังก์ชั่นมีคำสั่งเดียว ไม่ต้องมี { } ก็ได้ เช่น
- โปรแกรมจะทำงานจากบรรทัดบนไปล่างทีละบรรทัด
- คำสั่งทั่วไปจะต้องจบด้วยเครื่องหมาย ; ทุกครั้ง เช่น
int a,b,c; scanf(“%d %d”,&a,&b); //ถึงแม้จะอยู่บรรทัดเดียวแต่เนื่องจากมี ; สองครั้ง จึงถือว่ามี 2 คำสั่ง
- คำสั่ง scanf อย่าลืม & เมื่อประกาศตัวแปร
- คำสั่งคำนวณที่เป็นสมการ โปรแกรมจะทำงานโดยคิดจากขวามือเครื่องหมาย = ส่งคำตอบที่ได้ไปให้ตัวแปรหน้าเครื่องหมาย = เช่น
a=5; // a=5
a=a*a; // a=5*5 ดังนั้นตอนนี้ a=25
- คำสั่งคำนวณประเภท increment, decrement
i++; // เหมือนกับเขียนคำสั่ง i=i+1;
i--; // เหมือนกับเขียนคำสั่ง i=i-1;
เช่น
b=5; //b=5
b++; //b=6
- คำสั่งประเภทฟังก์ชั่นปรกติ เช่น if, switch หรือประเภท loop เช่น while, for, do…while จะต้องมีเครื่องหมาย { } เปิดและปิดถ้าคำสั่งในฟังก์ชั่นมีตั้งแต่ 2 คำสั่งขึ้นไป แต่ถ้าหลังคำสั่งประเภทฟังก์ชั่นมีคำสั่งเดียว ไม่ต้องมี { } ก็ได้ เช่น
if(a==5){
printf(“555”);//จะแสดงผลถ้า a=5
printf(“program ends”);//จะแสดงผลเมื่อ a=5 เช่นกัน
}
ซึ่งจะต่างจาก
- ฟังก์ชั่น loop คือ คำสั่งที่สั่งให้โปรแกรมทำงานซ้ำเรื่อยๆ จนกว่าจะไม่เข้าเงื่อนไขที่กำหนดไว้ (เป็นคำสั่งที่ทำให้โปรแกรมกลับไปทำงานตามคำสั่งที่อยู่ข้างบนซ้ำได้)
- ฟังก์ชั่น for loop กับ while loop ต่างกันอย่างไร >> ต่างกันที่การเขียน แต่สามารถเขียนให้ได้ผลลัพธ์เหมือนกันได้ เช่น โปรแกรมคำนวณเลข 1*2*3*…*n where n=integer number that user inputs
int a,i,ans;
scanf(“%d”,&a); // สมมติใส่ 4
ans=1;
i=1;//initial i=1
while(i<=a){ // 1<=4 จริง||2<=4 จริง ทำต่อ||3<=4 จริง ทำต่อ||4<=4 จริง ทำต่อ||5<=4 ไม่จริง จบ loop ทันที
ans=ans*i; // ans=1*1=1||ans=1*2=2||ans=2*3=6||ans=6*4=24
i++;// i=2||i=3||i=4||i=5
}
printf(“the result is %d\n”,ans);// ดังนั้นมันจะแสดงผลว่า the result is 24
ถ้าเปรียบเทียบกับ for >>>
int a,i,ans;
scanf(“%d”,&a);
ans=1;
for(i=1;i<=a;i++){ // for(initial;condition;increment or decrement){ statement }
ans=ans*i;
}
printf(“the result is %d\n”,ans);
จะเห็นว่าจะแสดงผลเหมือนกัน ต่างกันเพียงการเขียนที่ดูแล้วใช้ for จะสั้นกว่า
- do…while คือฟังก์ชั่นที่โปรแกรมจะทำตามคำสั่งใน do แน่นอนใน loop แรก (ทำแน่ 1 ครั้ง) ไม่ว่า condition ใน while จะเป็นอย่างไร วิธีการเขียน>>
do{
statement
}while(condition);
ตัวอย่างเช่น
int a,i,ans;
scanf(“%d”,&a); // สมมติใส่ 4
ans=1;
i=1;
do{
ans=ans*i; // ans=1*1=1||ans=1*2=2||ans=2*3=6||ans=6*4=24
i++; // i=2||i=3||i=4||i=5
}while(i<=a); // 2<=4 จริง ทำต่อ||3<=4 จริง ทำต่อ||4<=4 จริง ทำต่อ||5<=4 ไม่จริง จบ loop ทันที
printf(“the result is %d\n”,ans); // ดังนั้นมันจะแสดงผลว่า the result is 24
***** จบ Basic to Computer Programming *****
printf(“555”);//จะแสดงผลถ้า a=5
printf(“program ends”);//จะแสดงผลเมื่อ a=5 เช่นกัน
}
ซึ่งจะต่างจาก
if(a==5)
printf(“555”);//จะแสดงผลเมื่อ a=5
printf(“program ends”);//แสดงผลแน่นอน
printf(“555”);//จะแสดงผลเมื่อ a=5
printf(“program ends”);//แสดงผลแน่นอน
- ฟังก์ชั่น loop คือ คำสั่งที่สั่งให้โปรแกรมทำงานซ้ำเรื่อยๆ จนกว่าจะไม่เข้าเงื่อนไขที่กำหนดไว้ (เป็นคำสั่งที่ทำให้โปรแกรมกลับไปทำงานตามคำสั่งที่อยู่ข้างบนซ้ำได้)
- ฟังก์ชั่น for loop กับ while loop ต่างกันอย่างไร >> ต่างกันที่การเขียน แต่สามารถเขียนให้ได้ผลลัพธ์เหมือนกันได้ เช่น โปรแกรมคำนวณเลข 1*2*3*…*n where n=integer number that user inputs
int a,i,ans;
scanf(“%d”,&a); // สมมติใส่ 4
ans=1;
i=1;//initial i=1
while(i<=a){ // 1<=4 จริง||2<=4 จริง ทำต่อ||3<=4 จริง ทำต่อ||4<=4 จริง ทำต่อ||5<=4 ไม่จริง จบ loop ทันที
ans=ans*i; // ans=1*1=1||ans=1*2=2||ans=2*3=6||ans=6*4=24
i++;// i=2||i=3||i=4||i=5
}
printf(“the result is %d\n”,ans);// ดังนั้นมันจะแสดงผลว่า the result is 24
ถ้าเปรียบเทียบกับ for >>>
int a,i,ans;
scanf(“%d”,&a);
ans=1;
for(i=1;i<=a;i++){ // for(initial;condition;increment or decrement){ statement }
ans=ans*i;
}
printf(“the result is %d\n”,ans);
จะเห็นว่าจะแสดงผลเหมือนกัน ต่างกันเพียงการเขียนที่ดูแล้วใช้ for จะสั้นกว่า
- do…while คือฟังก์ชั่นที่โปรแกรมจะทำตามคำสั่งใน do แน่นอนใน loop แรก (ทำแน่ 1 ครั้ง) ไม่ว่า condition ใน while จะเป็นอย่างไร วิธีการเขียน>>
do{
statement
}while(condition);
ตัวอย่างเช่น
int a,i,ans;
scanf(“%d”,&a); // สมมติใส่ 4
ans=1;
i=1;
do{
ans=ans*i; // ans=1*1=1||ans=1*2=2||ans=2*3=6||ans=6*4=24
i++; // i=2||i=3||i=4||i=5
}while(i<=a); // 2<=4 จริง ทำต่อ||3<=4 จริง ทำต่อ||4<=4 จริง ทำต่อ||5<=4 ไม่จริง จบ loop ทันที
printf(“the result is %d\n”,ans); // ดังนั้นมันจะแสดงผลว่า the result is 24
***** จบ Basic to Computer Programming *****
Labels:
c language
Tuesday, July 21, 2009
Integrate series part 1
การ integrate นั้นมีเปน 10 วิธี เลือกใช้ให้ถูกวิธีก็จะได้คำตอบอย่างง่ายดาย
การ integrate ประกอบด้วย
เครื่องหมาย ∫ - บอกถึงการ integrate
expression ข้างใน และ - integrate อะไร
dx - integrate ตัวแปรอะไร เช่น dx ก้ตัวแปร x, dy ก้ตัวแปร y
การ integrate โดยไม่มีขอบเขต(ไม่มีเลขอยู่บนและล่างของเครื่องหมาย∫ )จะต้องมี +C ในคำตอบเสมอ ค่า C คือค่าคงที่อะไรก็ได้
โดย basic แล้วต่อไปนี้คือ สูตรเบื้องต้น
1. ∫ เลขค่าคงที่ เช่น ∫ 3 dx = 3x+C ∫ dy = y+C
2. ∫ โดยมีตัวแประ เช่น ∫ x^2 dx = (x^2+1)/3 = (1/3)x^3 +C
ให้บวกตัวยกกำลังด้วย 1 แล้วนำคำตอบมาหารข้างหน้า
∫x^0.5 dx = (x^0.5+1)/1.5 = (1/1.5)x^1.5 +C
เลขยกกำลังสามารถเป็นลบได้ด้วย (ยกเว้นเลข -1)
3. ∫ sin x dx = -cos x+C
4. ∫ cos x dx = sin x +C
5. ∫ sec^2(x) dx = tan x +C
6. ∫ sec(x)tan(x) dx = sec x +C
7. ∫ 1/x dx = ln x +C ***1/x = x^(-1)
8. ∫ e^x dx = e^x +C
สังเกตว่าถ้า diff คำตอบกลับจะได้โจทย์เริ่มต้น
8 ข้อข้างบนเป็นสูตรพื้นฐานที่จะต้องนำไปใช้ต่อ
***ถ้าโจทย์ไม่ตรงกับสูตรก็จะใช้ไม่ได้เช่น ∫ sin(2x) dx หรือ ∫ (x^2)sin(x) dx แทนที่จะเป็น ∫ sin x dx ก็ต้องใช้หลัก advance อื่นซึ่งจะสอนในบทต่อไป
***แต่ถ้าเป็น expression ที่มาบวกกันเช่น ∫ sin x + x^2 + 1/x dx ก้สามารถ integrate แยกกันแล้วมาบวกได้ตามปกติ
∫ sin x + x^2 + 1/x dx
= -cos x +(1/3)x^3 + ln x +C
Labels:
calculus
First post for the tutors
Welcome to dek inw's tutor. I have my vision for this futuristic blog-- that is the freshmen/sophomore will no longer go to Apogee/Giggcy but will come home/dorm and view this blog and well, help them to learn stuff themselves.
ก็จิงๆใครอยาก post ติววิชาไหนก็ได้นะแต่ให้มัน specific ในแต่ละ post ก็ดีเช่น
title: calculus-integration ก็ให้ใส่ลงไปด้วยว่า integrate แบบไหนเช่น sub u, by part ไม่งั้นใน post นั้นก็ต้องรวม integrate ทุกแบบ
อยากให้แต่ละ post เปน guideline มากกว่าเฉลยข้อสอบ เอาโจทย์มาเฉลยได้แต่ทำเป็นแบบ step ดีกว่าว่าโจทย์ประเภทนี้ step1 ทำงี้ step 2 ทำงี้ ...
ส่วนสำหรับวิชา concept เช่น physics ก็แบบว่ารวมสูตรสำคัญที่ต้องใช้จิงๆ มาอธิบาย
resource ที่ดีมากๆสำหรับติวเตอร์คือ www.wolframalpha.com
มันมีทุกอย่างจิงๆ
สมมุตอยากโชว์ integrate x^3+sinx ก็ search expression นั้นเข้าไปแล้วเลือก show step ใน indefinite integral มันก็จาโชว์วิธีทำให้
เออ post เปนภาษาไทยนะ
ก็สุดท้ายขอให้สนุกละกัน
remember I can never do this alone. I need you guys' help !
Labels:
TUTOR READ THIS FIRST
Subscribe to:
Posts (Atom)