forでの繰り返し処理をすると処理落ちしてしまう

実現したいこと

多重解像度解析での関数近似をしたい

発生している問題・分からないこと

学校の課題で、多重解像度解析を用いて近似した関数の値を求めるプログラムをC言語で作成しているのですが、途中の処理(forでの繰り返し)のタイミングで処理落ちしてしまいます。

繰り返す回数が少ない場合は処理してくれるのですが、多くなる(確認したのは2^30回)とCPU使用率が100%になり、処理落ちしてしまいます。

問い合わせた所、「ノートパソコンのスペックでも十分に計算ができる」と言う回答だったのですが、軽量化する術が見つかりません…

使用しているのはReplitです。

エラーメッセージ

error

1エラーメッセージはありません。

該当のソースコード

Replit

1#include <stdio.h> 2#include <math.h> 3#include <stdlib.h> 4 5float calc_scale(int a); // スケーリング 6float calc_wave(int a, float j); // ウェーブレット 7float calc_f(int a); 8 9int main(void) { 10 int N = 50; 11 float f_n[100] = {0}; // fN(x) 12 for (int a = 0; a < 100; a++) { // f(x)の値 13 f_n[a] = calc_scale(a); 14 for (int j = 0; j < N; j++) { // jが0からN-1まで入力 15 f_n[a] += calc_wave(a, j); 16 } 17 } 18 19 for (int a = 0; a < 100; a++) { // f0(x)の値を入力 20 printf("近似結果:%f\n", f_n[a]); 21 } 22 23 return 0; 24} 25 26float calc_scale(int a) { // スケーリング。x=a/100 27 float x = (float)a / 100; 28 float c = (float)1 / 3; 29 if (0 <= x && x <= 1) { 30 return c; 31 } else { 32 return 0; 33 } 34} 35 36float calc_wave(int a, float j) { 37 float x = (float)a / 100; 38 float d_jk = 0; 39 int j_1 = 1 << (int)j; 40 41 for (int k = 0; k < j_1; k++) { 42 float D_jk = -(((float)2 * k) + 1) * pow(2, -((2 * j) + 2)); 43 if (((float)k / j_1) <= x && x < (((float)k + 0.5) / j_1)) { 44 d_jk += D_jk; 45 } else if (((float)k + 0.5) / j_1 <= x && x < ((k + 1) / (float)j_1)) { 46 d_jk -= D_jk; 47 } 48 } 49 50 return d_jk; 51}

試したこと・調べたこと

上記の詳細・結果

chat GPTにコードを投げてみたのですが、改善されませんでした。

補足

特になし

コメントを投稿

0 コメント