วันพุธที่ 25 มีนาคม พ.ศ. 2563

หลักสำคัญในเทฤษฎีความยืดหยุ่น ติวเตอร์เรียล 18

Tutorial 18 – Principal Stresses In the theory of elasticity,

the stress components at a point are represented as a matrix consisting of 3 normal stresses on the diagonal and three shear stresses off the diagonal. The condition of equilibrium requires that the matrix be symmetric. A typical stress matrix is written as follows: []= [ x xy xz xy  y yz xz yz z ] The principal planes are defined as those planes on which only normal stresses act and are free of shear stresses. They also represent the maximum values of the normal stress at that point. The condition for a plane to be a principal plane and the stresses on it to be the principal stress is expressed in the form of a homogeneous equation: [ x− xy xz xy y− yz xz yz z−]{ l x l y lz} ={ 0 0 0} where  is the principal stress and l x , l y and l z are the direction cosines of the outward normal to the principal plane. It is required to determine the principal stresses and the direction cosines of the principal planes. The characteristic equation of the above set of homogeneous equations is  3 −I1 2 I 2−I 3=0 . Being a cubic equation, it has three roots and thus there are three values of principal stresses. Corresponding to each principal stress is one principal plane represented by the direction cosines of its outward normal. In mathematics, this is an eigenvalue problem, the eigenvalues are the principal stresses and eigenvectors are the direction cosines of the outward normal to the principal planes. The principal stresses and principal planes can thus be obtained with the spec function in Scilab. As an example, let the stress matrix be as follows: []= [ 3 2.5 4 2.5 1 0 4 0 2] Then the solution can be obtained as follows: -->s = [3, 2.5, 4; 2.5, 1, 0; 4, 0, 2]; -->[x, p] = spec(s) p = -2.4316605 0. 0. 0. 1.2968769 0. 0. 0. 7.1347836 x = 0.6529665 -0.0979278 0.7510293 -0.4756928 -0.8246499 0.3060537 -0.5893651 0.5571020 0.5850523 Tutorial 18 – Principal Stresses | 51 The eigenvalues are on the diagonal of the matrix p. The columns of eigenvector x correspond to the eigenvalue on the diagonal. Thus the first column of x corresponds to the principal stress value -2.4316605. The eigenvalues are arranged in increasing order whereas the principal stresses are, by convention, arranged in decreasing order. Thus the first principal stress is 1=7.1347836 , second principal stress is 2=1.2968769 and the third principal stress is 1=−2.4316605 . The first principal plane is defined by the direction cosines l x=0.7510293 , l y=0.3060537 and l z=5850523 . The solution can also be obtained by an alternative way, using polynomials. In this approach the eigenvalues can be be obtained easily but obtaining the eigenvectors may involve a few additional manual calculations. But it has the advantage that we can obtain the characteristic equation, which is not available in the first solution. Here, let us first define a seed for a polynomial as p = poly(0, 'p') and use it to represent the homogeneous equations as follows: -->p = poly(0, 'p'); -->ss = s – eye(s) * p; -->ch = det(ss) ch = 2 3 -22.5 + 11.25p + p - p -->roots(ch) ans = 1.2968769 -2.4316605 7.1347836 To obtain the eigenvector corresponding to a chosen eigenvalue, we must substitute the value of the eigenvalue into the homogeneous equations, and choose any two of the three equations and solve them for two of the direction cosines in terms of the third. [ y−i  yz yz z−i ]{ l y l z} =l x{ −xy −xz} The above equations can be solved to obtain l y and l z in terms of l x . Let l y=k y l x and l z=k z l x . Then using the fact that the sum of the square of the direction cosines is unity, all the three direction cosines can be obtained. lx 2 l y 2 l z 2 =1 or 1k y 2 kz 2 l z 2 =1 Rearranging and solving we get: l x= 1 1k y 2 kz 2 , l y=k y 1 1k y 2 k z 2 and l z=kz 1 1k y 2 kz 2 We could write our own functions to do these calculations, taking care to sort the eigenvalues before proceeding with the eigenvector calculations.

ไซแลบ ติวเตอเรียล 6 ทำงานกับโพลิโนเมียล


ไซแลบติวเตอเรียล 6 ทำงานกับโพลีโนเมียล



ไซแลบสนับสนุนสำหรับการดำเนินการกับโพลีโนเมียล เราสามารถสร้างโพลีโนเมียล หารากของโพลีโนเมียลดำเนินการเช่น การบวก การลบ การคูณ และการหาร การลดรูปให้ง่าย และอื่นๆ   โพลีโนเมียลหนึ่งๆ สามารถสร้างได้ในสองลักษณะ ทางหนึ่งโดยการกำหนดโพลีโนเมียลในเทอมของรากของโพลีโนเมียล และในอีกทางหนึ่งกำหนดในเทอมของสัมประสิทธิ์ของโพลีโนเมียล  ขณะที่สร้างโพลีโนเมียลขึ้นมานั้น  จะต้องเลือกชื่อสำหรับตัวแปรสัญลักษณ์ และระบุว่าโพลีโนเมียลที่จะสร้างในเทอมของรากหรือในเทอมของสัมประสิทธิ์  ชื่อตัวแปรสัญลักษณ์สามารถที่จะมีความยาวใดๆ แต่เฉพาะ 4 ตัวอักขระแรกที่มีนัยสำคัญ ส่วนตัวอักขณะอื่นไม่นำมาคิด


-->p1 = poly([3 2], 'x')  หรือ
-->p1 = poly([3 2], 'x', 'r')

 การสร้างโพลีโนเมียล p1 มีราก 3 และ 2  โดยมีชื่อตัวแปรสัญลักษณ์s x.  โพลีโนเมียลที่ได้คือ
             p1 = 6 - 5x + x2

-->p2 = poly([6 -5  1], 'x', 'c')


การสร้างโพลีโนเมียล p2 มีสัมประสิทธิ์ 65 x +x2 ,  คิดให้ชื่อตัวแปรสัญลักษณ์เป็น โพลีโนเมียลที่ได้คือ
             p2 = 65 x + x2 .

 พารามีเตอร์ที่ 3 ที่ให้ไว้อาจเป็น  'r' หรือราก ( 'roots')  ซึ่งเป็นกรณีที่พารามีเตอร์แรก คือเว็คเตอร์ที่มีรากของโพลีโนเมียล   หรืออาจจะเป็น 'c' หรือสัมประสิทธ์ ('coeff')  อันเป็นกรณีซึ่งพารามีเตอร์แรกคือเว็คเตอร์ที่มีสัมประสิทธิ์ของโพลีโนเมียล  เริ่มจากตัวคงที่เป็นเหมือนองค์ประกอบแรก  และกำลังของตัวแปรสัญลักษณ์เพิ่มขึ้นทีละ ของแต่ละองค์ประกอบในเว็คเตอร์   ดังนั้นโพลีโนเมียลที่มี 2 ราก คือโพลีโนเมียลลำดับสอง  เมื่อองค์ประกอบที่ 3 ยังไม่ได้จัดให้ จะให้ค่าปริยาย 'r' หรือ 'roots'. 
 
เป็นไปได้ที่จะดำเนินการ จำนวนการดำเนินการต่างต่อโพลีโนเมียล เช่นการหากราก การบวก การลบ การคูณ การหาร การทำให้ง่าย 


-->p1 = poly([6 -5 1], 'x')
p1 =
6 5x + x2


-->roots(p1)
ans =
2.
3.


             การสร้างโพลีโนเมียล p1 ที่มีสัมประสิทธิ์  6, -5  และ 1, ให้ชื่อตัวแปรสัญลักษณ์เป็น x.
โพลีโนเมียลที่ได้คือ
p1 = 65x+x2 .   การหาค่าคารากโดยการใช้ฟังก์ชัน roots(p1).

-->p3 = p1 + p2
p3 =
12 10x + 2x2

เมื่อบวกสองโพลีดนเมียล p1 และ p2 เข้าด้ยกัน และเก็บผลลัพธ์ในโพลีโนเมียล p3. การลบสามารถทำได้ในทำนองเดียวกัน



-->p4 = p1 * p2
p4 =
6 60x  37x210x3 + x4



 ผลคูณของโพลีโนเมียลก็ยังคงเป็นโพลีโนเมียล และคำนวณโดยให้เครื่องหมายกระทำคูณ (*).

-->p5 = p1 / p2
p5 =
1
-
1
-->typeof(p5)
ans =
rational



             การหารโพลีโนเมียลด้วยโพลีโนเมียลอื่น ให้ผลไม่ใช่เป็นโพลีโนเมียล แต่เป็นสัดส่วน (rational)

-->p1 == p2
ans
=
T



สามารถทำงานด้วยการดำเนินการบูลีนกับโพลีโนเมียล


-->coeff(p1)
ans
=
6
. -5. -1.


การหาสัมประสิทธิ์ของโพลีโนเมียลp1.
-->derivat(p1)

ans =
-5 + 2x


การหาอนุพันธ์ของโพลีโนเมียล p1.

-->c = companion(p1)
c =
5    -6
1     0


เมทริกซ์ใกล้เคียง (Companion matrix) ของโพลีโนเมียล คือเมทริกซ์ซึ่งคุณลักษณะสมการคือโพลีดนเมียลที่กำหนด
-->roots(p1)'
ans =
2. 3.
-->spec(c)
ans =
3.
2.

รากของสมการตามคุณลักษณะคือค่าไอเกนของเมทริกใกล้เคียง(companion matrix

             
ยังมีแนวทางอื่นๆ ที่กำหนดโพลีโนเมียล.

-->x = poly(0, 'x')
x
=
x


             สร้างตัวแปรชื่อ x, ซึ่งคือโพลีโนเมียลที่มีองศาเป็นศูนย์ ตัวแปร x สามารถใช้เป็น seed ในการสร้างโพลีโนเมียลอื่นๆ

-->p6 = 6 5 * x + x^2
-->roots(p6)
ans
=
2
.
3
.


             การสร้างโพลีโนเมียล p1 เป็นไปในแนวทางเดียวกับที่จะเขียนบนกระดาษด้วยมือ นี่จะเหมือนกับดโพลีโนเมียลที่แล้ว p1 และ  p2 ที่ได้สร้างขึ้น

-->c=[5 -6; 1 0];
-->p7 = poly(c, 'x')
             การสร้างโพลีโนเมียลจากเมทริกซ์ใกล้เคียง
p7
=
6
5x + x^2
             ให้พิจารณาโพลีโนเมียลอย่างมีเหตุผลและสำรวจฟังก์ชันที่สัมพันธกัน
-->x = poly(0, 'x')
-->p=(1+2*x+3*x^2)/(4+5*x+6*x^2)
p
=
2
1
+ 2x + 3x
-----------
2
4
+ 5x + 6x


Create the variable x as a polynomial

of degree 0, thus creating a seed for

a polynomial in x.

             การสร้างโพลีโนเมียล p ด้วยเศษ(numerator) คือ 12 x3 x2 และส่วน (denominator)  45 x6 x2 .

-->numer(p)

ans =

2

1 + 2x + 3x

-->denom(p)

ans=

2

4 + 5x + 6x

             สะกัดเศษและส่วนของโพลีโนเมียลแบบสัดส่วน( rational polynomial)

-->derivat(p)

ans =

2

3 + 12x + x

-------------------------

2 3 4

16 + 40x + 73x +60x + 36

             จงหา อนุพันธ์ของโพลีโนเมียลแบบสัดส่วน (rational polynomial)

-->[n, d]=simp((x+1)*(x+2),

(x+1)*(x-2))

d =

-2 + x

n =

2 + x

ทำโพลีโนเมียลให้ง่าย โดยกำหนดเศษและส่วนของโพลีโนเมียลสัดส่วน คืนกลับเศษและส่วนหลังจากการทำให้ง่าย

Exercise 6ทำงานกับโพลีโนเมียล

1. จงสร้างโพลีโนเมียลโดยใช้ x เป็นตัวแปรสัญลักษณ์ โดยมีรากเป็น 2 และ 3.

(Ans: p = poly([2 3], 'x')).

2. จงสร้างโพลีโนเมียลที่แสดงด้วย 6 5x + x2?

(Ans: p = poly([6 -5 1], 'x', 'coeff'))

3. จงหารากของโพลีโนเมียลนี้ (Ans: 2 and 3).

4. ตัวกระทำใดที่สามารถดำเนินการได้กับโพลีโนเมียล?

(Ans: สามารถดำเนินการ การบวก การลบ การคูณ และการหาร กับโพลีโนเมียล การดำเนินการเหล่านี้ยอมให้โพลีโนเมียลที่จัดให้มีตัวแปรสัญลักษณ์เดียวกัน แต่การดำเนินการเลช่นตรีโกณมิติ ล็อกการิธึมไม่สามารถใช้ได้)


ไซแลบ ติวเตอร์เรียล 5 สถิติ


Tutorial 5 Statistics


Scilab มีความสามารถในการคำนวณสถิติพื้นฐานทั้งหมด  โดยข้อมูลกำหนดให้อยู่ในรูปของเมทริกซ์ และการคำนวณสามาถทำได้โดยคิดให้แถวหรือคอลัมน์เป็นค่าการสังเกต และคอลัมน์หรือแถว เป็นพารามีเตอร์  ในการเลือกให้แถวเป็นค่าการสังเกตระบุด้วย 'r' หรือ

1. การเลือกให้คอลัมน์เป็นค่าการสังเกตระบุด้วย 'c' หรือ2. ถ้าไม่มีการระบุการดำเนินการก็จะประยุกต์กับทั้งเมทริกซ์ ทีละองค์ประกอบ  ฟังก์ชันทางสถิติที่มีให้ใช้ได้คือ  sum(), mean(), stdev(), st_deviation(), median().


สิ่งแรก ให้ดำเนินการสร้างเมทริกซ์ ที่มีการสังเกต 5 อย่าง ใน 3 พารามีเตอร์  ให้องค์ประกอบเมทริกซ์จากการสุ่มจำนวนตัวเลข ทำได้โดยใช้คำสั่งต่อไปนี้


-->a=rand(5,3)  
สร้างเมทริกซ์ ขนาด 5x3  ของจำนวนเลขสุ่ม  คิดให้แถวที่สังเกตการณ์และคอร์ลัมน์เป็นพารามีเตอร์  โดยคำนวณ ผลรวม  ค่าเฉลี่ย และค่าเบี่ยงเบนมาตรฐาน ดังต่อไปนี้ 

-->s=sum(a, 'r')                     Sum of columns of a.


-->m=mean(a,1)                    Mean value of each column of a.

-->sd=stdev(a, 1)                   Standard deviation of a.

-->sd2=st_deviation(a, 'r')   Standard deviation of a
                                                Sample size std.

-->mdn=median(a,'r')           Median of columns of a.


สำหรับการดำเนินการเดียวกันสามารถทำงานจัดให้คอคัมน์เป็นค่าการสังเกต โดยแทนด้วย 'r' หรือ 1 ด้วย  'c' หรือ 2.  ไม่ใช่ทั้ง  'r' (or 1) และ 'c' (or 2)ที่จัดให้  การดำเนินการดำเนินไปโดยทำให้เมทริกซ์ทั้งหมดเป็นชุดของการสังเกตต่อพารามีเดอร์เดี่ยวหนึ่ง 

ค่ามากที่สุดและน้อยที่สุดในคอลัมน์ แถว หรือเมทริกซ์สามารถให้ได้มาโดย ฟังกัชัน max() และ min() ตามลำดับ ทำนองเดียวกับฟังก์ชันทางสถิติ นอกจากที่ ต้องใช้ 'r' หรือ'c' แต่ไม่ใช้ 1 หรือ 2.

วันจันทร์ที่ 23 มีนาคม พ.ศ. 2563

ไซแลย ติวเตอเรียล 4 ซับเมทริกซ์

Tutorial 4 Sub-matrices
     
     เป็นไปได้ที่จะสะกัดแยก หรือแทนที่องค์ประกอบในเมทริกซ์ โดยอ้างถึงอินเด็กของแถวและคอลัมน์ของเมทริกซ์

-->a = [1 2 3; 4 5 6 ]        สร้างเมทริกซ์ 2 แถว 3 คอลัมน์

-->b = a(2,2)
  b =
       
5

-->a(2, 2) = 100               แทนที่องค์ประกอบของ a ที่คอลัมน์ที่ 2                                                      แถวที่2 ด้วยจำนวน 100
a  =    
      1     2    3
      4   100  6


          การดำเนินการที่คล้ายคลึงกันที่ทำต่อซับเมทริกซ์ของเมทริกซ์หนึ่งที่มี ซับเมทริกซ์สามารถแยกแยะโดยจำนวนแถวและคอลัมน์ ที่ซึ่งมีจุดเริ่มต้นและจุดปลาย ให้เราพิจารณาการสร้างเมทริกซ์แรกขนาด  5x8.ดังนี้


-->a=rand(5,8)*100                   เป็นการสร้างเมทริกซ์ขนาด 5x8  ที่องค์                                                           ประกอบเป็นตัวเลขที่เกิดจากการสร้างเลขสุ่ม
                                                โดย สุ่มจำนวนเต็ม ระหว่าง 0 และ 100



      เนื่องจากองค์ประกอบเป็นจำนวนสุ่ม  แต่ละคนที่สร้างเมทริกซ์นี้จะได้   เมทริกซ์ที่แตกต่างกัน   ให้เราคิดว่าต้องการแยกซับเมทริกซ์ขนาด  2x4 ออกจากเมทริกซ์  a กำหนดขอบเขตช่วงโดยแถว 3 ถึง คอลัมน์ 2 ถึง 5   จะได้เมทริกซ์เป็น a(3:4, 2:5).  ช่วงของแถวและคอลัมน์แทนได้ด้วยคำสั่ง range 3:4 และ 2:5 ตามลำดับ  ดังนั้น 3:4 กำหนดช่วง 3,4  ขณะที่ 2:5 กำหนดช่วง  2,3,4,5 อย่างไรก็ตามเมทริกซ์ a ยังคงมีอยู่ไม่ได้รับผลกระทบใด

 


-->b=a(3:4, 2:5)                          
   คำสั่งนี้สำเนา ซับเมทริกซ์ ไปเป็นเมทริกซ์ 'b' ซับเมทริกซ์สามารถเขียนทับไปแทนที่ได้ ง่ายเท่าๆกับการสำเนา  การทำให้ทุกองค์ประกอบของ       ซับเมทริกซ์ระหว่างช่วงบนเท่ากับศูนย์  ให้ใช้คำสั่งดังนี้

-->a(3:4, 2:5)=zeros(2,4)            
คำสั่งนี้สร้างเมทริกซ์ 2x4 มีองค์ประกอบเป็น   แล้วใส่เป็นซับเมทริกซ์ 'a'
ระหว่างแถว
3
:4 และคอลัมน์ 2:5.


    ให้สังเกตว่าซับเมทริกซ์ทางด้านซ้ายมือ และเมทริกซ์ทางขวามือ (เป็นเมทริกซ์ศูนย์ ตามตัวอย่างข้างบน) จะต้องมีขนาดเดียวกัน

     ขณะที่การใช้ช่วง (range) ในการบ่งถึงแถวและหรือคอลัมน์ ที่ยอมให้มียกออกจากตอนเริ่มแรก (หรือเลิก)ค่าในช่วง ซึ่งเป็นกรณีที่คิดให้เป็น 1 (หรือตัวเลขของแถวหรือคอลัมน์สุดท้าย)   เพื่อระบุแถวทั้หงมด (หรือคอลัมน์)  เป็นการเพียงพอที่จะใช้เพียงแค่โคลอน (:).  โดยวิธีนี้ ซับเมทริกซ์ประกอบด้วยทั้งหมดของแถวและคอลัมน์  2 และ ของเมทริกซ์ คำสั่งก็คือ a(:, 2:3).  ปกติแล้ว a(:, :) แทนเมทริกซ์ทั้งหมด ซึ่งแน่นอนว่าสามารถแทนได้โดยเพียงการเขียนว่า a  ไซแลยใช้สัญลักษณ์พิเศษอ้างถึงจำนวนของแถวสุดท้าย(หรือคอลัมน์) โดยสัญลักษณ์$ สามารถใช้ภายใต้ช่วงตามการระบุ ที่แทนจำนวนของแถวสุดท้าย(หรือ คอลัมน์)
  
    เป็นไปไม่ได้ที่ระบุเฉพาะค่าเริ่มต้นของช่วงเท่านั้น และ ไม่มีค่าปลายหรือในทางที่กลับกัน   ทั้งสองค่าระบุหรือ ไม่ระบุค่าทั้งสอง ซับเมทริกซ์ของแถวทั้งหมดของ     เมทริกซ์ a และคอลัมน์ 3 ถึง 8 แทนได้ด้วย

-->a(:, 3:$) 
    ในด้านล่าง เราทำการสะกัดทุกแถวและคอลัมน์จากคอลัมน์ 3 ไปคอลัมน์สุดท้าย นอกจากคอลัมน์หนึ่ง นั่นคือ 7 ให้สังเกตว่า $ คือคอลัมน์สุด และ $-1 คือคอลัมน์สุดท้ายนอกจากคอลัมน์หนึ่ง

-->a(:, 3:$-1) 
ให้สังเกตว่า ซับเมทริกซ์ไม่จำเป็นต้องประกอบด้วยแถวที่ติดต่อกัน หรือคอลัมน์ที่ติดต่อกัน  ตัวอย่างเช่นเพื่อสะกัดแถวคี่และคอลัมน์คี่จากเมทริกซ์ a, เราคงสามารถใช้คำสั่งต่อไปนี้

 -->c = a(1:2:$, 1:2:$) 
   คำสั่งนี้สำเนาซับเมทริกซ์ของ a ด้วยแถว 1, 3, 5 และ คอลัมน์ 1, 3, 5, 7 อยู่ในเมทริกซ์ b.  จำนวนแถวแทนด้วยช่วง 1:2:$ ซึ่งทำให้เห็นได้ว่าเริ่มจาก 1, เพิ่มขึ้นทีละ 2  แต่ลชะครั้งไปจนถึง $, ซึ่งในกรณีนี้คือ  5. 

-->c = a(:, $:-1:1) 
    เราสามารถแม้แต่การกลับลำดับของคอลัมน์(หรือแถว หรือทั้งสองแถวและคอลัมน์)  ช่วง $:-1:1 กลับลำดับของคอลัมน์ (แถวไม่มีการเปลี่ยนแปลง) , และเมทริกซ์ที่ปรับเปลี่ยนไปถูกเก็บไว้ใน c  

แบบฝึกหัด 4 ซับเมทริกซ์ 

1. ให้สกัดคอลัมน์สุดท้ายของเมทริก a และให้เก็บไว้ในเมทริกซ์ b 
(Ans: b = a(:,$)).
2. ให้สกัดคอลัมน์สุดท้ายแต่เป็นคอลัมน์หนึ่งของเมทริกซ์ a และให้เก็บไว้ในเมทริกซ์ b (Ans: b = a(:,$-1)).
3.ให้แทนที่เมทริกซ์ย่อยระหว่างแถวที่ 3 ถึง 5 และ คอลัมน์ 2 ไปยังคอลัมน์สุดท้าย แต่เป็นคอลัมน์หนึ่งในในเมทริกซ์ a มีขนาด 5x5 ด้วยค่าศูนย์ (Ans: a(3:5,2:$-1) =zeros(3,4). แทนที่ศูนย์(3,4) เราสามารถใช็ศูนย์(:,:) และ ไซแลบจะคำนวณจำนวนที่ต้องการของแถวและคอลัมน์ตัวเอง)


4. Replace the even numbered columns of matrix a having size 3x5 with ones. (Ans: a(:,2:2:$)=ones(:, :)).
5. What is the sub-matrix of a extracted by the following command a(1:3,$-2:$)? (Ans: It extracts the first 3 rows and last 3 columns of matrix a).
6. Assuming a to be a 5x8 matrix, are the following valid commands? If so, what do they do? If not, what is the correct command? 1. A(1:, 5) Incorrect. Should indicate end row number. 2. A(:, 5) Correct 3. a(1:3, $-1:$) Correct 4. a(:$, 3:6) Incorrect. Should indicate start row number.