回答編集履歴

2

Update

2021/12/13 02:52

投稿

melian
melian

スコア20655

test CHANGED
@@ -1,4 +1,4 @@
1
- 思うのですが、荷重との比較には絶対値を使うのではないでしょうか?
1
+ 思うのですが、荷重との比較には絶対値を使うのではないでしょうか?
2
2
 
3
3
  ```c
4
4
 
@@ -58,9 +58,25 @@
58
58
 
59
59
 
60
60
 
61
- それでも思った様な結果にはなりませんが。。
61
+ 荷重の値の更新部分は以下のるのではないでしょうか
62
62
 
63
+ ```c
64
+
65
+ for(i=0;i<=n-1;i+=1){
66
+
67
+ theta+=0.001;
68
+
69
+ //wold[i]=(fz/n)*(1+(2*(i+1)-n-1)*theta/(n-1)); //荷重
70
+
71
+ wold[i]=(fz/n)*(1+(2*(i+1)-(n-1))*theta/(n-1));
72
+
73
+ }
74
+
75
+ ```
76
+
77
+
78
+
63
- ![plot](deb1b0108ae4d239ce77fc89b457daa7.png)
79
+ ![plot](73118ce2d23025bf48713f1b1b542a99.png)
64
80
 
65
81
 
66
82
 

1

Update

2021/12/13 02:52

投稿

melian
melian

スコア20655

test CHANGED
@@ -1,3 +1,73 @@
1
+ 思うのですが、荷重との比較には絶対値を使うのではないでしょうか?
2
+
3
+ ```c
4
+
5
+ for(i=0;i<=n-1;i++){
6
+
7
+ if(i==0){
8
+
9
+ //if(fs*wold[i] < gold[i]+k*(xold[i+1]-xold[i]))
10
+
11
+ if(fs*wold[i] < gold[i]+k*fabs(xold[i+1]-xold[i]))
12
+
13
+ {
14
+
15
+ Nsd[i]=1; //動的
16
+
17
+ f[i]=fk*wold[i];
18
+
19
+ }
20
+
21
+ }
22
+
23
+ else if(i==n-1){
24
+
25
+ // if(fs*wold[i] < gold[i]+k*(-xold[i]+xold[i-1]))
26
+
27
+ if(fs*wold[i] < gold[i]+k*fabs(-xold[i]+xold[i-1]))
28
+
29
+ {
30
+
31
+ Nsd[i]=1;
32
+
33
+ f[i]=fk*wold[i];
34
+
35
+ }
36
+
37
+ }
38
+
39
+ else{
40
+
41
+ // if(fs*wold[i] < gold[i]+k*(xold[i+1]-2*xold[i]+xold[i-1]))
42
+
43
+ if(fs*wold[i] < gold[i]+k*(fabs(xold[i+1]-xold[i])+fabs(-xold[i]+xold[i-1])))
44
+
45
+ {
46
+
47
+ Nsd[i]=1;
48
+
49
+ f[i]=fk*wold[i];
50
+
51
+ }
52
+
53
+ }
54
+
55
+ }
56
+
57
+ ```
58
+
59
+
60
+
61
+ まぁ、それでも思った様な結果にはなりませんが。。。
62
+
63
+ ![plot](deb1b0108ae4d239ce77fc89b457daa7.png)
64
+
65
+
66
+
67
+ ##### 2021/12/12 記載
68
+
69
+
70
+
1
71
  配列に対する範囲外アクセスが発生しています。以下は修正したコードとの差分です。
2
72
 
3
73
  ```diff