2015-03-16 2 views
0

Прямо сейчас я ищу код программы, которая может выполнять базовую линейную алгебру, где у меня есть 2 константы: A и B, где я могу просто ввести их коэффициенты и добавить на нее другие значения.Алгебраические манипуляции в C

Пример:

Say я хотел найти условия последовательности fibbonaci

A 
B 

Я хочу взять A + B и добавить его в файл.

A 
B 
A+B 

Теперь я хочу добавить 2-й и 3-й член

A 
B 
A + B 
A + 2B 

И так далее.

У меня есть программа, которая может сделать это для всех числовых значений просто отлично, однако, я бы хотел, чтобы она развивалась алгебраически, без использования формулы бинеток.

Мое единственное предположение - сохранить коэффициенты A и B в 2 отдельных файлах, чтобы их вычислить, а затем распечатать их, однако, если линейная алгебра доступна на C, было бы намного проще.

Edit: Ничего, я забыл, что это место для компьютерных ботаников, а не математические ботаников

+0

Извините, но ваш вопрос мне непонятен. Какая проблема? –

+0

@SouravGhosh Мне нужно уметь добавлять X + 2X, чтобы сделать 3X – user3344560

+3

Линейная алгебра обычно ассоциируется с векторными и матричными вычислениями. Примером является просто старая ** алгебра **. –

ответ

1

Будучи традиционным императивного языка, C не имеет встроенной поддержки для алгебраических выражений. Для вычисления коэффициентов вашей последовательности Фибоначчи, вы можете написать программу, как следующее:

#include <stdio.h> 

int main() { 
    int i; 
    int coeff_a_1 = 1; 
    int coeff_b_1 = 0; 
    int coeff_a_0 = 0; 
    int coeff_b_0 = 1; 

    printf("A\n"); 
    printf("B\n"); 

    for (i = 0; i < 15; i++) { 
     int coeff_a = coeff_a_0 + coeff_a_1; 
     int coeff_b = coeff_b_0 + coeff_b_1; 

     printf("%dA + %dB\n", coeff_a, coeff_b); 

     coeff_a_1 = coeff_a_0; 
     coeff_b_1 = coeff_b_0; 
     coeff_a_0 = coeff_a; 
     coeff_b_0 = coeff_b; 
    } 

    return 0; 
} 

Это будет печатать:

A 
B 
1A + 1B 
1A + 2B 
2A + 3B 
3A + 5B 
5A + 8B 
8A + 13B 
13A + 21B 
21A + 34B 
34A + 55B 
55A + 89B 
89A + 144B 
144A + 233B 
233A + 377B 
377A + 610B 
610A + 987B 

Для более сложных проблем, я предложил бы использовать computer algebra system что предлагает привязки C.