質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • C

    3710questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3466questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

連立方程式の計算プログラムについて。

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 880

carnage0216

score 122

初歩的な質問などがあるかもしれませんがどうかよろしくお願いいたします。
こちらがプログラムです。

#include <stdio.h>

int a = 3, b = 6, c = 2, d = 1, e = 2, f = 8, g = 7, h = 3, i = 3;
int x1=2,x2=4,x3=1;


int main(void) {

    a *x1*x1 + b * x1 + c  == 32;//(1)
    d *x2*x2 + e * x2 + f  == 40;//(2)
    g *x3*x3 + h * x3 + i  == 35;//(3)


    d*x2*x2 - (a*x1*x1*(d*x2*x2 /a*x1*x1)) + e*x2 - (b*x1*(a*x2*x2 /d* x1*x1)) - f - (c*(a*x2*x2 /d*x1*x1));

    printf("%d", d*x2*x2 - (a*x1*x1*(d*x2*x2 /a*x1*x1)) + e*x2 - (b*x1*(a*x2*x2 /d*x1*x1)) - f - (c*(a*x2*x2 /d*x1*x1)));

    return 0;
}

以上のプログラムは(2)-(1) × d*x2^2/a*x1^2の計算するものです。

質問1
a*x1^2+b*x1+c=32をプログラムにする際にa*x1*x1+b*x1+c==32と書きましたが、
warnigから==は作用しないとでました。a*x1*x1+b*x1+c==32のように「=」の役割を果たす演算子を教えていただけないでしょうか?
もちろん「==」が条件式として使うことはわかるのですが、調べても見つからず質問しました。

質問2
書いた計算式が正しいかどうか確認するために一時的にint x1=2,x2=4,x3=1;と置きました。
正しい計算結果は‐2.5556となるはずなのですが2912ととんでもない結果が出てきます。
プログラムの原型をとどめたまま、すなわち、行列ではなくプログラムに書いたように方程式のまま正しい値を導くにはどうしたらよいでしょうか?

今回書いたプログラムは読みにくいかもしれませんが、まずは思いついた式を(あえて行列を使わずに)そのままプログラムにしてみるところから始め最終的にはより見やすく読みやすいコードにしていきたいます。
どうか皆様の力を貸していただきたいです。

以下は警告なのです。

1>------ ビルド開始: プロジェクト: 自作連立方程式の計算, 構成: Release x64 ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(391,5): warning MSB8028: 中間ディレクトリ (x64\Release\) に別のプロジェクト (連立方程式の計算.vcxproj) と共有されているファイルが含まれています。これにより、クリーンしてリビルド動作が適切に行われない可能性があります。
1>Source.cpp
1>c:\users\daito\source\repos\立方程式の計算\立方程式の計算\source.cpp(12): warning C4553: '==': 演算子にプログラム上の作用がありません。'=' を意図しましたか?
1>c:\users\daito\source\repos\立方程式の計算\立方程式の計算\source.cpp(13): warning C4553: '==': 演算子にプログラム上の作用がありません。'=' を意図しましたか?
1>c:\users\daito\source\repos\立方程式の計算\立方程式の計算\source.cpp(14): warning C4553: '==': 演算子にプログラム上の作用がありません。'=' を意図しましたか?
1>c:\users\daito\source\repos\立方程式の計算\立方程式の計算\source.cpp(19): warning C4552: '-': 演算子にプログラム上の作用がありません。作用を伴う演算子を使用してください
1>コード生成しています。
1>1 of 5 functions (20.0%) were compiled, the rest were copied from previous compilation.
1>  0 functions were new in current compilation
1>  0 functions had inline decision re-evaluated but remain unchanged
1>コード生成が終了しました。
1>連立方程式の計算.vcxproj -> c:\users\daito\source\repos\立方程式の計算\x64\Release\作連立方程式の計算.exe
1>プロジェクト "連立方程式の計算.vcxproj" のビルドが終了しました。
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+3

筆算と同じ要領で解いてみた。

#include <iostream>
#include <cassert>
#include <string>

class formula {
private:
  double coeff_[3]; // 左辺の係数
  double rhs_;      // 右辺
public:
  formula( double a, double b, double c, double r) {
    coeff_[0] = a; coeff_[1] = b; coeff_[2] = c;
    rhs_ = r;
  }
  formula(const formula& f) {
    coeff_[0] = f.coeff_[0];
    coeff_[1] = f.coeff_[1];
    coeff_[2] = f.coeff_[2];
    rhs_ = f.rhs_;
  }
  double coeff(std::size_t n) const {
    assert( n < 3 );
    return coeff_[n];
  }
  double operator[](std::size_t n) const {
    return coeff(n);
  }
  double rhs() const { return rhs_; }
  formula operator-() const {
    return formula(-coeff(0), -coeff(1), -coeff(2), -rhs());
  }
};

inline formula operator*(double t, const formula& f) {
  return formula(t*f[0], t*f[1], t*f[2], t*f.rhs());
}

inline formula operator*(const formula& f, double t) {
  return t*f;
}

inline formula operator+(const formula& f0, const formula& f1) {
  return formula(f0[0]+f1[0], f0[1]+f1[1], f0[2]+f1[2], f0.rhs()+f1.rhs());
}

inline formula operator-(const formula& f0, const formula& f1) {
  return f0 + (-f1);
}

std::ostream& operator<<(std::ostream& stream, const formula& f) {
  return stream << f[0] << "x + "
                << f[1] << "y + "
                << f[2] << "z = " 
                << f.rhs();
}

int main() {
  using namespace std;

/* 連立方程式
     2x + 3y + 5z = 23
     3x + 5y + 2z = 19
     5x + 2y + 3z = 18
   を解く
 */

  formula f0( 2, 3, 5,  23);
  formula f1( 3, 5, 2,  19);
  formula f2( 5, 2, 3,  18);

  auto print = [&]() {
    cout << endl;
    cout << "f0 : " << f0 << endl;
    cout << "f1 : " << f1 << endl;
    cout << "f2 : " << f2 << endl;
    cout << "-----------------------\n";
  };
  double t;

  cout << "given :" << endl;
  print();

  cout << "f0を使ってf1, f2 のx項を0にする\n\n";

  t = f1[0] / f0[0];
  f1 = f1 - t*f0;
  cout << "f1 = f1 - t*f0 : t = " << t << endl;
  print();

  t = f2[0] / f0[0];
  f2 = f2 - t*f0;
  cout << "f2 = f2 - t*f0 : t = " << t << endl;
  print();

  cout << "f1を使って f2 のy項を0にする\n\n";

  t = f2[1] / f1[1];
  f2 = f2 - t*f1;
  cout << "f2 = f2 - t*f1 : t = " << t << endl;
  print();

  cout << "f2のz項を1にする\n\n";

  t = 1 / f2[2];
  f2 = f2 * t;
  cout << "f2 = f2 * t : t = " << t << endl;
  print();

  cout << "f2を使って f1, f0のz項を0にする\n\n";

  t = f1[2];
  f1 = f1 - t * f2;
  cout << "f1 = f1 - t*f2 : t = " << t << endl;
  print();

  t = f0[2];
  f0 = f0 - t * f2;
  cout << "f0 = f0 - t*f2 : t = " << t << endl;
  print();

cout << "f1のy項を1にする\n\n";

  t = 1 / f1[1];
  f1 = t * f1;
  cout << "f1 = t*f1 : t = " << t << endl;
  print();

cout << "f1を使ってf0のy項を0にする\n\n";

  t = f0[1];
  f0 = f0 - t * f1;
  cout << "f0 = t*f1 : t = " << t << endl;
  print();

cout << "f0のx項を1にする\n\n";

  t = 1 / f0[0];
  f0 = t * f0;
  cout << "f0 = t*f0 : t = " << t << endl;
  print();


  cout << "\nsolution: " << endl
       << "x = " << f0.rhs() << endl
       << "y = " << f1.rhs() << endl
       << "z = " << f2.rhs() << endl;
}

実行結果

given :

f0 : 2x + 3y + 5z = 23
f1 : 3x + 5y + 2z = 19
f2 : 5x + 2y + 3z = 18
-----------------------
f0を使ってf1, f2 のx項を0にする

f1 = f1 - t*f0 : t = 1.5

f0 : 2x + 3y + 5z = 23
f1 : 0x + 0.5y + -5.5z = -15.5
f2 : 5x + 2y + 3z = 18
-----------------------
f2 = f2 - t*f0 : t = 2.5

f0 : 2x + 3y + 5z = 23
f1 : 0x + 0.5y + -5.5z = -15.5
f2 : 0x + -5.5y + -9.5z = -39.5
-----------------------
f1を使って f2 のy項を0にする

f2 = f2 - t*f1 : t = -11

f0 : 2x + 3y + 5z = 23
f1 : 0x + 0.5y + -5.5z = -15.5
f2 : 0x + 0y + -70z = -210
-----------------------
f2のz項を1にする

f2 = f2 * t : t = -0.0142857

f0 : 2x + 3y + 5z = 23
f1 : 0x + 0.5y + -5.5z = -15.5
f2 : -0x + -0y + 1z = 3
-----------------------
f2を使って f1, f0のz項を0にする

f1 = f1 - t*f2 : t = -5.5

f0 : 2x + 3y + 5z = 23
f1 : 0x + 0.5y + 0z = 1
f2 : -0x + -0y + 1z = 3
-----------------------
f0 = f0 - t*f2 : t = 5

f0 : 2x + 3y + 0z = 8
f1 : 0x + 0.5y + 0z = 1
f2 : -0x + -0y + 1z = 3
-----------------------
f1のy項を1にする

f1 = t*f1 : t = 2

f0 : 2x + 3y + 0z = 8
f1 : 0x + 1y + 0z = 2
f2 : -0x + -0y + 1z = 3
-----------------------
f1を使ってf0のy項を0にする

f0 = t*f1 : t = 3

f0 : 2x + 0y + 0z = 2
f1 : 0x + 1y + 0z = 2
f2 : -0x + -0y + 1z = 3
-----------------------
f0のx項を1にする

f0 = t*f0 : t = 0.5

f0 : 1x + 0y + 0z = 1
f1 : 0x + 1y + 0z = 2
f2 : -0x + -0y + 1z = 3
-----------------------

solution:
x = 1
y = 2
z = 3

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/19 04:10

    どうもありがとうございます。

    キャンセル

  • 2018/07/28 18:20

    やっと一から連立方程式を解くプログラムを作ることが出来ました。(こちらのサイトに助けていただいたので一からと言っても一人で作ったわけではありません。)
    #include <stdio.h>
    #include <time.h>

    #define N 3

    int main(void) {

    clock_t start, end;
    start = clock();


    float a[N][N+1] = {
    {5,-1,-1,0},
    { 2,1,-3,-5 },
    { 1,1,1 ,6} }; // The matrix

    int t;
    int u;
    for (t = 0; t <= 3; t++) {
    for (u = 0; u <= 3; u++) {
    printf("中身は%fです\n", a[t][u]);
    //printf("中身は%fです\n", a[0][0]);
    //printf("中身は%fです\n", a[0][0]);
    }}
    int i;

    float d = a[1][0] / a[0][0];


    for (i = 0; i <= 3; i++) {//forを使う上で上限がなかったので3までが上限なのでi<=3と書いた。
    a[1][i] = a[1][i] - a[0][i] * d;
    {
    printf("a[1][%d]=%fとなる\n", i,a[1][i]);
    }

    //printf("a[1][%d]= a[1][%d]- a[0][%d]* a[0][%d]/ a[0][%d]である\n", i, i, i, i, i);

    }



    //}

    float r;
    r = a[2][0] / a[0][0];
    for (i = 0; i <= 3; i++) {
    a[2][i] = a[2][i] - a[0][i] * r;
    }
    int I;
    for (I = 0; I <= 3; I++) {
    printf("a[2][%d]=%fとなる\n", I,a[2][I]);
    }

    float z;
    z= a[2][1] / a[1][1];
    int y; //iは1から3まで入るのでkに+1した形で入ってもらいiを利用する。kはforより3までとする。
    for (y = 0; y <= 3; y++) {
    a[2][y] = a[2][y] - a[1][y] * z;
    printf("a[2][%d]=%fとなる\n", y, a[2][y]);
    }

    float g = a[2][3] / a[2][2];
    printf("Z=%f\n", g);

    float h;
    h = a[1][3] / a[1][2] + a[1][1] / a[1][2];
    printf("Y=%f\n", h);

    float j;
    j = h / a[0][0] + g / a[0][0];
    printf("X=%f\n", j);

    end = clock();
    printf("%f sec\n", (double)(end - start) / CLOCKS_PER_SEC);

    return 0;
    }

    キャンセル

+3

a*x1^2+b*x1+c=32をプログラムにする

「プログラムにする」ってどーゆー意味です?
あなた a*x1^2+b*x1+c=32 をどう表現したいか、
そしてそれを使って何がしたいか を説明せんと
どんなに頓珍漢な回答が寄せられても文句言えませんよ? 

等式を表現し、等式の定数倍 および ふたつの等式の和/差 が欲しいなら、
僕ならこうする:

#include <iostream>
#include <cassert>
#include <string>

class formula {
private:
  double coeff_[3]; // 左辺の係数
  double rhs_;      // 右辺
  std::string sym_; // 変数のシンボル
public:
  formula( double a, double b, double c, double r) {
    coeff_[0] = c; coeff_[1] = b; coeff_[2] = a;
    rhs_ = r;
    sym_ = "?";
  }
  formula(const formula& f) {
    coeff_[0] = f.coeff_[0];
    coeff_[1] = f.coeff_[1];
    coeff_[2] = f.coeff_[2];
    rhs_ = f.rhs_;
  }
  double coeff(std::size_t n) const {
    assert( n < 3 );
    return coeff_[n];
  }
  double operator[](std::size_t n) const {
    return coeff(n);
  }
  double rhs() const { return rhs_; }
  double operator()(double x) const {
    return (coeff_[2]*x + coeff_[1])*x + coeff_[0];
  }
  formula& operator()(const std::string& s) { sym_ = s; return *this; }
  std::string sym() const { return sym_; }
  formula operator-() const {
    return formula(-coeff(2), -coeff(1), -coeff(0), -rhs());
  }
};

formula operator*(double t, const formula& f) {
  return formula(t*f[2], t*f[1], t*f[0], t*f.rhs());
}

formula operator*(const formula& f, double t) {
  return t*f;
}

formula operator+(const formula& f0, const formula& f1) {
  return formula(f0[2]+f1[2], f0[1]+f1[1], f0[0]+f1[0],f0.rhs()+f1.rhs());
}

formula operator-(const formula& f0, const formula& f1) {
  return formula(f0[2]-f1[2], f0[1]-f1[1], f0[0]-f1[0],f0.rhs()-f1.rhs());
}

std::ostream& operator<<(std::ostream& stream, const formula& f) {
  return stream << f[2] << "*" << f.sym() << "*" << f.sym() << " + " 
                << f[1] << "*" << f.sym() << " + " 
                << f[0] << " = " << f.rhs();
}

int main() {
  using namespace std;

  int a = 3, b = 6, c = 2, 
      d = 1, e = 2, f = 8, 
      g = 7, h = 3, i = 3;
  int x1=2,x2=4,x3=1;
  formula f1(a, b, c, 32);
  formula f2(d, e, f, 40);
  formula f3(g, h, i, 35);

  cout << "f1 : " << f1("x1") << "\t f1(" << x1 << ") = " << f1(x1) << endl;
  cout << "f2 : " << f2("x2") << "\t f2(" << x2 << ") = " << f2(x2) << endl;
  cout << "f3 : " << f3("x3") << "\t f3(" << x3 << ") = " << f3(x3) << endl;
  cout << endl;

  double r = f2[2]/f1[2];
  formula f4 = f2 - f1*r;
  cout << "   : " << f4("x") << endl;
}

実行結果

f1 : 3*x1*x1 + 6*x1 + 2 = 32     f1(2) = 26
f2 : 1*x2*x2 + 2*x2 + 8 = 40     f2(4) = 32
f3 : 7*x3*x3 + 3*x3 + 3 = 35     f3(1) = 13

   : 0*x*x + 0*x + 7.33333 = 29.3333

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/16 10:35

    > 最終的にはより見やすく読みやすいコードにしていきたい
    最終的には行列になっちゃうに違いないぞ!

    キャンセル

  • 2018/07/17 04:32

    おっしゃる通り最終的には行列になると思います。
    しかし、今の段階では頭が足らず行列を理解できても、他人の書いた連立方程式を行列を利用して計算するプログラムが解読できず、ならば自分で作ってしまおうと考えました。(←せっかくあるプログラムを再利用しないなんて愚かかもしれません。)
    そして、作った後で、コンパクトにしていく過程で行列をどのように利用していたのか理解できるのではないかと考え遠回りに見えますが、学習しています。

    もしかしたら私はエピスさんからの言葉を勘違いしているかもしれませんが、以前にエピスさんから
    まずは手を動かして書くことの重要性とそのあとによりコンパクトにするにはどうしたらよいかを考えることの重要性を教えていただきました。
    その教えを基にまずは自分なりに考えて(私の書いたプログラムは)泥臭くて地味ですがゴリゴリ書くことを行っています。
    ただ、エピスさんが伝えたかったことを私自身がうまく受け取れていないかもしれません...。
    いつもいつもご迷惑ばかりおかけしてすいません。

    キャンセル

  • 2018/07/18 19:16

    「分解と再構築」が大事とも言った。
    ゴリゴリ書く前に分解せよ。さもないと余計にゴリゴリ書かねばならん。
    この問題では、ひとまず二次関数は関係なかろ?

    キャンセル

  • 2018/07/19 04:16

    >>「分解と再構築」が大事とも言った。
    忘れていました。そうですね。自分で考えて独りよがりに書くことばかり考えていたため大事な事を見失っていました。自分で書くのも大事ですが、それよりも優れたコードを分解、再構築を行い勉強したほうがいいですね。
    >>この問題では、ひとまず二次関数は関係なかろ?
    はい、関係ないです。

    キャンセル

+3

こんにちは。

C/C++には、連立方程式を式として解く機能はありません。
Mathematica 等の数式処理システムを使えば解があるものは解けるはずです。(解が有っても解けないものもあるかも?)

数式を数式のまま変形して解くのは大変難しく、かつ、解けるとは限らない筈なので、多くの場合は数値解析により解きます。
この機能もC/C++の標準機能には含まれないので、数値解析ライブラリを使う場合が多いですが、多項式の連立方程式なら、自力でプログラムするのも現実的です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/17 04:02 編集

    どうもいつもいつもありがとうございます。
    >>数式を数式のまま変形して解くのは大変難しく
    確かにそのまま式を書いているプログラムはあまり見たことはないです。
    ちなみに、数式のまま書いて変形して計算していくプログラムと数値解析により解くプログラムはどちらの方が良いなどはあるのでしょうか?
    例えば、計算における処理速度やコードの読みやすさなどです。メリットなどもあればぜひ教えてください。

    キャンセル

  • 2018/07/17 04:19 編集

    下らない理由ですが、数式をそのまま書くことにこだわりがあり、途中までしかできていませんが載せさせていただきます。
    計算が合わなかったり、混乱したりで大変でしたが自分なりに書いてみました。

    以下がプログラムです。
    #include <stdio.h>


    float a = 3, b = 6, c = 2;
    float x1 = 2, x2 = 4, x3 = 1;
    float y1 , y2 , y3;

    int main(void) {

    y1 = a * x1*x1 + b * x1 + c;//(1)
    y2 = a * x2*x2 + b * x2 + c;//(2)
    y3 = a * x3*x3 + b * x3 + c;//(3)

    //(2)-(1)*(double)(a*x2*x2) / (double)(a* x1 * x1)
    double J, K;
    J = (double)y2 - (double)(y1 * (double)(a*x2*x2) / (double)(a* x1 * x1));//y=の式を右辺と左辺に分けて計算する。
    K = (double)(a*x2*x2) - ((double)(a*x1*x1)*((double)(a*x2*x2) / (double)(a* x1 * x1))) + (double)(b * x2) - ((double)(b*x1)*((double)(a*x2*x2) / (double)(a* x1 * x1))) + (double)c - ((double)c*((double)(a*x2*x2) / (double)(a* x1 * x1)));

    printf("答えは%fです。", K);//-30とでれば正しい。

    return 0;
    }

    キャンセル

  • 2018/07/17 11:10

    > どちらの方が良いなどはあるのでしょうか?
    目的が異なるので比べられるものではないです。「①立式→②数値計算できるように変形→③数値計算」のステップが存在します。この②を行うのが数式処理システムです。

    > 数式をそのまま書くこと
    可読性のためには好ましいです。
    なお、方程式の姿ではC/C++は処理できませんので、計算式へプログラマーが自分で展開することがほとんどです。今回その作業をcarnage0216さんが行われたということになります。正しい姿と思います。

    キャンセル

  • 2018/07/17 15:21 編集

    どうもありがとうございます。勘違いしていました。
    >>「①立式→②数値計算できるように変形→③数値計算」のステップが存在します。この②を行うのが数式処理システムです。
    ということは数式処理の部分は数値計算にかんする本にも書いてあるということですね。
    私は数値計算にかんする本は一冊も持っていません。なので数値計算の入門書を買いたいと思います。
    なにかおすすめの本はありますか?

    キャンセル

  • 2018/07/17 16:40

    > ということは数式処理の部分は数値計算にかんする本にも書いてあるということですね。
    そうとは限らないと思いますよ。③に注力している本もあれば、全体を説明している本もあるでしょう。

    > なにかおすすめの本はありますか?
    手元の本棚を見ると「計算機のための数値計算法概論」という本がありました。超古いです。パラパラっとめくると「パンチカード」の使い方の説明から入るくらい古い本です。内容は今も役に立つ部分があるとは思いますが、止めておいたほうが良さそうです。この本も単位が取れる最低限しか見ていませんが、他の本も特に見たことはないです。ごめんなさい。

    キャンセル

  • 2018/07/17 20:51

    いえいえわざわざどうもありがとうございます。
    パンチカードからの説明とはなかなか面白いですね。
    わかりました。書店にて漁ってみます。

    キャンセル

+2

まずはC言語の入門サイトなどを探して一通り読んでください
基本的なところがわかってらっしゃらないように思われます

質問1

a*x1^2+b*x1+c=32をプログラムにする際に 

電卓を使ってその式の解を求める、というときに、あなたはどうするんでしょうか。
電卓にその式が入らない、と文句言うんでしょうか。

質問2
C言語というものを学びましょう。

#またおまえか案件ですかw

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/17 04:34

    頭が悪い故に案件ばかりで本当にすいません。
    学びが浅すぎました。自分の理解職の低さに億劫になります。

    キャンセル

+2

私には、3つの式が3つの単なる2次方程式に見えます。

1変数の2次方程式ならば解の公式が存在しますのでそちらをお使いください

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C

    3710questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    3466questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。