情報学部 | 菅沼ホーム | 目次 | 索引 |
x = func(a, b, c);
int func(int x, int y, double z) { ・・・・・ }
xn+1 = xn - f(xn) / f'(xn)
関数の型 関数名 (引数リスト) { ・・・・・ ・・・・・ }
01 /******************************************/ 02 /* デフォルト引数と関数名のオーバーロード */ 03 /* coded by Y.Suganuma */ 04 /******************************************/ 05 #include <stdio.h> 06 07 int add(int a, int b = 0) { 08 return a + b; 09 } 10 11 double add(double a, double b = 3.5) { 12 return a + b; 13 } 14 15 int main() 16 { 17 printf("整数 1 + 2 = %d\n", add(1, 2)); 18 printf("整数 1 + 0 = %d\n", add(1)); 19 printf("実数 1.0 + 3.5 = %f\n", add(1.0)); 20 21 return 0; 22 }
整数 1 + 2 = 3 整数 1 + 0 = 1 実数 1.0 + 3.5 = 4.500000
[メソッド修飾子] メソッドの型 メソッド名 (引数リスト) { ・・・・・ ・・・・・ }
01 /****************************/ 02 /* 関数名のオーバーロード */ 03 /* coded by Y.Suganuma */ 04 /****************************/ 05 import java.io.*; 06 07 public class Test { 08 public static void main(String args[]) throws IOException 09 { 10 System.out.printf("整数 %d\n", add(1, 2)); 11 System.out.printf("実数 %f\n", add(1.0)); 12 } 13 14 static int add(int a, int b) { 15 return a + b; 16 } 17 18 static double add(double a) { 19 return a + 3.5; 20 } 21 }
整数 1 + 2 = 3 実数 1.0 + 3.5 = 4.500000
function 関数名 (引数リスト) {
・・・・・
・・・・・
}
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 /****************************/ 08 /* デフォルト引数 */ 09 /* coded by Y.Suganuma */ 10 /****************************/ 11 function run() { 12 let str = "1 + 2 = " + add(1, 2) + "\n"; 13 str += "1 + 5 = " + add(1) + "\n"; 14 // 結果の設定 15 document.getElementById("tx").value = str; 16 } 17 18 function add(a, b = 5) { 19 return a + b; 20 } 21 </SCRIPT> 22 </HEAD> 23 <BODY STYLE="font-size:130%"> 24 <P STYLE="text-align:center"> 25 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 26 <TEXTAREA TYPE="text" ID="tx" COLS="10" ROWS="3" STYLE="font-size: 100%"></TEXTAREA> 27 </P> 28 </BODY> 29 </HTML>
1 + 2 = 3 1 + 5 = 6
function 関数名 (引数リスト) {
・・・・・
・・・・・
}
01 <?php 02 /****************************/ 03 /* デフォルト引数 */ 04 /* coded by Y.Suganuma */ 05 /****************************/ 06 function add($a, $b = 5) { 07 return $a + $b; 08 } 09 10 printf("1 + 2 = %d\n", add(1, 2)); 11 printf("1 + 5 = %d\n", add(1)); 12 ?>
1 + 2 = 3 1 + 5 = 6
def メソッド名 [引数の並び] ・・・・・ ・・・・・ end
01 #***************************/ 02 # デフォルト引数 */ 03 # coded by Y.Suganuma */ 04 #***************************/ 05 def add(a, b = 5) 06 return a + b; 07 end 08 09 printf("1 + 2 = %d\n", add(1, 2)); 10 printf("1 + 5 = %d\n", add(1));
1 + 2 = 3 1 + 5 = 6
def 関数名 (引数リスト) : ・・・・・ ・・・・・
01 # -*- coding: UTF-8 -*- 02 #***************************/ 03 # デフォルト引数 */ 04 # coded by Y.Suganuma */ 05 #***************************/ 06 def add(a, b = 5) : 07 return a + b 08 09 print("1 + 2 = ", add(1, 2)) 10 print("1 + 5 = ", add(1))
1 + 2 = 3 1 + 5 = 6
関数の型 関数名 (引数リスト) { ・・・・・ ・・・・・ }
01 /******************************************/ 02 /* 関数名のオーバーロードとデフォルト引数 */ 03 /* coded by Y.Suganuma */ 04 /******************************************/ 05 using System; 06 07 class Program 08 { 09 static void Main() 10 { 11 Console.WriteLine("整数 1 + 2 = " + add(1, 2)); 12 Console.WriteLine("整数 1 + 0 = " + add(1)); 13 Console.WriteLine("実数 1 + 3.5 = " + add(1.0)); 14 } 15 16 static int add(int a, int b = 0) { 17 return a + b; 18 } 19 20 static double add(double a, double b = 3.5) { 21 return a + b; 22 } 23 }
整数 1 + 2 = 3 整数 1 + 0 = 1 実数 1.0 + 3.5 = 4.5
Function 関数名 (引数リスト) As 戻り値のデータ型 // 戻り値がある場合 ・・・・・ ・・・・・ Return ... End Function
Sub 関数名 (引数リスト) // 戻り値がない場合 ・・・・・ ・・・・・ End Sub
01 '''''''''''''''''''''''''''''''''''''''''' 02 ' 関数名のオーバーロードとデフォルト引数 ' 03 ' coded by Y.Suganuma ' 04 '''''''''''''''''''''''''''''''''''''''''' 05 Module Test 06 Sub Main() 07 Console.WriteLine("整数 1 + 2 = " & add(1, 2)) 08 Console.WriteLine("整数 1 + 0 = " & add(1)) 09 Console.WriteLine("実数 1 + 3.5 = " & add(1.0)) 10 End Sub 11 12 Function add(a As Integer, Optional b As Integer = 0) As Integer 13 Return a + b 14 End Function 15 16 Function add(a As Double, Optional b As Double = 3.5) As Double 17 Return a + b 18 End Function 19 End Module
整数 1 + 2 = 3 整数 1 + 0 = 1 実数 1.0 + 3.5 = 4.5
01 #include <stdio.h> 02 03 /**********************************/ 04 /* 2 つの整数の和 */ 05 /* u, v : 和を計算するデータ */ 06 /* w : u + v */ 07 /* x : u + v */ 08 /* return : u + v */ 09 /**********************************/ 10 int func1(int u, int v, int *w, int &x) 11 { 12 u = 100; 13 int a = u + v; 14 *w = a; 15 x = a; 16 return a; 17 } 18 19 int main() 20 { 21 printf("基本型\n"); 22 int a1 = 10, b1 = 20, c1 = 0, d1 = 0, e1 = 0; 23 printf(" 前 %d %d %d %d %d\n", a1, b1, c1, d1, e1); 24 c1 = func1(a1, b1, &d1, e1); 25 printf(" 後 %d %d %d %d %d\n", a1, b1, c1, d1, e1); 26 27 return 0; 28 }
基本型 前 10 20 0 0 0 後 10 20 120 120 120
01 #include <stdio.h> 02 #include <vector> 03 04 using namespace std; 05 06 /************************/ 07 /* 1 次元配列の要素の和 */ 08 /* n : 要素数 */ 09 /* u, v : 配列 */ 10 /* w : vector */ 11 /* return wの和 */ 12 /************************/ 13 int func2(int n, int *u, int *v, vector<int> w) // func2(int n, int u[], int v[], vector<int> w) 14 { 15 for (int i1 = 0; i1 < n; i1++) { 16 u[n] += u[i1]; 17 v[n] += v[i1]; 18 w[n] += w[i1]; 19 } 20 return w[n]; 21 } 22 23 int main() 24 { 25 printf("1 次元配列\n"); 26 int a2[] = {1, 2, 3, 0}; 27 int *b2 = new int [4]; 28 for (int i1 = 0; i1 < 3; i1++) 29 b2[i1] = 10 * (i1 + 1); 30 b2[3] = 0; 31 vector<int> c2; 32 for (int i1 = 0; i1 < 3; i1++) 33 c2.push_back(10 * (i1 + 1)); 34 c2.push_back(0); 35 printf(" 前 a2 %d %d %d %d\n", a2[0], a2[1], a2[2], a2[3]); 36 printf(" 前 b2 %d %d %d %d\n", b2[0], b2[1], b2[2], b2[3]); 37 printf(" 前 c2 %d %d %d %d\n", c2[0], c2[1], c2[2], c2[3]); 38 int d2 = func2(3, a2, b2, c2); 39 printf(" 後 a2 %d %d %d %d\n", a2[0], a2[1], a2[2], a2[3]); 40 printf(" 後 b2 %d %d %d %d\n", b2[0], b2[1], b2[2], b2[3]); 41 printf(" 後 c2 %d %d %d %d d2 %d\n", c2[0], c2[1], c2[2], c2[3], d2); 42 43 return 0; 44 }
1 次元配列 前 a2 1 2 3 0 前 b2 10 20 30 0 前 c2 10 20 30 0 後 a2 1 2 3 6 後 b2 10 20 30 60 後 c2 10 20 30 0 d2 60
01 #include <stdio.h> 02 03 /********************************/ 04 /* 2 次元配列の要素の和 */ 05 /* n : 行数 */ 06 /* m : 列数 */ 07 /* u,v,w : 配列 */ 08 /* return : 和を入れる配列 */ 09 /********************************/ 10 int *func3(int n, int m, int u[][4], int *v, int **w) 11 { 12 int *s = new int [3]; 13 for (int i1 = 0; i1 < 3; i1++) 14 s[i1] = 0; 15 for (int i1 = 0; i1 < n; i1++) { 16 for (int i2 = 0; i2 < m-1; i2++) { 17 u[i1][3] += u[i1][i2]; 18 s[0] += u[i1][i2]; 19 s[1] += v[i1 * m + i2]; 20 s[2] += w[i1][i2]; 21 } 22 } 23 return s; 24 } 25 26 int main() 27 { 28 printf("2 次元配列\n"); 29 int a3[][4] = {{1, 2, 3, 0}, {4, 5, 6, 0}}; 30 int **b3 = new int *[2]; 31 for (int i1 = 0; i1 < 2; i1++) { 32 b3[i1] = new int [3]; 33 for (int i2 = 0; i2 < 3; i2++) 34 b3[i1][i2] = 30 * i1 + 10 * (i2 + 1); 35 } 36 printf(" a3 %d %d %d %d\n", a3[0][0], a3[0][1], a3[0][2], a3[0][3]); 37 printf(" %d %d %d %d\n", a3[1][0], a3[1][1], a3[1][2], a3[1][3]); 38 printf(" b3 %d %d %d\n", b3[0][0], b3[0][1], b3[0][2]); 39 printf(" %d %d %d\n", b3[1][0], b3[1][1], b3[1][2]); 40 int *c3 = func3(2, 4, a3, &a3[0][0], b3); 41 printf(" a3[0][3],a3[1][3] %d %d\n", a3[0][3], a3[1][3]); 42 printf(" c3 %d %d %d\n", c3[0], c3[1], c3[2]); 43 44 return 0; 45 }
2 次元配列 a3 1 2 3 0 4 5 6 0 b3 10 20 30 40 50 60 a3[0][3],a3[1][3] 6 15 c3 21 21 210
01 #include <stdio.h> 02 03 /******************/ 04 /* クラス Example */ 05 /******************/ 06 class Example { 07 public : 08 int n; 09 int x[3]; 10 int *y; 11 Example(int n1) 12 { 13 n = n1; 14 for (int i1 = 0; i1 < 3; i1++) 15 x[i1] = i1; 16 y = new int [n]; 17 for (int i1 = 0; i1 < n; i1++) 18 y[i1] = i1; 19 } 20 }; 21 22 /************************/ 23 /* オブジェクトの値変更 */ 24 /* x1 : コピー */ 25 /* x2 : アドレス */ 26 /* x3 : 参照 */ 27 /************************/ 28 void func4(Example x1, Example *x2, Example &x3) 29 //void func4(const Example x1, const Example *x2, const Example &x3) 30 { 31 x1.n = 4; 32 x2->n = 5; 33 x3.n = 6; 34 x1.x[0] = 4; 35 x1.y[0] = 4; // const 指定でも可 36 x2->x[0] = 5; 37 x2->y[0] = 5; // const 指定でも可 38 x3.x[0] = 6; 39 x3.y[0] = 6; // const 指定でも可 40 } 41 42 int main() 43 { 44 printf("オブジェクト\n"); 45 Example a4(3); 46 Example a5(3); // Example *a5 = new Example(3); 47 Example a6(3); 48 printf(" 前 a4 n %d\n", a4.n); 49 printf(" x %d %d %d\n", a4.x[0], a4.x[1], a4.x[2]); 50 printf(" y %d %d %d\n", a4.y[0], a4.y[1], a4.y[2]); 51 printf(" 前 a5 n %d\n", a5.n); 52 printf(" x %d %d %d\n", a5.x[0], a5.x[1], a5.x[2]); 53 printf(" y %d %d %d\n", a5.y[0], a5.y[1], a5.y[2]); 54 // printf(" 前 a5 n %d\n", a5->n); 55 // printf(" x %d %d %d\n", a5->x[0], a5->x[1], a5->x[2]); 56 // printf(" y %d %d %d\n", a5->y[0], a5->y[1], a5->y[2]); 57 printf(" 前 a6 n %d\n", a6.n); 58 printf(" x %d %d %d\n", a6.x[0], a6.x[1], a6.x[2]); 59 printf(" y %d %d %d\n", a6.y[0], a6.y[1], a6.y[2]); 60 func4(a4, &a5, a6); // func4(a4, a5, a6); 61 printf(" 後 a4 n %d\n", a4.n); 62 printf(" x %d %d %d\n", a4.x[0], a4.x[1], a4.x[2]); 63 printf(" y %d %d %d\n", a4.y[0], a4.y[1], a4.y[2]); 64 printf(" 後 a5 n %d\n", a5.n); 65 printf(" x %d %d %d\n", a5.x[0], a5.x[1], a5.x[2]); 66 printf(" y %d %d %d\n", a5.y[0], a5.y[1], a5.y[2]); 67 // printf(" 後 a5 n %d\n", a5->n); 68 // printf(" x %d %d %d\n", a5->x[0], a5->x[1], a5->x[2]); 69 // printf(" y %d %d %d\n", a5->y[0], a5->y[1], a5->y[2]); 70 printf(" 後 a6 n %d\n", a6.n); 71 printf(" x %d %d %d\n", a6.x[0], a6.x[1], a6.x[2]); 72 printf(" y %d %d %d\n", a6.y[0], a6.y[1], a6.y[2]); 73 74 return 0; 75 }
オブジェクト 前 a4 n 3 x 0 1 2 y 0 1 2 前 a5 n 3 x 0 1 2 y 0 1 2 前 a6 n 3 x 0 1 2 y 0 1 2 後 a4 n 3 x 0 1 2 y 4 1 2 後 a5 n 5 x 5 1 2 y 5 1 2 後 a6 n 6 x 6 1 2 y 6 1 2
01 #include <stdio.h> 02 #include <functional> 03 #include <algorithm> 04 05 using namespace std; 06 07 /*****************************/ 08 /* データの比較(昇順) */ 09 /* a > bの場合に0以外(真) */ 10 /*****************************/ 11 bool ascend(int a, int b) 12 { 13 return a < b; 14 } 15 16 /*****************************/ 17 /* データの比較(降順) */ 18 /* a < bの場合に0以外(真) */ 19 /*****************************/ 20 bool descend(int a, int b) 21 { 22 return a > b; 23 } 24 25 /*****************************************************************/ 26 /* バブルソート */ 27 /* n : データの数 */ 28 /* data : データ */ 29 /* compare : 比較を行う関数 */ 30 /* バブルソートの手順 */ 31 /* 1)配列data[i]にn個のデータが入っているものとする. */ 32 /* i=0,1,・・・,n-1 */ 33 /* 2)i番目のデータとi+1番目のデータを比較し,もし, */ 34 /* data[i+1] < data[i] (昇順の場合) */ 35 /* であればそれらのデータを交換する. i=0,1,・・・,n-2 */ 36 /* →この結果,data[n-1]に最も大きなデータが入る */ 37 /* ことになる */ 38 /* 3)次に,n-1個のデータに対し上の処理を繰り返す. */ 39 /* 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 */ 40 /* を繰り返す */ 41 /*****************************************************************/ 42 //void func5(int n, int *data, less<int> compare) // 関数オブジェクト 43 //void func5(int n, int *data, auto compare) // ラムダ式 44 void func5(int n, int *data, bool (*compare)(int, int)) 45 { 46 int sw = 0; 47 48 if (n > 1) { 49 for (int i1 = 0; i1 < n-1; i1++) { 50 if (!compare(data[i1], data[i1+1])) { 51 sw = 1; 52 swap(data[i1], data[i1+1]); 53 } 54 } 55 } 56 57 if (sw > 0) 58 func5(n-1, data, compare); 59 } 60 61 int main() 62 { 63 printf("関数名(sort)\n"); 64 int a7[] = {3, 2, 5, 4, 1}; 65 int a8[] = {3, 2, 5, 4, 1}; 66 printf(" 前(a7) %d %d %d %d %d\n", a7[0], a7[1], a7[2], a7[3], a7[4]); 67 printf(" 前(a8) %d %d %d %d %d\n", a8[0], a8[1], a8[2], a8[3], a8[4]); 68 func5(5, a7, ascend); // 昇順 69 func5(5, a8, descend); // 降順 70 printf(" 後(a7,昇順) %d %d %d %d %d\n", a7[0], a7[1], a7[2], a7[3], a7[4]); 71 printf(" 後(a8,降順) %d %d %d %d %d\n", a8[0], a8[1], a8[2], a8[3], a8[4]); 72 printf("関数オブジェクト,ラムダ式\n"); 73 int a9[] = {3, 2, 5, 4, 1}; 74 int a10[] = {3, 2, 5, 4, 1}; 75 printf(" 前( a9) %d %d %d %d %d\n", a9[0], a9[1], a9[2], a9[3], a9[4]); 76 printf(" 前(a10) %d %d %d %d %d\n", a10[0], a10[1], a10[2], a10[3], a8[4]); 77 // func5(5, a9, less<int>()); // 昇順,関数オブジェクト 78 // func5(5, a10, [](int x, int y){ return x > y; }); // 降順,ラムダ式 79 sort(a9, a9+5, less<int>()); // 昇順,関数オブジェクト 80 sort(a10, a10+5, [](int x, int y){ return x > y; }); // 降順,ラムダ式 81 printf(" 後( a9,昇順,関数オブジェクト) %d %d %d %d %d\n", a9[0], a9[1], a9[2], a9[3], a9[4]); 82 printf(" 後(a10,降順,ラムダ式) %d %d %d %d %d\n", a10[0], a10[1], a10[2], a10[3], a8[4]); 83 84 return 0; 85 }
関数名(sort) 前(a7) 3 2 5 4 1 前(a8) 3 2 5 4 1 後(a7,昇順) 1 2 3 4 5 後(a8,降順) 5 4 3 2 1 関数オブジェクト,ラムダ式 前( a9) 3 2 5 4 1 前(a10) 3 2 5 4 1 後( a9,昇順,関数オブジェクト) 1 2 3 4 5 後(a10,降順,ラムダ式) 5 4 3 2 1
01 #include <stdio.h> 02 #include <math.h> 03 04 /************************/ 05 /* 関数値(f(x))の計算 */ 06 /************************/ 07 double snx(double x) 08 { 09 double y = exp(x) - 3.0 * x; 10 return y; 11 } 12 13 /********************/ 14 /* 関数の微分の計算 */ 15 /********************/ 16 double dsnx(double x) 17 { 18 double y = exp(x) - 3.0; 19 return y; 20 } 21 22 /*****************************************************/ 23 /* Newton法による非線形方程式(f(x)=0)の解 */ 24 /* fn : f(x)を計算する関数名 */ 25 /* dfn : f(x)の微分を計算する関数名 */ 26 /* x0 : 初期値 */ 27 /* eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) */ 28 /* eps2 : 終了条件2(|f(x(k))|<eps2) */ 29 /* max : 最大試行回数 */ 30 /* ind : 実際の試行回数 */ 31 /* (負の時は解を得ることができなかった) */ 32 /* return : 解 */ 33 /*****************************************************/ 34 double func6(double(*fn)(double), double(*dfn)(double), double x0, 35 double eps1, double eps2, int max, int *ind) 36 { 37 double x = x0, x1 = x0; 38 int sw = 0; 39 *ind = 0; 40 41 while (sw == 0 && *ind >= 0) { 42 sw = 1; 43 *ind += 1; 44 double g = fn(x1); 45 if (fabs(g) > eps2) { 46 if (*ind <= max) { 47 double dg = dfn(x1); 48 if (fabs(dg) > eps2) { 49 x = x1 - g / dg; 50 if (fabs(x-x1) > eps1 && fabs(x-x1) > eps1*fabs(x)) { 51 x1 = x; 52 sw = 0; 53 } 54 } 55 else 56 *ind = -1; 57 } 58 else 59 *ind = -1; 60 } 61 } 62 63 return x; 64 } 65 66 int main() 67 { 68 printf("関数名(Newton 法)\n"); 69 double eps1 = 1.0e-7; 70 double eps2 = 1.0e-10; 71 double x0 = 0.0; 72 int max = 20; 73 int ind; 74 double x = func6(snx, dsnx, x0, eps1, eps2, max, &ind); 75 printf(" 回数=%d x=%f 関数値=%f 微係数=%f\n", ind, x, snx(x), dsnx(x)); 76 77 return 0; 78 }
関数名(Newton 法) 回数=5 x=0.619061 関数値=0.000000 微係数=-1.142816
01 import java.io.*; 02 03 public class Test { 04 /*******************/ 05 /* main プログラム */ 06 /*******************/ 07 public static void main(String args[]) throws IOException 08 { 09 Test1 ts = new Test1(); 10 } 11 } 12 13 class Test1 { 14 Test1() 15 { 16 System.out.printf("基本型,文字列\n"); 17 int a1 = 10, b1 = 20, c1 = 0; 18 String s1 = "abc", s2 = new String("abc"); 19 System.out.printf(" 前 %d %d %d %s %s\n", a1, b1, c1, s1, s2); 20 c1 = func1(a1, b1, s1, s2); 21 System.out.printf(" 後 %d %d %d %s %s\n", a1, b1, c1, s1, s2); 22 } 23 24 /**********************************/ 25 /* 2 つの整数の和 */ 26 /* u, v : 和を計算するデータ */ 27 /* t1, t2 : 文字列 */ 28 /* return : u + v */ 29 /**********************************/ 30 int func1(int u, int v, String t1, String t2) 31 { 32 t1 = t1.replace('a', 'x'); 33 t2 = t2.replace('a', 'x'); 34 u = 100; 35 int a = u + v; 36 return a; 37 } 38 }
基本型,文字列 前 10 20 0 abc abc 後 10 20 120 abc abc
01 import java.io.*; 02 import java.util.*; 03 04 public class Test { 05 /*******************/ 06 /* main プログラム */ 07 /*******************/ 08 public static void main(String args[]) throws IOException 09 { 10 Test1 ts = new Test1(); 11 } 12 } 13 14 class Test1 { 15 Test1() 16 { 17 System.out.printf("1 次元配列\n"); 18 int a2[] = {1, 2, 3, 0}; 19 ArrayList <Integer> b2 = new ArrayList <Integer> (); 20 for (int i1 = 0; i1 < 3; i1++) 21 b2.add(new Integer(10 * (i1 + 1))); 22 b2.add(new Integer(0)); 23 System.out.printf(" 前 a2 %d %d %d %d\n", a2[0], a2[1], a2[2], a2[3]); 24 System.out.printf(" b2 %d %d %d %d\n", b2.get(0), b2.get(1), b2.get(2), b2.get(3)); 25 func2(3, a2, b2); 26 System.out.printf(" 後 a2 %d %d %d %d\n", a2[0], a2[1], a2[2], a2[3]); 27 System.out.printf(" b2 %d %d %d %d\n", b2.get(0), b2.get(1), b2.get(2), b2.get(3)); 28 } 29 30 /************************/ 31 /* 1 次元配列の要素の和 */ 32 /* n : 要素数 */ 33 /* u : 配列 */ 34 /************************/ 35 void func2(int n, int u[], ArrayList <Integer> w) 36 { 37 int s = 0; 38 for (int i1 = 0; i1 < n; i1++) { 39 u[n] += u[i1]; 40 s += w.get(i1); 41 } 42 w.set(n, s); 43 } 44 }
1 次元配列 前 a2 1 2 3 0 b2 10 20 30 0 後 a2 1 2 3 6 b2 10 20 30 60
01 import java.io.*; 02 03 public class Test { 04 /*******************/ 05 /* main プログラム */ 06 /*******************/ 07 public static void main(String args[]) throws IOException 08 { 09 Test1 ts = new Test1(); 10 } 11 } 12 13 class Test1 { 14 Test1() 15 { 16 System.out.printf("2 次元配列\n"); 17 int a3[][] = {{1, 2, 3, 0}, {4, 5, 6, 0}}; 18 System.out.printf(" 前 a3 %d %d %d %d\n", a3[0][0], a3[0][1], a3[0][2], a3[0][3]); 19 System.out.printf(" %d %d %d %d\n", a3[1][0], a3[1][1], a3[1][2], a3[1][3]); 20 func3(2, 3, a3); 21 System.out.printf(" 後 a3 %d %d %d %d\n", a3[0][0], a3[0][1], a3[0][2], a3[0][3]); 22 System.out.printf(" %d %d %d %d\n", a3[1][0], a3[1][1], a3[1][2], a3[1][3]); 23 } 24 25 /****************************/ 26 /* 2 次元配列の要素の和 */ 27 /* n : 行数 */ 28 /* m : 列数 */ 29 /* u : 配列 */ 30 /* u[i1][m] : 各行の和 */ 31 /****************************/ 32 void func3(int n, int m, int u[][]) 33 { 34 for (int i1 = 0; i1 < n; i1++) { 35 for (int i2 = 0; i2 < m; i2++) 36 u[i1][m] += u[i1][i2]; 37 } 38 } 39 }
2 次元配列 前 a3 1 2 3 0 4 5 6 0 後 a3 1 2 3 6 4 5 6 15
01 import java.io.*; 02 03 public class Test { 04 /*******************/ 05 /* main プログラム */ 06 /*******************/ 07 public static void main(String args[]) throws IOException 08 { 09 Test1 ts = new Test1(); 10 } 11 } 12 13 class Test1 { 14 Test1() 15 { 16 System.out.printf("オブジェクト\n"); 17 Example a4 = new Example(3); 18 System.out.printf(" 前 n %d\n", a4.n); 19 System.out.printf(" x %d %d %d\n", a4.x[0], a4.x[1], a4.x[2]); 20 func4(a4); 21 System.out.printf(" 後 n %d\n", a4.n); 22 System.out.printf(" x %d %d %d\n", a4.x[0], a4.x[1], a4.x[2]); 23 } 24 25 /**************************/ 26 /* オブジェクトの値変更 */ 27 /* x1 : オブジェクト */ 28 /**************************/ 29 void func4(Example x1) 30 { 31 x1.n = 4; 32 x1.x[0] = 4; 33 } 34 } 35 36 /******************/ 37 /* クラス Example */ 38 /******************/ 39 class Example { 40 int n; 41 int x[]; 42 Example(int n1) 43 { 44 n = n1; 45 x = new int [n]; 46 for (int i1 = 0; i1 < n; i1++) 47 x[i1] = i1; 48 } 49 }
オブジェクト 前 n 3 x 0 1 2 後 n 4 x 4 1 2
001 import java.io.*; 002 003 public class Test { 004 /*******************/ 005 /* main プログラム */ 006 /*******************/ 007 public static void main(String args[]) throws IOException 008 { 009 Test1 ts = new Test1(); 010 } 011 } 012 013 class Test1 { 014 Test1() 015 { 016 System.out.printf("関数名(sort)\n"); 017 int a7[] = {3, 2, 5, 4, 1}; 018 int a8[] = {3, 2, 5, 4, 1}; 019 System.out.printf(" 前 %d %d %d %d %d\n", a7[0], a7[1], a7[2], a7[3], a7[4]); 020 System.out.printf(" 前 %d %d %d %d %d\n", a8[0], a8[1], a8[2], a8[3], a8[4]); 021 Sort st = new Sort(0); // 昇順 022 func5(5, a7, st); 023 st = new Sort(1); // 降順 024 func5(5, a8, st); 025 System.out.printf(" 後 %d %d %d %d %d\n", a7[0], a7[1], a7[2], a7[3], a7[4]); 026 System.out.printf(" 後 %d %d %d %d %d\n", a8[0], a8[1], a8[2], a8[3], a8[4]); 027 } 028 029 /*****************************************************************/ 030 /* バブルソート */ 031 /* n : データの数 */ 032 /* data : データ */ 033 /* compare : 比較を行う関数 */ 034 /* バブルソートの手順 */ 035 /* 1)配列data[i]にn個のデータが入っているものとする. */ 036 /* i=0,1,・・・,n-1 */ 037 /* 2)i番目のデータとi+1番目のデータを比較し,もし, */ 038 /* data[i+1] < data[i] (昇順の場合) */ 039 /* であればそれらのデータを交換する. i=0,1,・・・,n-2 */ 040 /* →この結果,data[n-1]に最も大きなデータが入る */ 041 /* ことになる */ 042 /* 3)次に,n-1個のデータに対し上の処理を繰り返す. */ 043 /* 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 */ 044 /* を繰り返す */ 045 /*****************************************************************/ 046 void func5(int n, int data[], Sort st) 047 { 048 int i1, sw = 0; 049 050 if (n > 1) { 051 for (i1 = 0; i1 < n-1; i1++) { 052 if (st.compare(data[i1], data[i1+1])) { 053 sw = 1; 054 int x = data[i1]; 055 data[i1] = data[i1+1]; 056 data[i1+1] = x; 057 } 058 } 059 } 060 061 if (sw > 0) 062 func5(n-1, data, st); 063 } 064 } 065 066 /***************/ 067 /* クラス Sort */ 068 /***************/ 069 class Sort { 070 071 int sw; // =0 : 昇順,=1 : 降順 072 073 Sort(int swi) 074 { 075 sw = swi; 076 } 077 078 boolean compare(int a, int b) 079 { 080 return (sw ==0) ? ascend(a, b) : descend(a, b); 081 } 082 083 /************************/ 084 /* データの比較(昇順) */ 085 /* a > bの場合に真 */ 086 /************************/ 087 boolean ascend(int a, int b) 088 { 089 boolean tf = false; 090 if (a > b) 091 tf = true; 092 return tf; 093 } 094 095 /************************/ 096 /* データの比較(降順) */ 097 /* a < bの場合に真 */ 098 /************************/ 099 boolean descend(int a, int b) 100 { 101 boolean tf = false; 102 if (a < b) 103 tf = true; 104 return tf; 105 } 106 }
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 import java.io.*; 02 03 public class Test { 04 /*******************/ 05 /* main プログラム */ 06 /*******************/ 07 public static void main(String args[]) throws IOException 08 { 09 Test1 ts = new Test1(); 10 } 11 } 12 13 class Test1 { 14 Test1() 15 { 16 System.out.printf("関数名(Newton 法)\n"); 17 double eps1 = 1.0e-7; 18 double eps2 = 1.0e-10; 19 double x0 = 0.0; 20 int max = 20; 21 int ind[] = new int [1]; 22 Newton nt = new Newton(); 23 double x = func6(nt, x0, eps1, eps2, max, ind); 24 System.out.printf(" 回数=%d x=%f 関数値=%f 微係数=%f\n", ind[0], x, nt.fn(0, x), nt.fn(1, x)); 25 } 26 27 /*****************************************************/ 28 /* Newton法による非線形方程式(f(x)=0)の解 */ 29 /* nt : f(x)及びf(x)の微分を計算する関数 */ 30 /* x0 : 初期値 */ 31 /* eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) */ 32 /* eps2 : 終了条件2(|f(x(k))|<eps2) */ 33 /* max : 最大試行回数 */ 34 /* ind : 実際の試行回数 */ 35 /* (負の時は解を得ることができなかった) */ 36 /* return : 解 */ 37 /*****************************************************/ 38 double func6(Newton nt, double x0, double eps1, double eps2, int max, int ind[]) 39 { 40 double x = x0, x1 = x0; 41 int sw = 0; 42 ind[0] = 0; 43 44 while (sw == 0 && ind[0] >= 0) { 45 sw = 1; 46 ind[0] += 1; 47 double g = nt.fn(0, x1); 48 if (Math.abs(g) > eps2) { 49 if (ind[0] <= max) { 50 double dg = nt.fn(1, x1); 51 if (Math.abs(dg) > eps2) { 52 x = x1 - g / dg; 53 if (Math.abs(x-x1) > eps1 && Math.abs(x-x1) > eps1*Math.abs(x)) { 54 x1 = x; 55 sw = 0; 56 } 57 } 58 else 59 ind[0] = -1; 60 } 61 else 62 ind[0] = -1; 63 } 64 } 65 66 return x; 67 } 68 } 69 70 /*****************/ 71 /* クラス Newton */ 72 /*****************/ 73 class Newton { 74 double fn(int sw, double x) 75 { 76 double y; 77 if (sw == 0) // 関数値の計算 78 y = Math.exp(x) - 3.0 * x; 79 else // 関数の微分の計算 80 y = Math.exp(x) - 3.0; 81 return y; 82 } 83 }
関数名(Newton 法) 回数=5 x=0.619061 関数値=-0.000000 微係数=-1.142816
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 function run() { 08 let str = "基本型,文字列\n"; 09 let a1 = 10, b1 = 20, c1 = 0; 10 let s1 = "abc", s2 = new String("abc"); 11 str += " 前 " + a1 + " " + b1 + " " + c1 + " " + s1 + " " + s2 + "\n"; 12 c1 = func1(a1, b1, s1, s2); 13 str += " 後 " + a1 + " " + b1 + " " + c1 + " " + s1 + " " + s2 + "\n"; 14 // 結果の設定 15 document.getElementById("tx").value = str; 16 } 17 18 /**********************************/ 19 /* 2 つの整数の和 */ 20 /* u, v : 和を計算するデータ */ 21 /* t1, t2 : 文字列 */ 22 /* return : u + v */ 23 /**********************************/ 24 function func1(u, v, t1, t2) 25 { 26 t1 = t1.replace(/a/, "x"); 27 t2 = t2.replace(/a/, "x"); 28 u = 100; 29 let a = u + v; 30 return a; 31 } 32 </SCRIPT> 33 </HEAD> 34 <BODY STYLE="font-size:130%"> 35 <P STYLE="text-align:center"> 36 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 37 <TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 38 </P> 39 </BODY> 40 </HTML>
基本型,文字列 前 10 20 0 abc abc 後 10 20 120 abc abc
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 function run() { 08 let str = "1 次元配列\n"; 09 let a2 = new Array(1, 2, 3, 0); 10 str += " 前 " + a2[0] + " " + a2[1] + " " + a2[2] + " " + a2[3] + "\n"; 11 func2(3, a2); 12 str += " 後 " + a2[0] + " " + a2[1] + " " + a2[2] + " " + a2[3] + "\n"; 13 // 結果の設定 14 document.getElementById("tx").value = str; 15 } 16 17 /************************/ 18 /* 1 次元配列の要素の和 */ 19 /* n : 要素数 */ 20 /* u : 配列 */ 21 /************************/ 22 function func2(n, u) 23 { 24 for (let i1 = 0; i1 < n; i1++) 25 u[n] += u[i1]; 26 } 27 </SCRIPT> 28 </HEAD> 29 <BODY STYLE="font-size:130%"> 30 <P STYLE="text-align:center"> 31 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 32 <TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 33 </P> 34 </BODY> 35 </HTML>
1 次元配列 前 1 2 3 0 後 1 2 3 6
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 function run() { 08 str = "2 次元配列\n"; 09 let a3 = new Array(2); 10 a3[0] = new Array(1, 2, 3, 0); 11 a3[1] = new Array(4, 5, 6, 0); 12 str += " 前 " + a3[0][0] + " " + a3[0][1] + " " + a3[0][2] + " " + a3[0][3] + "\n"; 13 str += " " + a3[1][0] + " " + a3[1][1] + " " + a3[1][2] + " " + a3[1][3] + "\n"; 14 func3(2, 3, a3); 15 str += " 後 " + a3[0][0] + " " + a3[0][1] + " " + a3[0][2] + " " + a3[0][3] + "\n"; 16 str += " " + a3[1][0] + " " + a3[1][1] + " " + a3[1][2] + " " + a3[1][3] + "\n"; 17 // 結果の設定 18 document.getElementById("tx").value = str; 19 } 20 21 /************************/ 22 /* 2 次元配列の要素の和 */ 23 /* n : 行数 */ 24 /* m : 列数 */ 25 /* u : 配列 */ 26 /************************/ 27 function func3(n, m, u) 28 { 29 for (let i1 = 0; i1 < n; i1++) { 30 for (let i2 = 0; i2 < m; i2++) 31 u[i1][m] += u[i1][i2]; 32 } 33 } 34 </SCRIPT> 35 </HEAD> 36 <BODY STYLE="font-size:130%"> 37 <P STYLE="text-align:center"> 38 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 39 <TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 40 </P> 41 </BODY> 42 </HTML>
2 次元配列 前 1 2 3 0 4 5 6 0 後 1 2 3 6 4 5 6 15
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 function run() { 08 let str = "オブジェクト\n"; 09 let a4 = new Example(); 10 str += " 前 x " + a4.x + " y " + a4.y[0] + " " + a4.y[1] + " " + a4.y[2] + "\n"; 11 func4(a4); 12 str += " 後 x " + a4.x + " y " + a4.y[0] + " " + a4.y[1] + " " + a4.y[2] + "\n"; 13 // 結果の設定 14 document.getElementById("tx").value = str; 15 } 16 17 /************************/ 18 /* オブジェクト Example */ 19 /************************/ 20 function Example() 21 { 22 this.x = 1; 23 this.y = new Array(10, 20, 30); 24 } 25 26 /*************************/ 27 /* オブジェクトの値変更 */ 28 /* a : オブジェクト */ 29 /*************************/ 30 function func4(a) 31 { 32 a.x = 2; 33 a.y[0] = 40; 34 } 35 </SCRIPT> 36 </HEAD> 37 <BODY STYLE="font-size:130%"> 38 <P STYLE="text-align:center"> 39 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 40 <TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 41 </P> 42 </BODY> 43 </HTML>
オブジェクト 前 x 1 y 10 20 30 後 x 2 y 40 20 30
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 function run() { 08 let str = "関数名(sort)\n"; 09 let a7 = new Array(3, 2, 5, 4, 1); 10 let a8 = new Array(3, 2, 5, 4, 1); 11 str += " 前 " + a7[0] + " " + a7[1] + " " + a7[2] + " " + a7[3] + " " + a7[4] + "\n"; 12 str += " 前 " + a8[0] + " " + a8[1] + " " + a8[2] + " " + a8[3] + " " + a8[4] + "\n"; 13 func5(5, a7, ascend); // 昇順 14 func5(5, a8, descend); // 降順 15 str += " 後 " + a7[0] + " " + a7[1] + " " + a7[2] + " " + a7[3] + " " + a7[4] + "\n"; 16 str += " 後 " + a8[0] + " " + a8[1] + " " + a8[2] + " " + a8[3] + " " + a8[4] + "\n"; 17 // 結果の設定 18 document.getElementById("tx").value = str; 19 } 20 21 /*****************************/ 22 /* データの比較(昇順) */ 23 /* a > bの場合に0以外(真) */ 24 /*****************************/ 25 function ascend(a, b) 26 { 27 return a > b; 28 } 29 30 /*****************************/ 31 /* データの比較(降順) */ 32 /* a < bの場合に0以外(真) */ 33 /*****************************/ 34 function descend(a, b) 35 { 36 return a < b; 37 } 38 39 /*****************************************************************/ 40 /* バブルソート */ 41 /* n : データの数 */ 42 /* data : データ */ 43 /* compare : 比較を行う関数 */ 44 /* バブルソートの手順 */ 45 /* 1)配列data[i]にn個のデータが入っているものとする. */ 46 /* i=0,1,・・・,n-1 */ 47 /* 2)i番目のデータとi+1番目のデータを比較し,もし, */ 48 /* data[i+1] < data[i] (昇順の場合) */ 49 /* であればそれらのデータを交換する. i=0,1,・・・,n-2 */ 50 /* →この結果,data[n-1]に最も大きなデータが入る */ 51 /* ことになる */ 52 /* 3)次に,n-1個のデータに対し上の処理を繰り返す. */ 53 /* 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 */ 54 /* を繰り返す */ 55 /*****************************************************************/ 56 function func5(n, data, compare) 57 { 58 let sw = 0; 59 60 if (n > 1) { 61 for (let i1 = 0; i1 < n-1; i1++) { 62 if (compare(data[i1], data[i1+1])) { 63 sw = 1; 64 let x = data[i1]; 65 data[i1] = data[i1+1]; 66 data[i1+1] = x; 67 } 68 } 69 } 70 71 if (sw > 0) 72 func5(n-1, data, compare); 73 } 74 </SCRIPT> 75 </HEAD> 76 <BODY STYLE="font-size:130%"> 77 <P STYLE="text-align:center"> 78 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 79 <TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 80 </P> 81 </BODY> 82 </HTML>
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <SCRIPT TYPE="text/javascript"> 07 function run() { 08 let str = "関数名(Newton 法)\n"; 09 let eps1 = 1.0e-7; 10 let eps2 = 1.0e-10; 11 let x0 = 0.0; 12 let max = 20; 13 let ind = new Array(1); 14 let x = func6(snx, dsnx, x0, eps1, eps2, max, ind); 15 str += " 回数=" + ind[0] + " x=" + x + " 関数値=" + snx(x) + " 微係数=" + dsnx(x) + "\n"; 16 // 結果の設定 17 document.getElementById("tx").value = str; 18 } 19 20 /************************/ 21 /* 関数値(f(x))の計算 */ 22 /************************/ 23 function snx(x) 24 { 25 let y = Math.exp(x) - 3.0 * x; 26 return y; 27 } 28 29 /********************/ 30 /* 関数の微分の計算 */ 31 /********************/ 32 function dsnx(x) 33 { 34 let y = Math.exp(x) - 3.0; 35 return y; 36 } 37 38 /*****************************************************/ 39 /* Newton法による非線形方程式(f(x)=0)の解 */ 40 /* fn : f(x)を計算する関数名 */ 41 /* dfn : f(x)の微分を計算する関数名 */ 42 /* x0 : 初期値 */ 43 /* eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) */ 44 /* eps2 : 終了条件2(|f(x(k))|<eps2) */ 45 /* max : 最大試行回数 */ 46 /* ind : 実際の試行回数 */ 47 /* (負の時は解を得ることができなかった) */ 48 /* return : 解 */ 49 /*****************************************************/ 50 function func6(f, df, x0, eps1, eps2, max, ind) 51 { 52 let x = x0, x1 = x0, sw = 0; 53 ind[0] = 0; 54 55 while (sw == 0 && ind[0] >= 0) { 56 sw = 1; 57 ind[0] += 1; 58 let g = f(x1); 59 if (Math.abs(g) > eps2) { 60 if (ind[0] <= max) { 61 let dg = df(x1); 62 if (Math.abs(dg) > eps2) { 63 x = x1 - g / dg; 64 if (Math.abs(x-x1) > eps1 && Math.abs(x-x1) > eps1*Math.abs(x)) { 65 x1 = x; 66 sw = 0; 67 } 68 } 69 else 70 ind[0] = -1; 71 } 72 else 73 ind[0] = -1; 74 } 75 } 76 77 return x; 78 } 79 </SCRIPT> 80 </HEAD> 81 <BODY STYLE="font-size:130%"> 82 <P STYLE="text-align:center"> 83 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 84 <TEXTAREA TYPE="text" ID="tx" COLS="50" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 85 </P> 86 </BODY> 87 </HTML>
関数名(Newton 法) 回数=5 x=0.6190612867359452 関数値=-2.220446049250313e-16 微係数=-1.1428161397921645
01 <?php 02 printf("基本型,文字列\n"); 03 $a1 = 10; 04 $b1 = 20; 05 $c1 = 0; 06 $d1 = 0; 07 $s1 = "abc"; 08 printf(" 前 %d %d %d %d %s\n", $a1, $b1, $c1, $d1, $s1); 09 $c1 = func1($a1, $b1, $d1, $s1); 10 printf(" 後 %d %d %d %d %s\n", $a1, $b1, $c1, $d1, $s1); 11 12 /************************************/ 13 /* 2 つの整数の和 */ 14 /* $u, $v : 和を計算するデータ */ 15 /* $w : $u + $v */ 16 /* $t1 : 文字列 */ 17 /* return : $u + $v */ 18 /************************************/ 19 function func1($u, $v, &$w, $t1) 20 { 21 $t1 = str_replace("a", "x", $t1); 22 $u = 100; 23 $a = $u + $v; 24 $w = $a; 25 return $a; 26 } 27 ?>
基本型,文字列 前 10 20 0 0 abc 後 10 20 120 120 abc
01 <?php 02 printf("1 次元配列\n"); 03 $a2 = array(1, 2, 3, 0); 04 $b2 = $a2; // $b2 は,$a2 と異なる配列となる 05 printf(" 前 a2 %d %d %d %d\n", $a2[0], $a2[1], $a2[2], $a2[3]); 06 printf(" b2 %d %d %d %d\n", $b2[0], $b2[1], $b2[2], $b2[3]); 07 $x = func2(3, $a2, $b2); 08 printf(" 後 a2 %d %d %d %d %d\n", $a2[0], $a2[1], $a2[2], $a2[3], $x); 09 printf(" b2 %d %d %d %d\n", $b2[0], $b2[1], $b2[2], $b2[3]); 10 11 /************************/ 12 /* 1 次元配列の要素の和 */ 13 /* $n : 要素数 */ 14 /* $u,$w : 配列 */ 15 /* return : 和 */ 16 /************************/ 17 function func2($n, $u, &$w) 18 { 19 for ($i1 = 0; $i1 < $n; $i1++) { 20 $u[$n] += $u[$i1]; 21 $w[$n] += $w[$i1]; 22 } 23 return $u[$n]; 24 } 25 ?>
1 次元配列 前 a2 1 2 3 0 b2 1 2 3 0 後 a2 1 2 3 0 6 b2 1 2 3 6
01 <?php 02 printf("2 次元配列\n"); 03 $a3 = array(2); 04 $a3[0] = array(1, 2, 3, 0); 05 $a3[1] = array(4, 5, 6, 0); 06 printf(" 前 %d %d %d %d\n", $a3[0][0], $a3[0][1], $a3[0][2], $a3[0][3]); 07 printf(" %d %d %d %d\n", $a3[1][0], $a3[1][1], $a3[1][2], $a3[1][3]); 08 $c3 = func3(2, 3, $a3); 09 printf(" 後 %d %d %d %d\n", $a3[0][0], $a3[0][1], $a3[0][2], $a3[0][3]); 10 printf(" %d %d %d %d\n", $a3[1][0], $a3[1][1], $a3[1][2], $a3[1][3]); 11 12 /************************/ 13 /* 2 次元配列の要素の和 */ 14 /* $n : 行数 */ 15 /* $m : 列数 */ 16 /* $u : 配列 */ 17 /************************/ 18 function func3($n, $m, &$u) 19 { 20 for ($i1 = 0; $i1 < $n; $i1++) { 21 for ($i2 = 0; $i2 < $m; $i2++) 22 $u[$i1][$m] += $u[$i1][$i2]; 23 } 24 } 25 ?>
2 次元配列 前 1 2 3 0 4 5 6 0 後 1 2 3 6 4 5 6 15
01 <?php 02 printf("オブジェクト\n"); 03 $a4 = new Example(1); 04 $a5 = new Example(1); 05 printf(" 前 a4 n %d\n", $a4->n); 06 printf(" x %d %d %d\n", $a4->x[0], $a4->x[1], $a4->x[2]); 07 printf(" 前 a5 n %d\n", $a5->n); 08 printf(" x %d %d %d\n", $a5->x[0], $a5->x[1], $a5->x[2]); 09 func4($a4, $a5); 10 printf(" 後 a4 n %d\n", $a4->n); 11 printf(" x %d %d %d\n", $a4->x[0], $a4->x[1], $a4->x[2]); 12 printf(" 後 a5 n %d\n", $a5->n); 13 printf(" x %d %d %d\n", $a5->x[0], $a5->x[1], $a5->x[2]); 14 15 /******************/ 16 /* クラス Example */ 17 /******************/ 18 class Example { 19 public $n; 20 public $x; 21 function Example($n) 22 { 23 $this->n = $n; 24 $this->x = array(1, 2, 3); 25 } 26 } 27 28 /************************/ 29 /* オブジェクトの値変更 */ 30 /* x1 : コピー */ 31 /* x2 : 参照 */ 32 /************************/ 33 function func4($x1, &$x2) 34 { 35 $x1->n = 2; 36 $x2->n = 3; 37 $x1->x[0] = 4; 38 $x2->x[0] = 5; 39 } 40 ?>
オブジェクト 前 a4 n 1 x 1 2 3 前 a5 n 1 x 1 2 3 後 a4 n 2 x 4 2 3 後 a5 n 3 x 5 2 3
01 <?php 02 printf("関数名(sort)\n"); 03 $a7 = array(3, 2, 5, 4, 1); 04 $a8 = array(3, 2, 5, 4, 1); 05 printf(" 前 %d %d %d %d %d\n", $a7[0], $a7[1], $a7[2], $a7[3], $a7[4]); 06 printf(" 前 %d %d %d %d %d\n", $a8[0], $a8[1], $a8[2], $a8[3], $a8[4]); 07 func5(5, $a7, "ascend"); // 昇順 08 func5(5, $a8, "descend"); // 降順 09 printf(" 後 %d %d %d %d %d\n", $a7[0], $a7[1], $a7[2], $a7[3], $a7[4]); 10 printf(" 後 %d %d %d %d %d\n", $a8[0], $a8[1], $a8[2], $a8[3], $a8[4]); 11 12 /*****************************/ 13 /* データの比較(昇順) */ 14 /* a > bの場合に0以外(真) */ 15 /*****************************/ 16 function ascend($a, $b) 17 { 18 return $a > $b; 19 } 20 21 /*****************************/ 22 /* データの比較(降順) */ 23 /* a < bの場合に0以外(真) */ 24 /*****************************/ 25 function descend($a, $b) 26 { 27 return $a < $b; 28 } 29 30 /*****************************************************************/ 31 /* バブルソート */ 32 /* n : データの数 */ 33 /* data : データ */ 34 /* compare : 比較を行う関数 */ 35 /* バブルソートの手順 */ 36 /* 1)配列data[i]にn個のデータが入っているものとする. */ 37 /* i=0,1,・・・,n-1 */ 38 /* 2)i番目のデータとi+1番目のデータを比較し,もし, */ 39 /* data[i+1] < data[i] (昇順の場合) */ 40 /* であればそれらのデータを交換する. i=0,1,・・・,n-2 */ 41 /* →この結果,data[n-1]に最も大きなデータが入る */ 42 /* ことになる */ 43 /* 3)次に,n-1個のデータに対し上の処理を繰り返す. */ 44 /* 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 */ 45 /* を繰り返す */ 46 /*****************************************************************/ 47 function func5($n, &$data, $compare) 48 { 49 $sw = 0; 50 51 if ($n > 1) { 52 for ($i1 = 0; $i1 < $n-1; $i1++) { 53 if ($compare($data[$i1], $data[$i1+1])) { 54 $sw = 1; 55 $x = $data[$i1]; 56 $data[$i1] = $data[$i1+1]; 57 $data[$i1+1] = $x; 58 } 59 } 60 } 61 62 if ($sw > 0) 63 func5($n-1, $data, $compare); 64 } 65 ?>
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 <?php 02 printf("関数名(Newton 法)\n"); 03 $eps1 = 1.0e-7; 04 $eps2 = 1.0e-10; 05 $x0 = 0.0; 06 $max = 20; 07 $ind = 0; 08 $x = func6("snx", "dsnx", $x0, $eps1, $eps2, $max, $ind); 09 printf(" 回数=%d x=%f 関数値=%f 微係数=%f\n", $ind, $x, snx($x), dsnx($x)); 10 11 /************************/ 12 /* 関数値(f(x))の計算 */ 13 /************************/ 14 function snx($x) 15 { 16 $y = exp($x) - 3.0 * $x; 17 return $y; 18 } 19 20 /********************/ 21 /* 関数の微分の計算 */ 22 /********************/ 23 function dsnx($x) 24 { 25 $y = exp($x) - 3.0; 26 return $y; 27 } 28 29 /*****************************************************/ 30 /* Newton法による非線形方程式(f(x)=0)の解 */ 31 /* fn : f(x)を計算する関数名 */ 32 /* dfn : f(x)の微分を計算する関数名 */ 33 /* x0 : 初期値 */ 34 /* eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) */ 35 /* eps2 : 終了条件2(|f(x(k))|<eps2) */ 36 /* max : 最大試行回数 */ 37 /* ind : 実際の試行回数 */ 38 /* (負の時は解を得ることができなかった) */ 39 /* return : 解 */ 40 /*****************************************************/ 41 function func6($f, $df, $x0, $eps1, $eps2, $max, &$ind) 42 { 43 $x = $x0; 44 $x1 = $x0; 45 $sw = 0; 46 $ind = 0; 47 48 while ($sw == 0 && $ind >= 0) { 49 $sw = 1; 50 $ind += 1; 51 $g = $f($x1); 52 if (abs($g) > $eps2) { 53 if ($ind <= $max) { 54 $dg = $df($x1); 55 if (abs($dg) > $eps2) { 56 $x = $x1 - $g / $dg; 57 if (abs($x-$x1) > $eps1 && abs($x-$x1) > $eps1*abs($x)) { 58 $x1 = $x; 59 $sw = 0; 60 } 61 } 62 else 63 $ind = -1; 64 } 65 else 66 $ind = -1; 67 } 68 } 69 70 return $x; 71 } 72 ?>
関数名(Newton 法) 回数=5 x=0.619061 関数値=-0.000000 微係数=-1.142816
01 ################################## 02 # 2 つの整数の和 # 03 # u, v : 和を計算するデータ # 04 # t1, t2, t3, t4 : 文字列 # 05 # return : u + v # 06 ################################## 07 def func1(u, v, t1, t2, t3, t4) 08 t1[0..0] = "x"; 09 t2[0..0] = "x"; 10 t3 = "ybc"; 11 t4 = "ybc"; 12 u = 100; 13 a = u + v; 14 return a; 15 end 16 17 printf("基本型,文字列\n"); 18 a1 = 10; 19 b1 = 20; 20 c1 = 0; 21 s1 = "abc"; 22 s2 = String.new("abc"); 23 s3 = "abc"; 25 s4 = String.new("abc"); 26 printf(" 前 %d %d %d %s %s %s %s\n", a1, b1, c1, s1, s2, s3, s4); 27 c1 = func1(a1, b1, s1, s2, s3, s4); 28 printf(" 前 %d %d %d %s %s %s %s\n", a1, b1, c1, s1, s2, s3, s4);
基本型,文字列 前 10 20 0 abc abc abc abc 前 10 20 120 xbc xbc abc abc
01 ######################## 02 # 1 次元配列の要素の和 # 03 # n : 要素数 # 04 # u, v : 配列 # 05 ######################## 06 def func2(n, u) 07 for i1 in 0 ... n 08 u[n] += u[i1]; 09 end 10 end 11 12 printf("1 次元配列\n"); 13 a2 = [1, 2, 3, 0]; # a2 = Array[1, 2, 3, 0]; でも可 14 printf(" 前 %d %d %d %d\n", a2[0], a2[1], a2[2], a2[3]); 15 func2(3, a2); 16 printf(" 後 %d %d %d %d\n", a2[0], a2[1], a2[2], a2[3]);
1 次元配列 前 1 2 3 0 後 1 2 3 6
01 ######################## 02 # 2 次元配列の要素の和 # 03 # n : 行数 # 04 # m : 列数 # 05 # u : 配列 # 06 ######################## 07 def func3(n, m, u) 08 for i1 in 0 ... n 09 for i2 in 0 ... m 10 u[i1][m] += u[i1][i2]; 11 end 12 end 13 end 14 15 printf("2 次元配列\n"); 16 a3 = Array[[1, 2, 3, 0], [4, 5, 6, 0]]; 17 printf(" 前 %d %d %d %d\n", a3[0][0], a3[0][1], a3[0][2], a3[0][3]); 18 printf(" %d %d %d %d\n", a3[1][0], a3[1][1], a3[1][2], a3[1][3]); 19 func3(2, 3, a3); 20 printf(" 後 %d %d %d %d\n", a3[0][0], a3[0][1], a3[0][2], a3[0][3]); 21 printf(" %d %d %d %d\n", a3[1][0], a3[1][1], a3[1][2], a3[1][3]);
2 次元配列 前 1 2 3 0 4 5 6 0 後 1 2 3 6 4 5 6 15
01 ################## 02 # クラス Example # 03 ################## 04 class Example 05 def initialize(n) 06 @_n = n; 07 @_x = [1, 2, 3]; 08 end 09 attr_accessor("_n", "_x"); 10 end 11 12 ######################## 13 # オブジェクトの値変更 # 14 # x1 : コピー # 15 ######################## 16 def func4(x1) 17 x1._n = 4; 18 x1._x[0] = 5; 19 end 20 21 printf("オブジェクト\n"); 22 a4 = Example.new(1); 23 printf(" 前 n %d\n", a4._n); 24 printf(" x %d %d %d\n", a4._x[0], a4._x[1], a4._x[2]); 25 func4(a4); 26 printf(" 後 n %d\n", a4._n); 27 printf(" x %d %d %d\n", a4._x[0], a4._x[1], a4._x[2]);
オブジェクト 前 n 1 x 1 2 3 後 n 4 x 5 2 3
01 ############################# 02 # データの比較(昇順) # 03 # a > bの場合に0以外(真) # 04 ############################# 05 ascend = Proc.new { |a, b| a > b } 06 07 ############################# 08 # データの比較(降順) # 09 # a < bの場合に0以外(真) # 10 ############################# 11 descend = Proc.new { |a, b| 12 a < b; 13 } 14 15 ################################################################# 16 # バブルソート # 17 # n : データの数 # 18 # data : データ # 19 # compare : 比較を行う関数 # 20 # バブルソートの手順 # 21 # 1)配列data[i]にn個のデータが入っているものとする. # 22 # i=0,1,・・・,n-1 # 23 # 2)i番目のデータとi+1番目のデータを比較し,もし, # 24 # data[i+1] < data[i] (昇順の場合) # 25 # であればそれらのデータを交換する. i=0,1,・・・,n-2 # 26 # →この結果,data[n-1]に最も大きなデータが入る # 27 # ことになる # 28 # 3)次に,n-1個のデータに対し上の処理を繰り返す. # 29 # 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 # 30 # を繰り返す # 31 ################################################################# 32 def func5(n, data, &compare) 33 sw = 0; 34 35 if n > 1 then 36 i1 = 0; 37 while i1 < n-1 do 38 if compare.call(data[i1], data[i1+1]) then 39 sw = 1; 40 x = data[i1]; 41 data[i1] = data[i1+1]; 42 data[i1+1] = x; 43 end 44 i1 += 1; 45 end 46 end 47 48 if sw > 0 then 49 func5(n-1, data, &compare); 50 end 51 end 52 53 printf("関数名(sort)\n"); 54 a7 = Array[3, 2, 5, 4, 1]; 55 a8 = Array[3, 2, 5, 4, 1]; 56 printf(" 前 %d %d %d %d %d\n", a7[0], a7[1], a7[2], a7[3], a7[4]); 57 printf(" 前 %d %d %d %d %d\n", a8[0], a8[1], a8[2], a8[3], a8[4]); 58 func5(5, a7, &ascend); # 昇順 59 #func5(5, a7) { |a, b| a > b } # 昇順 60 #func5(5, a7) do |a, b| a > b end # 昇順 61 func5(5, a8, &descend); # 降順 62 printf(" 後 %d %d %d %d %d\n", a7[0], a7[1], a7[2], a7[3], a7[4]); 63 printf(" 後 %d %d %d %d %d\n", a8[0], a8[1], a8[2], a8[3], a8[4]);
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 ###################### 02 # 関数値と微分の計算 # 03 ###################### 04 snx = Proc.new { |sw, x| 05 if sw == 0 then 06 Math.exp(x) - 3.0 * x; 07 else 08 Math.exp(x) - 3.0; 09 end 10 } 11 12 ##################################################### 13 # Newton法による非線形方程式(f(x)=0)の解 # 14 # x0 : 初期値 # 15 # eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) # 16 # eps2 : 終了条件2(|f(x(k))|<eps2) # 17 # max : 最大試行回数 # 18 # ind : 実際の試行回数 # 19 # (負の時は解を得ることができなかった) # 20 # fn : f(x)を計算する関数名 # 21 # dfn : f(x)の微分を計算する関数名 # 22 # return : 解 # 23 ##################################################### 24 def func6(x0, eps1, eps2, max, ind, &f) 25 x = x0; 26 x1 = x0; 27 sw = 0; 28 ind[0] = 0; 29 30 while sw == 0 && ind[0] >= 0 do 31 sw = 1; 32 ind[0] += 1; 33 g = f.call(0, x1); 34 if g.abs() > eps2 then 35 if ind[0] <= max then 36 dg = f.call(1, x1); 37 if dg.abs() > eps2 then 38 x = x1 - g / dg; 39 if (x-x1).abs() > eps1 && (x-x1).abs() > eps1*x.abs() then 40 x1 = x; 41 sw = 0; 42 end 43 else 44 ind[0] = -1; 45 end 46 else 47 ind[0] = -1; 48 end 49 end 50 end 51 52 return x; 53 end 54 55 printf("関数名(Newton 法)\n"); 56 eps1 = 1.0e-7; 57 eps2 = 1.0e-10; 58 x0 = 0.0; 59 max = 20; 60 ind = [0]; 61 x = func6(x0, eps1, eps2, max, ind, &snx); 62 printf(" 回数=%d x=%f 関数値=%f 微係数=%f\n", ind[0], x, snx.call(0, x), snx.call(1, x));
関数名(Newton 法) 回数=5 x=0.619061 関数値=-0.000000 微係数=-1.142816
01 # -*- coding: UTF-8 -*- 02 03 ################################## 04 # 2 つの整数の和 # 05 # u, v : 和を計算するデータ # 06 # t : 文字列 # 07 # return : u + v # 08 ################################## 09 def func1(u, v, t) : 10 t = t.replace("a", "x") 11 u = 100 12 a = u + v 13 return a 14 15 print("基本型,文字列") 16 a1 = 10 17 b1 = 20 18 c1 = 0 19 s1 = "abc" 20 print(" 前", a1, b1, c1, s1) 21 c1 = func1(a1, b1, s1) 22 print(" 後", a1, b1, c1, s1)
基本型,文字列 前 10 20 0 abc 後 10 20 120 abc
01 # -*- coding: UTF-8 -*- 02 import numpy as np 03 04 ######################## 05 # 1 次元配列の要素の和 # 06 # n : 要素数 # 07 # u, v : 配列 # 08 ######################## 09 def func2(n, u, v) : 10 for i1 in range(0, n) : 11 u[n] += u[i1] 12 v[n] += v[i1] 13 14 print("1 次元配列") 15 a2 = [1, 2, 3, 0] 16 b2 = np.array([1, 2, 3, 0]) 17 print(" 前 a2", a2[0], a2[1], a2[2], a2[3]) 18 print(" b2", b2[0], b2[1], b2[2], b2[3]) 19 func2(3, a2, b2) 20 print(" 後 a2", a2[0], a2[1], a2[2], a2[3]) 21 print(" b2", b2[0], b2[1], b2[2], b2[3])
1 次元配列 前 a2 1 2 3 0 b2 1 2 3 0 後 a2 1 2 3 6 b2 1 2 3 6
01 # -*- coding: UTF-8 -*- 02 03 ######################## 04 # 2 次元配列の要素の和 # 05 # n : 行数 # 06 # m : 列数 # 07 # u : 配列 # 08 ######################## 09 def func3(n, m, u) : 10 for i1 in range(0, n) : 11 for i2 in range(0, m) : 12 u[i1][m] += u[i1][i2]; 13 14 print("2 次元配列") 15 a3 = [[1, 2, 3, 0], [4, 5, 6, 0]] 16 print(" 前", a3[0][0], a3[0][1], a3[0][2], a3[0][3]) 17 print(" ", a3[1][0], a3[1][1], a3[1][2], a3[1][3]) 18 func3(2, 3, a3); 19 print(" 後", a3[0][0], a3[0][1], a3[0][2], a3[0][3]) 20 print(" ", a3[1][0], a3[1][1], a3[1][2], a3[1][3])
2 次元配列 前 1 2 3 0 4 5 6 0 後 1 2 3 6 4 5 6 15
01 # -*- coding: UTF-8 -*- 02 03 ################## 04 # クラス Example # 05 ################## 06 class Example : 07 def init(self, n) : 08 self.n = n 09 self.x = [1, 2, 3] 10 11 ########################## 12 # オブジェクトの値変更 # 13 # x1 : オブジェクト # 14 ########################## 15 def func4(x1) : 16 x1.n = 4 17 x1.x[0] = 5 18 19 print("オブジェクト") 20 a4 = Example() 21 a4.init(1) 22 print(" 前 n", a4.n) 23 print(" x ", a4.x[0], a4.x[1], a4.x[2]) 24 func4(a4) 25 print(" 後 n", a4.n) 26 print(" x ", a4.x[0], a4.x[1], a4.x[2])
オブジェクト 前 n 1 x 1 2 3 後 n 4 x 5 2 3
01 # -*- coding: UTF-8 -*- 02 03 ######################## 04 # データの比較(昇順) # 05 # a > bの場合に真 # 06 ######################## 07 def ascend(a, b) : 08 tf = False 09 if a > b : 10 tf = True 11 return tf 12 13 ######################## 14 # データの比較(降順) # 15 # a < bの場合に真 # 16 ######################## 17 def descend(a, b) : 18 tf = False 19 if a < b : 20 tf = True 21 return tf 22 23 ################################################################# 24 # バブルソート # 25 # n : データの数 # 26 # data : データ # 27 # compare : 比較を行う関数 # 28 # バブルソートの手順 # 29 # 1)配列data[i]にn個のデータが入っているものとする. # 30 # i=0,1,・・・,n-1 # 31 # 2)i番目のデータとi+1番目のデータを比較し,もし, # 32 # data[i+1] < data[i] (昇順の場合) # 33 # であればそれらのデータを交換する. i=0,1,・・・,n-2 # 34 # →この結果,data[n-1]に最も大きなデータが入る # 35 # ことになる # 36 # 3)次に,n-1個のデータに対し上の処理を繰り返す. # 37 # 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 # 38 # を繰り返す # 39 ################################################################# 40 def func5(n, data, compare) : 41 sw = 0; 42 43 if n > 1 : 44 for i1 in range(0, n-1) : 45 if compare(data[i1], data[i1+1]) : 46 sw = 1 47 x = data[i1] 48 data[i1] = data[i1+1] 49 data[i1+1] = x 50 51 if sw > 0 : 52 func5(n-1, data, compare) 53 54 print("関数名(sort)") 55 a7 = [3, 2, 5, 4, 1] 56 a8 = [3, 2, 5, 4, 1] 57 print(" 前", a7[0], a7[1], a7[2], a7[3], a7[4]) 58 print(" 前", a8[0], a8[1], a8[2], a8[3], a8[4]) 59 func5(5, a7, ascend) # 昇順 60 func5(5, a8, descend) # 降順 61 print(" 後", a7[0], a7[1], a7[2], a7[3], a7[4]) 62 print(" 後", a8[0], a8[1], a8[2], a8[3], a8[4])
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 # -*- coding: UTF-8 -*- 02 from math import * 03 04 ######################## 05 # 関数値(f(x))の計算 # 06 ######################## 07 def snx(x) : 08 return exp(x) - 3.0 * x 09 10 #################### 11 # 関数の微分の計算 # 12 #################### 13 def dsnx(x) : 14 return exp(x) - 3.0 15 16 ##################################################### 17 # Newton法による非線形方程式(f(x)=0)の解 # 18 # fn : f(x)を計算する関数名 # 19 # dfn : f(x)の微分を計算する関数名 # 20 # x0 : 初期値 # 21 # eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) # 22 # eps2 : 終了条件2(|f(x(k))|<eps2) # 23 # max : 最大試行回数 # 24 # ind : 実際の試行回数 # 25 # (負の時は解を得ることができなかった) # 26 # return : 解 # 27 ##################################################### 28 def func6(f, df, x0, eps1, eps2, max, ind) : 29 x = x0 30 x1 = x0 31 sw = 0 32 ind[0] = 0 33 34 while sw == 0 and ind[0] >= 0 : 35 sw = 1 36 ind[0] += 1 37 g = f(x1) 38 if abs(g) > eps2 : 39 if ind[0] <= max : 40 dg = df(x1); 41 if abs(dg) > eps2 : 42 x = x1 - g / dg 43 if abs(x-x1) > eps1 and abs(x-x1) > eps1*abs(x) : 44 x1 = x 45 sw = 0 46 else : 47 ind[0] = -1 48 else : 49 ind[0] = -1 50 51 return x 52 53 print("関数名(Newton 法)") 54 eps1 = 1.0e-7 55 eps2 = 1.0e-10 56 x0 = 0.0 57 max = 20 58 ind = [0] 59 x = func6(snx, dsnx, x0, eps1, eps2, max, ind) 60 print(" 回数=", ind[0], "x=", x, "関数値=", snx(x), "微係数=", dsnx(x))
関数名(Newton 法) 回数= 5 x= 0.6190612867359452 関数値= -2.220446049250313e-16 微係数= -1.1428161397921646
01 using System; 02 03 class Program 04 { 05 static void Main() 06 { 07 Test1 ts = new Test1(); 08 } 09 } 10 11 class Test1 12 { 13 public Test1() 14 { 15 Console.WriteLine("基本型,文字列"); 16 int a1 = 10, b1 = 20, c1 = 0, d1 = 0; 17 string s1 = "abc", s2 = "abc"; 18 Console.WriteLine(" 前 " + a1 + " b1 " + b1 + " c1 " + c1 + " s1 " + s1 + " s2 " + s2); 19 d1 = func1(a1, b1, ref c1, s1, ref s2); 20 Console.WriteLine(" 前 " + a1 + " b1 " + b1 + " c1 " + c1 + " d1 " + d1 + " s1 " + s1 + " s2 " + s2); 21 } 22 23 /**********************************/ 24 /* 2 つの整数の和 */ 25 /* u, v : 和を計算するデータ */ 26 /* w : 結果 */ 27 /* t1, t2 : 文字列 */ 28 /* return : u + v */ 29 /**********************************/ 30 int func1(int u, int v, ref int w, string t1, ref string t2) 31 { 32 t1 = t1.ToUpper(); 33 t2 = t2.ToUpper(); 34 u = 100; 35 w = u + v; 36 return w; 37 } 38 }
基本型,文字列 前 10 b1 20 c1 0 s1 abc s2 abc 前 10 b1 20 c1 120 d1 120 s1 abc s2 ABC
01 using System; 02 using System.Collections.Generic; 03 04 class Program 05 { 06 static void Main() 07 { 08 Test1 ts = new Test1(); 09 } 10 } 11 12 class Test1 13 { 14 public Test1() 15 { 16 Console.WriteLine("1 次元配列"); 17 int[] a2 = {1, 2, 3, 0}; 18 Listb2 = new List (); 19 for (int i1 = 0; i1 < 3; i1++) 20 b2.Add(10 * (i1 + 1)); 21 b2.Add(0); 22 Console.WriteLine(" 前 a2 " + a2[0] + " " + a2[1] + " " + a2[2] + " " + a2[3]); 23 Console.WriteLine(" b2 " + b2[0] + " " + b2[1] + " " + b2[2] + " " + b2[3]); 24 func2(3, a2, b2); 25 Console.WriteLine(" 後 a2 " + a2[0] + " " + a2[1] + " " + a2[2] + " " + a2[3]); 26 Console.WriteLine(" b2 " + b2[0] + " " + b2[1] + " " + b2[2] + " " + b2[3]); 27 } 28 29 /************************/ 30 /* 1 次元配列の要素の和 */ 31 /* n : 要素数 */ 32 /* u : 配列 */ 33 /* w : List */ 34 /************************/ 35 void func2(int n, int[] u, List w) 36 { 37 int s = 0; 38 for (int i1 = 0; i1 < n; i1++) { 39 u[n] += u[i1]; 40 s += w[i1]; 41 } 42 w[n] = s; 43 } 44 }
1 次元配列 前 a2 1 2 3 0 b2 10 20 30 0 後 a2 1 2 3 6 b2 10 20 30 60
01 using System; 02 03 class Program 04 { 05 static void Main() 06 { 07 Test1 ts = new Test1(); 08 } 09 } 10 11 class Test1 12 { 13 public Test1() 14 { 15 Console.WriteLine("2 次元配列"); 16 int[][] a4 = new int[][] { 17 new int[] {1, 2, 3, 0}, 18 new int[] {4, 5, 6, 0} 19 }; 20 int[,] a5 = {{1, 2, 3, 0}, {4, 5, 6, 0}}; 21 Console.WriteLine(" 前 a4 " + a4[0][0] + " " + a4[0][1] + " " + a4[0][2] + " " + a4[0][3]); 22 Console.WriteLine(" " + a4[1][0] + " " + a4[1][1] + " " + a4[1][2] + " " + a4[1][3]); 23 func3(2, 3, a4); 24 Console.WriteLine(" 後 a4 " + a4[0][0] + " " + a4[0][1] + " " + a4[0][2] + " " + a4[0][3]); 25 Console.WriteLine(" " + a4[1][0] + " " + a4[1][1] + " " + a4[1][2] + " " + a4[1][3]); 26 Console.WriteLine(" 前 a5 " + a5[0,0] + " " + a5[0,1] + " " + a5[0,2] + " " + a5[0,3]); 27 Console.WriteLine(" " + a5[1,0] + " " + a5[1,1] + " " + a5[1,2] + " " + a5[1,3]); 28 func4(2, 3, a5); 29 Console.WriteLine(" 後 a5 " + a5[0,0] + " " + a5[0,1] + " " + a5[0,2] + " " + a5[0,3]); 30 Console.WriteLine(" " + a5[1,0] + " " + a5[1,1] + " " + a5[1,2] + " " + a5[1,3]); 31 } 32 33 /****************************/ 34 /* 2 次元配列の要素の和 */ 35 /* n : 行数 */ 36 /* m : 列数 */ 37 /* u : 配列 */ 38 /* u[i1][m] : 各行の和 */ 39 /****************************/ 40 void func3(int n, int m, int[][] u) 41 { 42 for (int i1 = 0; i1 < n; i1++) { 43 for (int i2 = 0; i2 < m; i2++) 44 u[i1][m] += u[i1][i2]; 45 } 46 } 47 48 /***************************/ 49 /* 2 次元配列の要素の和 */ 50 /* n : 行数 */ 51 /* m : 列数 */ 52 /* u : 配列 */ 53 /* u[i1,m] : 各行の和 */ 54 /***************************/ 55 void func4(int n, int m, int[,] u) 56 { 57 for (int i1 = 0; i1 < n; i1++) { 58 for (int i2 = 0; i2 < m; i2++) 59 u[i1,m] += u[i1,i2]; 60 } 61 } 62 }
2 次元配列 前 a4 1 2 3 0 4 5 6 0 後 a4 1 2 3 6 4 5 6 15 前 a5 1 2 3 0 4 5 6 0 後 a5 1 2 3 6 4 5 6 15
01 using System; 02 03 class Program 04 { 05 static void Main() 06 { 07 Test1 ts = new Test1(); 08 } 09 } 10 11 class Test1 12 { 13 public Test1() 14 { 15 Console.WriteLine("オブジェクト"); 16 Example a6 = new Example(3); 17 Console.WriteLine(" 前 n " + a6.n); 18 Console.WriteLine(" x " + " " + a6.x[0] + " " + a6.x[1] + " " + a6.x[2]); 19 func5(a6); 20 Console.WriteLine(" 前 n " + a6.n); 21 Console.WriteLine(" x " + " " + a6.x[0] + " " + a6.x[1] + " " + a6.x[2]); 22 } 23 24 /**************************/ 25 /* オブジェクトの値変更 */ 26 /* x1 : オブジェクト */ 27 /**************************/ 28 void func5(Example x1) 29 { 30 x1.n = 10; 31 x1.x[0] = 4; 32 } 33 } 34 35 /******************/ 36 /* クラス Example */ 37 /******************/ 38 class Example { 39 public int n; 40 public int[] x = {0, 1, 2}; 41 public Example(int n1) 42 { 43 n = n1; 44 } 45 }
オブジェクト 前 n 3 x 0 1 2 前 n 10 x 4 1 2
01 using System; 02 03 class Program 04 { 05 static void Main() 06 { 07 Test1 ts = new Test1(); 08 } 09 } 10 11 class Test1 12 { 13 public Test1() 14 { 15 Console.WriteLine("関数名(sort)"); 16 int[] a7 = {3, 2, 5, 4, 1}; 17 int[] a8 = {3, 2, 5, 4, 1}; 18 Console.WriteLine(" 前 " + a7[0] + " " + a7[1] + " " + a7[2] + " " + a7[3] + " " + a7[4]); 19 Console.WriteLine(" 前 " + a8[0] + " " + a8[1] + " " + a8[2] + " " + a8[3] + " " + a8[4]); 20 func6(5, a7, ascend); // 昇順 21 func6(5, a8, descend); // 降順 22 Console.WriteLine(" 後 " + a7[0] + " " + a7[1] + " " + a7[2] + " " + a7[3] + " " + a7[4]); 23 Console.WriteLine(" 後 " + a8[0] + " " + a8[1] + " " + a8[2] + " " + a8[3] + " " + a8[4]); 24 } 25 26 /*****************************/ 27 /* データの比較(昇順) */ 28 /* a > bの場合に0以外(真) */ 29 /*****************************/ 30 bool ascend(int a, int b) 31 { 32 return a > b; 33 } 34 35 /*****************************/ 36 /* データの比較(降順) */ 37 /* a < bの場合に0以外(真) */ 38 /*****************************/ 39 bool descend(int a, int b) 40 { 41 return a < b; 42 } 43 44 /***********************************/ 45 /* 2つのデータを交換する */ 46 /* a,b : 2つのデータ(参照) */ 47 /***********************************/ 48 void swap(ref int a, ref int b) 49 { 50 int temp = a; 51 a = b; 52 b = temp; 53 } 54 55 /*****************************************************************/ 56 /* バブルソート */ 57 /* n : データの数 */ 58 /* data : データ */ 59 /* compare : 比較を行う関数 */ 60 /* バブルソートの手順 */ 61 /* 1)配列data[i]にn個のデータが入っているものとする. */ 62 /* i=0,1,・・・,n-1 */ 63 /* 2)i番目のデータとi+1番目のデータを比較し,もし, */ 64 /* data[i+1] < data[i] (昇順の場合) */ 65 /* であればそれらのデータを交換する. i=0,1,・・・,n-2 */ 66 /* →この結果,data[n-1]に最も大きなデータが入る */ 67 /* ことになる */ 68 /* 3)次に,n-1個のデータに対し上の処理を繰り返す. */ 69 /* 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 */ 70 /* を繰り返す */ 71 /*****************************************************************/ 72 void func6(int n, int[] data, Func<int, int, bool> compare) 73 { 74 int sw = 0; 75 76 if (n > 1) { 77 for (int i1 = 0; i1 < n-1; i1++) { 78 if (compare(data[i1], data[i1+1])) { 79 sw = 1; 80 swap(ref data[i1], ref data[i1+1]); 81 } 82 } 83 } 84 85 if (sw > 0) 86 func6(n-1, data, compare); 87 } 88 }
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 using System; 02 03 class Program 04 { 05 static void Main() 06 { 07 Test1 ts = new Test1(); 08 } 09 } 10 11 class Test1 12 { 13 public Test1() 14 { 15 Console.WriteLine("関数名(Newton 法)"); 16 double eps1 = 1.0e-7; 17 double eps2 = 1.0e-10; 18 double x0 = 0.0; 19 int max = 20; 20 int ind = 0; 21 double x = func7(x0, eps1, eps2, max, ref ind, snx, 0.0, dsnx, 0.0); 22 Console.WriteLine(" 回数=" + ind + " x=" + x + " 関数値=" + snx(x) + " 微係数=" + dsnx(x)); 23 } 24 25 /************************/ 26 /* 関数値(f(x))の計算 */ 27 /************************/ 28 double snx(double x) 29 { 30 double y = Math.Exp(x) - 3.0 * x; 31 return y; 32 } 33 34 /********************/ 35 /* 関数の微分の計算 */ 36 /********************/ 37 double dsnx(double x) 38 { 39 double y = Math.Exp(x) - 3.0; 40 return y; 41 } 42 43 /*****************************************************/ 44 /* Newton法による非線形方程式(f(x)=0)の解 */ 45 /* x0 : 初期値 */ 46 /* eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) */ 47 /* eps2 : 終了条件2(|f(x(k))|<eps2) */ 48 /* max : 最大試行回数 */ 49 /* ind : 実際の試行回数(参照) */ 50 /* (負の時は解を得ることができなかった) */ 51 /* fn : f(x)を計算する関数名 */ 52 /* dfn : f(x)の微分を計算する関数名 */ 53 /* return : 解 */ 54 /*****************************************************/ 55 double func7(double x0, double eps1, double eps2, int max, ref int ind, 56 Funcfn, Func dfn) 57 { 58 double x = x0, x1 = x0; 59 int sw = 0; 60 ind = 0; 61 62 while (sw == 0 && ind >= 0) { 63 sw = 1; 64 ind += 1; 65 double g = fn(x1); 66 if (Math.Abs(g) > eps2) { 67 if (ind <= max) { 68 double dg = dfn(x1); 69 if (Math.Abs(dg) > eps2) { 70 x = x1 - g / dg; 71 if (Math.Abs(x-x1) > eps1 && Math.Abs(x-x1) > eps1*Math.Abs(x)) { 72 x1 = x; 73 sw = 0; 74 } 75 } 76 else 77 ind = -1; 78 } 79 else 80 ind = -1; 81 } 82 } 83 84 return x; 85 } 86 }
関数名(Newton 法) 回数=5 x=0.619061286735945 関数値=-2.22044604925031E-16 微係数=-1.14281613979216
01 Module Test 02 Sub Main() 03 Console.WriteLine("基本型,文字列") 04 DIm a1 As Integer = 10 05 DIm b1 As Integer = 20 06 DIm c1 As Integer = 0 07 DIm d1 As Integer = 0 08 DIm s1 As String = "abc" 09 DIm s2 As String = "abc" 10 Console.WriteLine(" 前 " & a1 & " b1 " & b1 & " c1 " & c1 & " s1 " & s1 & " s2 " & s2) 11 d1 = func1(a1, b1, c1, s1, s2) 12 ' func1(a1, b1, c1, s1, s2) 13 Console.WriteLine(" 後 " & a1 & " b1 " & b1 & " c1 " & c1 & " s1 " & s1 & " s2 " & s2 & " d1 " & d1) 14 End Sub 15 16 '''''''''''''''''''''''''''''''''' 17 ' 2 つの整数の和 ' 18 ' u, v : 和を計算するデータ ' 19 ' w : 結果 ' 20 ' t1, t2 : 文字列 ' 21 ' return : u + v ' 22 '''''''''''''''''''''''''''''''''' 23 Function func1(ByVal u As Integer, ByVal v As Integer, ByRef w As Integer, 24 ByVal t1 As String, ByRef t2 As String) As Integer 25 ' Function func1(u As Integer, v As Integer, ByRef w As Integer, 26 ' t1 As String, ByRef t2 As String) As Integer 27 ' Function func1(ByVal u As Integer, ByVal v As Integer, ByRef w As Integer, 28 ' ByVal t1 As String, ByRef t2 As String) 29 ' Sub func1(ByVal u As Integer, ByVal v As Integer, ByRef w As Integer, 30 ' ByVal t1 As String, ByRef t2 As String) 31 Dim a As Integer 32 u = 100 33 a = u + v 34 w = a 35 t1 = Replace(t1, "a", "x") 36 t2 = Replace(t2, "a", "x") 37 Return a ' 戻り値を指定しない場合は必要ないが警告が出力される 38 End Function 39 ' End Sub 40 End Module
Function ... ・・・・・ End Function
Sub ... ・・・・・ End Sub
基本型,文字列 前 10 b1 20 c1 0 s1 abc s2 abc 前 10 b1 20 c1 120 d1 120 s1 abc s2 ABC
01 Imports System.Collections.Generic 02 03 Module Test 04 Sub Main() 05 Console.WriteLine("1 次元配列") 06 DIm a2() As Integer = {1, 2, 3, 0} 07 Dim b2 As New List(Of Integer) 08 b2.Add(10) 09 b2.Add(20) 10 b2.Add(30) 11 b2.Add(0) 12 Console.WriteLine(" 前 a2 " & a2(0) & " " & a2(1) & " " & a2(2) & " " & a2(3)) 13 Console.WriteLine(" 前 b2 " & b2(0) & " " & b2(1) & " " & b2(2) & " " & b2(3)) 14 func2(4, a2, b2) 15 Console.WriteLine(" 後 a2 " & a2(0) & " " & a2(1) & " " & a2(2) & " " & a2(3)) 16 Console.WriteLine(" 後 b2 " & b2(0) & " " & b2(1) & " " & b2(2) & " " & b2(3)) 17 End Sub 18 19 '''''''''''''''''''''''' 20 ' 1 次元配列の要素の和 ' 21 ' n : 要素数 ' 22 ' u : 配列 ' 23 ' v : List ' 24 '''''''''''''''''''''''' 25 Sub func2(n As Integer, u() As Integer, v As List(Of Integer)) 26 ' Sub func2(n As Integer, ByVal u() As Integer, v As List(Of Integer)) 27 ' Sub func2(n As Integer, ByRef u() As Integer, v As List(Of Integer)) 28 For i1 As Integer = 0 To n-2 29 u(n-1) += u(i1) 30 v(n-1) += v(i1) 31 Next 32 End Sub 33 End Module
1 次元配列 前 a2 1 2 3 0 前 b2 10 20 30 0 後 a2 1 2 3 6 後 b2 10 20 30 60
01 Module Test 02 Sub Main() 03 Console.WriteLine("2 次元配列") 04 DIm a3(,) As Integer = {{1, 2, 3, 0}, {4, 5, 6, 0}} 05 Console.WriteLine(" 前 " & a3(0, 3) & " " & a3(1, 3)) 06 func3(2, 3, a3) 07 Console.WriteLine(" 後 " & a3(0, 3) & " " & a3(1, 3)) 08 End Sub 09 10 '''''''''''''''''''''''' 11 ' 2 次元配列の要素の和 ' 12 ' n : 行数 ' 13 ' m : 列数 ' 14 ' u : 配列 ' 15 '''''''''''''''''''''''' 16 Sub func3(n As Integer, m As Integer, u(,) As Integer) 17 For i1 As Integer = 0 To n-1 18 For i2 As Integer = 0 To m-1 19 u(i1, m) += u(i1, i2) 20 Next 21 Next 22 End Sub 23 End Module
2 次元配列 前 0 0 後 6 15
01 Module Test 02 Sub Main() 03 Console.WriteLine("オブジェクト") 04 DIm a4 As Example = new Example(1) 05 Console.WriteLine(" 前 " & a4.n & " " & a4.x(0)) 06 func4(a4) 07 Console.WriteLine(" 前 " & a4.n & " " & a4.x(0)) 08 End Sub 09 10 '''''''''''''''''''''''''' 11 ' オブジェクトの値変更 ' 12 ' x1 : オブジェクト ' 13 '''''''''''''''''''''''''' 14 Sub func4(x1 As Example) 15 x1.n = 0 16 x1.x(0) = 100 17 End Sub 18 19 Class Example 20 Public n As Integer 21 Public x() As integer = {10, 20, 30} 22 Public Sub New (ByVal n1 As Integer) 23 n = n1 24 End Sub 25 End Class 26 End Module
オブジェクト 前 1 10 前 0 100
01 Module Test 02 Sub Main() 03 Console.WriteLine("関数名( sort )") 04 Dim a7() As Integer = {3, 2, 5, 4, 1} 05 Dim a8() As Integer = {3, 2, 5, 4, 1} 06 Console.WriteLine(" 前 " & a7(0) & " " & a7(1) & " " & a7(2) & " " & a7(3) & " " & a7(4)) 07 Console.WriteLine(" 前 " & a8(0) & " " & a8(1) & " " & a8(2) & " " & a8(3) & " " & a8(4)) 08 Dim ascend = Function(v1, v2) As boolean ' 比較関数(ラムダ式) 09 Return v1 > v2 10 End Function 11 Dim descend = Function(v1, v2) As boolean ' 比較関数(ラムダ式) 12 Return v1 < v2 13 End Function 14 func6(5, a7, ascend) ' 昇順 15 func6(5, a8, descend) ' 降順 16 ' func6(5, a7, Function(v1, v2) v1 > v2) ' 昇順 17 ' func6(5, a8, Function(v1, v2) v1 < v2) ' 降順 18 Console.WriteLine(" 前 " & a7(0) & " " & a7(1) & " " & a7(2) & " " & a7(3) & " " & a7(4)) 19 Console.WriteLine(" 前 " & a8(0) & " " & a8(1) & " " & a8(2) & " " & a8(3) & " " & a8(4)) 20 End Sub 21 22 ''''''''''''''''''''''''''''''''''' 23 ' 2つのデータを交換する ' 24 ' a,b : 2つのデータ(参照) ' 25 ''''''''''''''''''''''''''''''''''' 26 Sub swap (ByRef a As Integer, ByRef b As Integer) 27 Dim temp As Integer = a 28 a = b 29 b = temp 30 End Sub 31 32 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 33 ' バブルソート ' 34 ' n : データの数 ' 35 ' data : データ ' 36 ' compare : 比較を行う関数 ' 37 ' バブルソートの手順 ' 38 ' 1)配列data(i)にn個のデータが入っているものとする. ' 39 ' i=0,1,・・・,n-1 ' 40 ' 2)i番目のデータとi+1番目のデータを比較し,もし, ' 41 ' data(i+1) < data(i) (昇順の場合) ' 42 ' であればそれらのデータを交換する. i=0,1,・・・,n-2 ' 43 ' →この結果,data(n-1)に最も大きなデータが入る ' 44 ' ことになる ' 45 ' 3)次に,n-1個のデータに対し上の処理を繰り返す. ' 46 ' 4)同様に,n-2,n-3,・・・個のデータに対して同じ処理 ' 47 ' を繰り返す ' 48 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 49 Sub func6(n As Integer, data() As Integer, 50 compare As Func(Of Integer, Integer, Boolean)) 51 Dim sw As Integer = 0 52 53 If n > 1 Then 54 For i1 As Integer = 0 To n-2 55 If compare(data(i1), data(i1+1)) Then 56 sw = 1 57 swap(data(i1), data(i1+1)) 58 End If 59 Next 60 End If 61 62 If sw > 0 Then 63 func6(n-1, data, compare) 64 End If 65 End Sub 66 End Module
関数名(sort) 前 3 2 5 4 1 前 3 2 5 4 1 後 1 2 3 4 5 後 5 4 3 2 1
01 Module Test 02 Sub Main() 03 Console.WriteLine("関数名(Newton 法)") 04 Dim eps1 As Double = 1.0e-7 05 Dim eps2 As Double = 1.0e-10 06 Dim x0 As Double = 0.0 07 Dim max As Integer = 20 08 Dim ind As Integer = 0 09 Dim x As Double = func7(x0, eps1, eps2, max, ind, 10 Function(v1) Math.Exp(v1) - 3.0 * v1, 11 Function(v2) Math.Exp(v2) - 3.0) 12 Console.WriteLine(" 回数=" & ind & " x=" & x & " 関数値=" & 13 (Math.Exp(x) - 3.0 * x) & " 微係数=" & (Math.Exp(x) - 3.0)) 14 End Sub 15 16 ''''''''''''''''''''''''''''''''''''''''''''''''''''' 17 ' Newton法による非線形方程式(f(x)=0)の解 ' 18 ' x0 : 初期値 ' 19 ' eps1 : 終了条件1(|x(k+1)-x(k)|<eps1) ' 20 ' eps2 : 終了条件2(|f(x(k))|<eps2) ' 21 ' max : 最大試行回数 ' 22 ' ind : 実際の試行回数(参照) ' 23 ' (負の時は解を得ることができなかった) ' 24 ' fn : f(x)を計算する関数名 ' 25 ' dfn : f(x)の微分を計算する関数名 ' 26 ' return : 解 ' 27 ''''''''''''''''''''''''''''''''''''''''''''''''''''' 28 Function func7(x0 As Double, eps1 As Double, eps2 As Double, max As Integer, 29 ByRef ind As Integer, 30 fn As Func(Of Double, Double), dfn As Func(Of Double, Double)) 31 Dim x As Double = x0 32 Dim x1 As Double = x0 33 Dim sw As Integer = 0 34 ind = 0 35 36 Do While sw = 0 And ind >= 0 37 sw = 1 38 ind += 1 39 Dim g As Double = fn(x1) 40 If Math.Abs(g) > eps2 Then 41 If ind <= max Then 42 Dim dg As Double = dfn(x1) 43 If Math.Abs(dg) > eps2 Then 44 x = x1 - g / dg 45 If Math.Abs(x-x1) > eps1 And Math.Abs(x-x1) > eps1*Math.Abs(x) Then 46 x1 = x 47 sw = 0 48 End If 49 Else 50 ind = -1 51 End If 52 Else 53 ind = -1 54 End If 55 End If 56 Loop 57 58 Return x 59 End Function 60 End Module
関数名(Newton 法) 回数=5 x=0.619061286735945 関数値=-2.22044604925031E-16 微係数=-1.14281613979216
情報学部 | 菅沼ホーム | 目次 | 索引 |