:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

รับค่าสมการ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
talk2benz
Member
Member
Posts: 12
Joined: Wed Mar 23, 2011 8:10 pm

รับค่าสมการ

#1

Post by talk2benz »

สวัสดีคุณคนควนค่ะ
มีเรื่องอยากสอบถามค่ะ คือว่า อยากจะรับสมการเพื่อไปคำนวณหาพื้นที่ใต้กราฟค่ะ เช่น สมการ f(x)=ax+b หาพื้นที่ใต้กราฟระหว่าง 0 ถึง 10 หรือ สมการ f(x)=a*e^(-bx) แล้วหาพื้นที่ใต้กราฟอ่ะคะ หาวิธีคำนวณพื้นที่ใต้กราฟได้แล้วอะคะ แต่หาวิธีรับสมการไม่ได้ค่ะ รบกวนด้วยนะคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รับค่าสมการ

#2

Post by snasui »

ช่วยส่งตัวอย่างมาให้ดูด้วยครับ ระบุปัญหาและตัวอย่างคำตอบที่ถูกต้องมาด้วย เพื่อจะหาวิธีคำนวณเปรียบเทียบครับ
talk2benz
Member
Member
Posts: 12
Joined: Wed Mar 23, 2011 8:10 pm

Re: รับค่าสมการ

#3

Post by talk2benz »

นี้เป็น code ตัวอย่างที่ใช้ในการคำนวณหาพื้นที่

Function f(x)
f = 3 * Exp(-5* x)
End Function
สิ่งที่ต้องการคือ ต้องการเปลี่ยน f(x) ได้อ่ะค่ะ จากตัวอย่างข้างบน f = 3 * Exp(-5* x) สมมุติว่าต้องการเปลี่ยนเป็น f=2x+7 เป็นต้นนะค่ะ

Function Trapezium(a, b, n)
h = (b - a) / n
i = 0
i = h * (f(a) + f(b)) / 2
For m = 2 To n
i = i + f(a + h * (m - 1)) * h
Next
Range("A1").Value = i
End Function
ส่วน part เป็นการคำนวณหาพื้นที่ค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รับค่าสมการ

#4

Post by snasui »

ผมอ่านแล้วไม่เข้าใจ คงต้องรอท่านอื่นครับ
Nakorn
Member
Member
Posts: 39
Joined: Tue Feb 22, 2011 6:09 pm
Location: กทม.

รับค่าสมการ

#5

Post by Nakorn »

น้องครับ..
ผมขอถามหน่อยครับ ว่า
โจทย์พวกนี้มีที่มาที่ไปอย่างไร?
ตัวแปรต่างๆคืออะไร?
ผมไม่แน่ใจว่า น้องเอามาจาก VBA, List, Ect.
talk2benz
Member
Member
Posts: 12
Joined: Wed Mar 23, 2011 8:10 pm

Re: รับค่าสมการ

#6

Post by talk2benz »

ขอโทษคุณคนควนด้วยนะค่ะที่ดิฉันอธิบายไม่ละเอียดนะค่ะ

นี้เป็น code VBA ที่ใช้ในการคำนวณหาพื้นที่ใต้กราฟ โดยส่วนที่ 1จะกำหนดสมการที่เราต้องการหาพื้นที่ก่อน(ตรงนี้แหละค่ะที่เป็นปัญหา)ต่อมาส่วนที่2 จะทำการหาพื้นที่ใต้กราฟจาก a ถึง b จากสมการส่วนที่ 1(ส่วนนี้ไม่มีปัญหาค่ะ)

Function f(x)
f = 3 * Exp(-5* x)
End Function
part นี้เป็นการกำหนดสมการที่ต้องการหาพื้นที่ใต้กราฟนะคะ สิ่งที่ต้องการคือ การเปลี่ยนสมการ เป็นรูปแบบใด ๆ ก็ได้นะค่ะ เช่น จากตัวอย่างข้างบน f = 3 * Exp(-5* x) สมมุติว่าต้องการเปลี่ยนเป็น f=2x+7 ก้อจะต้องเขียน code ใหม่เป็น

Function f(x)
f = 2*x+7
End Function
พอจะมีวิธีไหนไหมค่ะ ที่ไม่ต้องทำแบบนี้ทุกครั้งที่ต้องการเปลี่ยนสมการนะค่ะ

ส่วน code ข้างล่างนี้(เปลี่ยนวิธีการคิดค่ะ)เป็นการหาพื้นที่ใต้กราฟ จากการใช้ Simpson's rule คล้ายการ integrate นะค่ะ โดย a = ค่าเริ่มต้น b= ค่าสุดท้าย และ n= จาก a ถึง b ต้องการแบ่งเป็นช่องเล็กก ๆ กี่ช่องนะค่ะ
f(a) = นำค่า a ไปแทนในสมการสีเหลืองในส่วนที่1
f(b) = ในทำนองเดียวกันกับด้านบน

Function Simpson(a, b, n)
h = (b - a) / n
i = 0
For m = 1 To n - 2 Step 3
i = i + (f(a + h * (m - 1)) + 3 * f(a + h * m) + 3 * f(a + h * (m + 1)) + f(a + h * (m + 2)))
Next
Simpson = i * h * 3 / 8
End Function

ส่งตัวอย่างมาให้ดูด้วยนะค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: รับค่าสมการ

#7

Post by snasui »

ไม่ทราบว่าตรงตามที่ต้องการหรือเปล่านะครับ ผมเพิ่มให้สามารถเลือกได้ว่าเราจะใช้สมการไหน โดยผู้ใช้เป็นผู้เลือก ลองดู Code ด้านล่างครับ

Code: Select all

Dim myval As Integer
Function f(x)
Select Case myval
    Case 1
        f = 2 * x + 7
    Case 2
        f = 3 * Exp(-5 * x)
    Case 3
        'equation
    Case 4
        'equation
    'Case other
    '....
End Select
End Function

Function Simpson(a, b, n)
h = (b - a) / n
i = 0
myval = InputBox("Select variable")
For m = 1 To n - 2 Step 3
i = i + (f(a + h * (m - 1)) + 3 * f(a + h * m) + 3 * f(a + h * (m + 1)) + f(a + h * (m + 2)))
Next
Simpson = i * h * 3 / 8
End Function
talk2benz
Member
Member
Posts: 12
Joined: Wed Mar 23, 2011 8:10 pm

Re: รับค่าสมการ

#8

Post by talk2benz »

ดีใจจังค่ะที่คนควรเริ่มเข้าใจงานที่ต้องการ รบกวนอีกนิดค่ะ
อย่างในกรณี case 1 f = 2 * x + 7 ถ้าเราต้องการเปลี่ยนให้เลข 2 และเลข 7 เป็นเลขที่เราเปลี่ยนเป็นอะไรก็ได้ที่มี form เดียวกัน f=a*x+b
เช่น f = 3*x+5, f = 9*x+1 อะไรประมาณนี้นะค่ะ

ทำได้แล้วค่ะสำหรับการหาพื้้นที่ใต้กราฟ กรณีเป็นสมการเส้นตรงแบบ Simpson's Rule
Sub Test()
Dim one As String
Dim two As String
Dim Result As String
Dim a As String
Dim b As String
Dim n As String
Dim h As String

Result = 0
a = 1
b = 2
n = 100
one = InputBox("Enter the one.")
two = InputBox("Enter the two.")
MsgBox "The equation is " & one & "*x+" & two & ".", vbInformation
'Result = one * (1 + 0.1 * (1 - 1)) + two
h = (b - a) / n
i = 0
For m = 1 To n - 2 Step 3
i = i + ((one * (a + h * (m - 1)) + two) + 3 * (one * (a + h * m) + two) + 3 * (one * (a + h * (m + 1)) + two) + (one * (a + h * (m + 2))) + two)
Next m
Result = i * h * 3 / 8
MsgBox " Result " & Result & ".", vbInformation
End Sub
เพิ่งคิดออกเลยรีบตอบก่อน ถ้าคุณคนควนมีวิธีที่ดีกว่านี้ก็ยินดีนะค่ะ
talk2benz
Member
Member
Posts: 12
Joined: Wed Mar 23, 2011 8:10 pm

Re: รับค่าสมการ

#9

Post by talk2benz »

ทำได้แล้วค่ะ แต่มีข้อเสียคือ พอ enter แล้วมันจะคำนวณทันที (ประมาณว่าเลือกได้แค่ start ยังไม่ทันเลือก end and interval ก็คำนวณไปแล้ว๗
ขอบคุณคนควนอีกครั้งค่ะ ถ้าคุณคนควนมีวิธีที่ดีกว่าก็ยินดีนะค่ะ
You do not have the required permissions to view the files attached to this post.
talk2benz
Member
Member
Posts: 12
Joined: Wed Mar 23, 2011 8:10 pm

Re: รับค่าสมการ

#10

Post by talk2benz »

รบกวนท่านใดได้โหลดไป ช่วยส่งผลลัพธ์ด้วยนะคะ อยากรู้ว่ามีปัญหาอะไรตรงไหนหรือเปล่านะคะ
Post Reply